|
|
@@ -0,0 +1,25204 @@
|
|
|
+diff -Nur linux-2.6.30/.gitignore rt4ls/.gitignore
|
|
|
+--- linux-2.6.30/.gitignore 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/.gitignore 2009-06-12 16:27:01.954006636 +0200
|
|
|
+@@ -32,6 +32,7 @@
|
|
|
+ tags
|
|
|
+ TAGS
|
|
|
+ vmlinux
|
|
|
++vmlinux.32
|
|
|
+ System.map
|
|
|
+ Module.markers
|
|
|
+ Module.symvers
|
|
|
+diff -Nur linux-2.6.30/Documentation/kernel-parameters.txt rt4ls/Documentation/kernel-parameters.txt
|
|
|
+--- linux-2.6.30/Documentation/kernel-parameters.txt 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/Documentation/kernel-parameters.txt 2009-06-12 16:27:02.534042890 +0200
|
|
|
+@@ -1220,6 +1220,10 @@
|
|
|
+ (machvec) in a generic kernel.
|
|
|
+ Example: machvec=hpzx1_swiotlb
|
|
|
+
|
|
|
++ machtype= [Loongson] Share the same kernel image file between different
|
|
|
++ yeeloong laptop.
|
|
|
++ Example: machtype=lemote-yeeloong-2f-7inch
|
|
|
++
|
|
|
+ max_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory greater
|
|
|
+ than or equal to this physical address is ignored.
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/Kconfig rt4ls/arch/mips/Kconfig
|
|
|
+--- linux-2.6.30/arch/mips/Kconfig 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/Kconfig 2009-06-12 16:27:08.186400556 +0200
|
|
|
+@@ -6,7 +6,7 @@
|
|
|
+ select HAVE_ARCH_KGDB
|
|
|
+ # Horrible source of confusion. Die, die, die ...
|
|
|
+ select EMBEDDED
|
|
|
+- select RTC_LIB
|
|
|
++ select RTC_LIB if !MACH_LOONGSON
|
|
|
+
|
|
|
+ mainmenu "Linux/MIPS Kernel Configuration"
|
|
|
+
|
|
|
+@@ -154,30 +154,15 @@
|
|
|
+ select SYS_SUPPORTS_64BIT_KERNEL if BROKEN
|
|
|
+ select SYS_SUPPORTS_LITTLE_ENDIAN
|
|
|
+
|
|
|
+-config LEMOTE_FULONG
|
|
|
+- bool "Lemote Fulong mini-PC"
|
|
|
+- select ARCH_SPARSEMEM_ENABLE
|
|
|
+- select CEVT_R4K
|
|
|
+- select CSRC_R4K
|
|
|
+- select SYS_HAS_CPU_LOONGSON2
|
|
|
+- select DMA_NONCOHERENT
|
|
|
+- select BOOT_ELF32
|
|
|
+- select BOARD_SCACHE
|
|
|
+- select HAVE_STD_PC_SERIAL_PORT
|
|
|
+- select HW_HAS_PCI
|
|
|
+- select I8259
|
|
|
+- select ISA
|
|
|
+- select IRQ_CPU
|
|
|
+- select SYS_SUPPORTS_32BIT_KERNEL
|
|
|
+- select SYS_SUPPORTS_64BIT_KERNEL
|
|
|
+- select SYS_SUPPORTS_LITTLE_ENDIAN
|
|
|
+- select SYS_SUPPORTS_HIGHMEM
|
|
|
+- select SYS_HAS_EARLY_PRINTK
|
|
|
+- select GENERIC_ISA_DMA_SUPPORT_BROKEN
|
|
|
+- select CPU_HAS_WB
|
|
|
++config MACH_LOONGSON
|
|
|
++ bool "Loongson family of machines"
|
|
|
+ help
|
|
|
+- Lemote Fulong mini-PC board based on the Chinese Loongson-2E CPU and
|
|
|
+- an FPGA northbridge
|
|
|
++ This enables the support of Loongson family of machines.
|
|
|
++
|
|
|
++ Loongson is a family of general-purpose MIPS-compatible CPUs.
|
|
|
++ developed at Institute of Computing Technology (ICT),
|
|
|
++ Chinese Academy of Sciences (CAS) in the People's Republic
|
|
|
++ of China. The chief architect is Professor Weiwu Hu.
|
|
|
+
|
|
|
+ config MIPS_MALTA
|
|
|
+ bool "MIPS Malta board"
|
|
|
+@@ -643,6 +628,7 @@
|
|
|
+ source "arch/mips/txx9/Kconfig"
|
|
|
+ source "arch/mips/vr41xx/Kconfig"
|
|
|
+ source "arch/mips/cavium-octeon/Kconfig"
|
|
|
++source "arch/mips/loongson/Kconfig"
|
|
|
+
|
|
|
+ endmenu
|
|
|
+
|
|
|
+@@ -1005,16 +991,29 @@
|
|
|
+ prompt "CPU type"
|
|
|
+ default CPU_R4X00
|
|
|
+
|
|
|
+-config CPU_LOONGSON2
|
|
|
+- bool "Loongson 2"
|
|
|
+- depends on SYS_HAS_CPU_LOONGSON2
|
|
|
+- select CPU_SUPPORTS_32BIT_KERNEL
|
|
|
+- select CPU_SUPPORTS_64BIT_KERNEL
|
|
|
+- select CPU_SUPPORTS_HIGHMEM
|
|
|
++config CPU_LOONGSON2E
|
|
|
++ bool "Loongson 2E"
|
|
|
++ depends on SYS_HAS_CPU_LOONGSON2E
|
|
|
++ select CPU_LOONGSON2
|
|
|
+ help
|
|
|
+ The Loongson 2E processor implements the MIPS III instruction set
|
|
|
+ with many extensions.
|
|
|
+
|
|
|
++ It has an internal FPGA northbridge, which is compatiable to
|
|
|
++ bonito64.
|
|
|
++
|
|
|
++config CPU_LOONGSON2F
|
|
|
++ bool "Loongson 2F"
|
|
|
++ depends on SYS_HAS_CPU_LOONGSON2F
|
|
|
++ select CPU_LOONGSON2
|
|
|
++ help
|
|
|
++ The Loongson 2F processor implements the MIPS III instruction set
|
|
|
++ with many extensions.
|
|
|
++
|
|
|
++ Loongson2F have built-in DDR2 and PCIX controller. The PCIX controller
|
|
|
++ have a similar programming interface with FPGA northbridge used in
|
|
|
++ Loongson2E.
|
|
|
++
|
|
|
+ config CPU_MIPS32_R1
|
|
|
+ bool "MIPS32 Release 1"
|
|
|
+ depends on SYS_HAS_CPU_MIPS32_R1
|
|
|
+@@ -1253,7 +1252,16 @@
|
|
|
+
|
|
|
+ endchoice
|
|
|
+
|
|
|
+-config SYS_HAS_CPU_LOONGSON2
|
|
|
++config CPU_LOONGSON2
|
|
|
++ bool
|
|
|
++ select CPU_SUPPORTS_32BIT_KERNEL
|
|
|
++ select CPU_SUPPORTS_64BIT_KERNEL
|
|
|
++ select CPU_SUPPORTS_HIGHMEM
|
|
|
++
|
|
|
++config SYS_HAS_CPU_LOONGSON2E
|
|
|
++ bool
|
|
|
++
|
|
|
++config SYS_HAS_CPU_LOONGSON2F
|
|
|
+ bool
|
|
|
+
|
|
|
+ config SYS_HAS_CPU_MIPS32_R1
|
|
|
+@@ -2121,6 +2129,9 @@
|
|
|
+
|
|
|
+ menu "Power management options"
|
|
|
+
|
|
|
++config ARCH_HIBERNATION_POSSIBLE
|
|
|
++ def_bool y
|
|
|
++
|
|
|
+ config ARCH_SUSPEND_POSSIBLE
|
|
|
+ def_bool y
|
|
|
+ depends on !SMP
|
|
|
+@@ -2129,6 +2140,23 @@
|
|
|
+
|
|
|
+ endmenu
|
|
|
+
|
|
|
++menu "CPU Frequency scaling"
|
|
|
++
|
|
|
++source "drivers/cpufreq/Kconfig"
|
|
|
++
|
|
|
++config LOONGSON2F_CPU_FREQ
|
|
|
++ bool "Loongson-2F CPU Frequency driver"
|
|
|
++ depends on CPU_LOONGSON2F && CPU_FREQ && (CS5536_MFGPT || I8253)
|
|
|
++ select CPU_FREQ_TABLE
|
|
|
++ help
|
|
|
++ This adds the cpufreq driver for Loongson-2F.
|
|
|
++
|
|
|
++ For details, take a look at <file:Documentation/cpu-freq>.
|
|
|
++
|
|
|
++ If unsure, say N.
|
|
|
++
|
|
|
++endmenu
|
|
|
++
|
|
|
+ source "net/Kconfig"
|
|
|
+
|
|
|
+ source "drivers/Kconfig"
|
|
|
+diff -Nur linux-2.6.30/arch/mips/Makefile rt4ls/arch/mips/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/Makefile 2009-06-12 16:27:08.186400556 +0200
|
|
|
+@@ -120,7 +120,14 @@
|
|
|
+ cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap
|
|
|
+ cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap
|
|
|
+ cflags-$(CONFIG_CPU_TX49XX) += -march=r4600 -Wa,--trap
|
|
|
+-cflags-$(CONFIG_CPU_LOONGSON2) += -march=r4600 -Wa,--trap
|
|
|
++
|
|
|
++# only gcc >= 4.4 have the loongson-specific support
|
|
|
++cflags-$(CONFIG_CPU_LOONGSON2) += -Wa,--trap
|
|
|
++cflags-$(CONFIG_CPU_LOONGSON2E) += \
|
|
|
++ $(call cc-option,-march=loongson2e,-march=r4600) $(call cc-option,-mtune=loongson2e)
|
|
|
++cflags-$(CONFIG_CPU_LOONGSON2F) += \
|
|
|
++ $(call cc-option,-march=loongson2f,-march=r4600) $(call cc-optoin,-mtune=loongson2f)
|
|
|
++
|
|
|
+ cflags-$(CONFIG_CPU_MIPS32_R1) += $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
|
|
|
+ -Wa,-mips32 -Wa,--trap
|
|
|
+ cflags-$(CONFIG_CPU_MIPS32_R2) += $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
|
|
|
+@@ -307,9 +314,12 @@
|
|
|
+ #
|
|
|
+ # lemote fulong mini-PC board
|
|
|
+ #
|
|
|
+-core-$(CONFIG_LEMOTE_FULONG) +=arch/mips/lemote/lm2e/
|
|
|
+-load-$(CONFIG_LEMOTE_FULONG) +=0xffffffff80100000
|
|
|
+-cflags-$(CONFIG_LEMOTE_FULONG) += -I$(srctree)/arch/mips/include/asm/mach-lemote
|
|
|
++core-$(CONFIG_MACH_LOONGSON) +=arch/mips/loongson/
|
|
|
++cflags-$(CONFIG_MACH_LOONGSON) += -I$(srctree)/arch/mips/include/asm/mach-loongson \
|
|
|
++ -mno-branch-likely
|
|
|
++load-$(CONFIG_LEMOTE_FULOONG2E) +=0xffffffff80100000
|
|
|
++load-$(CONFIG_LEMOTE_FULOONG2F) +=0xffffffff80200000
|
|
|
++load-$(CONFIG_LEMOTE_YEELOONG2F) +=0xffffffff80200000
|
|
|
+
|
|
|
+ #
|
|
|
+ # MIPS Malta board
|
|
|
+@@ -675,6 +685,9 @@
|
|
|
+
|
|
|
+ drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/
|
|
|
+
|
|
|
++# suspend and hibernation support
|
|
|
++drivers-$(CONFIG_PM) += arch/mips/power/
|
|
|
++
|
|
|
+ ifdef CONFIG_LASAT
|
|
|
+ rom.bin rom.sw: vmlinux
|
|
|
+ $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@
|
|
|
+diff -Nur linux-2.6.30/arch/mips/configs/fulong_defconfig rt4ls/arch/mips/configs/fulong_defconfig
|
|
|
+--- linux-2.6.30/arch/mips/configs/fulong_defconfig 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/configs/fulong_defconfig 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,1912 +0,0 @@
|
|
|
+-#
|
|
|
+-# Automatically generated make config: don't edit
|
|
|
+-# Linux kernel version: 2.6.28-rc6
|
|
|
+-# Fri Nov 28 17:53:48 2008
|
|
|
+-#
|
|
|
+-CONFIG_MIPS=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Machine selection
|
|
|
+-#
|
|
|
+-# CONFIG_MACH_ALCHEMY is not set
|
|
|
+-# CONFIG_BASLER_EXCITE is not set
|
|
|
+-# CONFIG_BCM47XX is not set
|
|
|
+-# CONFIG_MIPS_COBALT is not set
|
|
|
+-# CONFIG_MACH_DECSTATION is not set
|
|
|
+-# CONFIG_MACH_JAZZ is not set
|
|
|
+-# CONFIG_LASAT is not set
|
|
|
+-CONFIG_LEMOTE_FULONG=y
|
|
|
+-# CONFIG_MIPS_MALTA is not set
|
|
|
+-# CONFIG_MIPS_SIM is not set
|
|
|
+-# CONFIG_MACH_EMMA is not set
|
|
|
+-# CONFIG_MACH_VR41XX is not set
|
|
|
+-# CONFIG_NXP_STB220 is not set
|
|
|
+-# CONFIG_NXP_STB225 is not set
|
|
|
+-# CONFIG_PNX8550_JBS is not set
|
|
|
+-# CONFIG_PNX8550_STB810 is not set
|
|
|
+-# CONFIG_PMC_MSP is not set
|
|
|
+-# CONFIG_PMC_YOSEMITE is not set
|
|
|
+-# CONFIG_SGI_IP22 is not set
|
|
|
+-# CONFIG_SGI_IP27 is not set
|
|
|
+-# CONFIG_SGI_IP28 is not set
|
|
|
+-# CONFIG_SGI_IP32 is not set
|
|
|
+-# CONFIG_SIBYTE_CRHINE is not set
|
|
|
+-# CONFIG_SIBYTE_CARMEL is not set
|
|
|
+-# CONFIG_SIBYTE_CRHONE is not set
|
|
|
+-# CONFIG_SIBYTE_RHONE is not set
|
|
|
+-# CONFIG_SIBYTE_SWARM is not set
|
|
|
+-# CONFIG_SIBYTE_LITTLESUR is not set
|
|
|
+-# CONFIG_SIBYTE_SENTOSA is not set
|
|
|
+-# CONFIG_SIBYTE_BIGSUR is not set
|
|
|
+-# CONFIG_SNI_RM is not set
|
|
|
+-# CONFIG_MACH_TX39XX is not set
|
|
|
+-# CONFIG_MACH_TX49XX is not set
|
|
|
+-# CONFIG_MIKROTIK_RB532 is not set
|
|
|
+-# CONFIG_WR_PPMC is not set
|
|
|
+-CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|
|
+-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
|
|
+-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
|
|
+-CONFIG_ARCH_SUPPORTS_OPROFILE=y
|
|
|
+-CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|
|
+-CONFIG_GENERIC_HWEIGHT=y
|
|
|
+-CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|
|
+-CONFIG_GENERIC_CLOCKEVENTS=y
|
|
|
+-CONFIG_GENERIC_TIME=y
|
|
|
+-CONFIG_GENERIC_CMOS_UPDATE=y
|
|
|
+-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
|
|
+-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
|
|
+-CONFIG_CEVT_R4K=y
|
|
|
+-CONFIG_CSRC_R4K=y
|
|
|
+-CONFIG_DMA_NONCOHERENT=y
|
|
|
+-CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
|
|
+-CONFIG_EARLY_PRINTK=y
|
|
|
+-CONFIG_SYS_HAS_EARLY_PRINTK=y
|
|
|
+-# CONFIG_HOTPLUG_CPU is not set
|
|
|
+-CONFIG_I8259=y
|
|
|
+-# CONFIG_NO_IOPORT is not set
|
|
|
+-CONFIG_GENERIC_ISA_DMA=y
|
|
|
+-CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
|
|
|
+-# CONFIG_CPU_BIG_ENDIAN is not set
|
|
|
+-CONFIG_CPU_LITTLE_ENDIAN=y
|
|
|
+-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
|
|
+-CONFIG_IRQ_CPU=y
|
|
|
+-CONFIG_BOOT_ELF32=y
|
|
|
+-CONFIG_MIPS_L1_CACHE_SHIFT=5
|
|
|
+-CONFIG_HAVE_STD_PC_SERIAL_PORT=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# CPU selection
|
|
|
+-#
|
|
|
+-CONFIG_CPU_LOONGSON2=y
|
|
|
+-# CONFIG_CPU_MIPS32_R1 is not set
|
|
|
+-# CONFIG_CPU_MIPS32_R2 is not set
|
|
|
+-# CONFIG_CPU_MIPS64_R1 is not set
|
|
|
+-# CONFIG_CPU_MIPS64_R2 is not set
|
|
|
+-# CONFIG_CPU_R3000 is not set
|
|
|
+-# CONFIG_CPU_TX39XX is not set
|
|
|
+-# CONFIG_CPU_VR41XX is not set
|
|
|
+-# CONFIG_CPU_R4300 is not set
|
|
|
+-# CONFIG_CPU_R4X00 is not set
|
|
|
+-# CONFIG_CPU_TX49XX is not set
|
|
|
+-# CONFIG_CPU_R5000 is not set
|
|
|
+-# CONFIG_CPU_R5432 is not set
|
|
|
+-# CONFIG_CPU_R5500 is not set
|
|
|
+-# CONFIG_CPU_R6000 is not set
|
|
|
+-# CONFIG_CPU_NEVADA is not set
|
|
|
+-# CONFIG_CPU_R8000 is not set
|
|
|
+-# CONFIG_CPU_R10000 is not set
|
|
|
+-# CONFIG_CPU_RM7000 is not set
|
|
|
+-# CONFIG_CPU_RM9000 is not set
|
|
|
+-# CONFIG_CPU_SB1 is not set
|
|
|
+-CONFIG_SYS_HAS_CPU_LOONGSON2=y
|
|
|
+-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
|
|
+-CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
|
|
+-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
|
|
+-CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Kernel type
|
|
|
+-#
|
|
|
+-# CONFIG_32BIT is not set
|
|
|
+-CONFIG_64BIT=y
|
|
|
+-# CONFIG_PAGE_SIZE_4KB is not set
|
|
|
+-# CONFIG_PAGE_SIZE_8KB is not set
|
|
|
+-CONFIG_PAGE_SIZE_16KB=y
|
|
|
+-# CONFIG_PAGE_SIZE_64KB is not set
|
|
|
+-CONFIG_BOARD_SCACHE=y
|
|
|
+-CONFIG_MIPS_MT_DISABLED=y
|
|
|
+-# CONFIG_MIPS_MT_SMP is not set
|
|
|
+-# CONFIG_MIPS_MT_SMTC is not set
|
|
|
+-CONFIG_CPU_HAS_WB=y
|
|
|
+-CONFIG_CPU_HAS_SYNC=y
|
|
|
+-CONFIG_GENERIC_HARDIRQS=y
|
|
|
+-CONFIG_GENERIC_IRQ_PROBE=y
|
|
|
+-CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
|
|
+-CONFIG_SYS_SUPPORTS_HIGHMEM=y
|
|
|
+-CONFIG_ARCH_FLATMEM_ENABLE=y
|
|
|
+-CONFIG_ARCH_POPULATES_NODE_MAP=y
|
|
|
+-CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
|
+-CONFIG_SELECT_MEMORY_MODEL=y
|
|
|
+-CONFIG_FLATMEM_MANUAL=y
|
|
|
+-# CONFIG_DISCONTIGMEM_MANUAL is not set
|
|
|
+-# CONFIG_SPARSEMEM_MANUAL is not set
|
|
|
+-CONFIG_FLATMEM=y
|
|
|
+-CONFIG_FLAT_NODE_MEM_MAP=y
|
|
|
+-CONFIG_SPARSEMEM_STATIC=y
|
|
|
+-CONFIG_PAGEFLAGS_EXTENDED=y
|
|
|
+-CONFIG_SPLIT_PTLOCK_CPUS=4
|
|
|
+-CONFIG_RESOURCES_64BIT=y
|
|
|
+-CONFIG_PHYS_ADDR_T_64BIT=y
|
|
|
+-CONFIG_ZONE_DMA_FLAG=0
|
|
|
+-CONFIG_VIRT_TO_BUS=y
|
|
|
+-CONFIG_UNEVICTABLE_LRU=y
|
|
|
+-CONFIG_TICK_ONESHOT=y
|
|
|
+-CONFIG_NO_HZ=y
|
|
|
+-CONFIG_HIGH_RES_TIMERS=y
|
|
|
+-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
|
|
+-# CONFIG_HZ_48 is not set
|
|
|
+-# CONFIG_HZ_100 is not set
|
|
|
+-# CONFIG_HZ_128 is not set
|
|
|
+-CONFIG_HZ_250=y
|
|
|
+-# CONFIG_HZ_256 is not set
|
|
|
+-# CONFIG_HZ_1000 is not set
|
|
|
+-# CONFIG_HZ_1024 is not set
|
|
|
+-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
|
|
+-CONFIG_HZ=250
|
|
|
+-# CONFIG_PREEMPT_NONE is not set
|
|
|
+-CONFIG_PREEMPT_VOLUNTARY=y
|
|
|
+-# CONFIG_PREEMPT is not set
|
|
|
+-# CONFIG_KEXEC is not set
|
|
|
+-CONFIG_SECCOMP=y
|
|
|
+-CONFIG_LOCKDEP_SUPPORT=y
|
|
|
+-CONFIG_STACKTRACE_SUPPORT=y
|
|
|
+-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
|
|
+-
|
|
|
+-#
|
|
|
+-# General setup
|
|
|
+-#
|
|
|
+-CONFIG_EXPERIMENTAL=y
|
|
|
+-CONFIG_BROKEN_ON_SMP=y
|
|
|
+-CONFIG_INIT_ENV_ARG_LIMIT=32
|
|
|
+-CONFIG_LOCALVERSION="lm32"
|
|
|
+-# CONFIG_LOCALVERSION_AUTO is not set
|
|
|
+-CONFIG_SWAP=y
|
|
|
+-CONFIG_SYSVIPC=y
|
|
|
+-CONFIG_SYSVIPC_SYSCTL=y
|
|
|
+-CONFIG_POSIX_MQUEUE=y
|
|
|
+-CONFIG_BSD_PROCESS_ACCT=y
|
|
|
+-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
|
|
+-# CONFIG_TASKSTATS is not set
|
|
|
+-# CONFIG_AUDIT is not set
|
|
|
+-CONFIG_IKCONFIG=y
|
|
|
+-CONFIG_IKCONFIG_PROC=y
|
|
|
+-CONFIG_LOG_BUF_SHIFT=14
|
|
|
+-# CONFIG_CGROUPS is not set
|
|
|
+-# CONFIG_GROUP_SCHED is not set
|
|
|
+-CONFIG_SYSFS_DEPRECATED=y
|
|
|
+-CONFIG_SYSFS_DEPRECATED_V2=y
|
|
|
+-# CONFIG_RELAY is not set
|
|
|
+-CONFIG_NAMESPACES=y
|
|
|
+-# CONFIG_UTS_NS is not set
|
|
|
+-# CONFIG_IPC_NS is not set
|
|
|
+-CONFIG_USER_NS=y
|
|
|
+-CONFIG_PID_NS=y
|
|
|
+-# CONFIG_BLK_DEV_INITRD is not set
|
|
|
+-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
|
+-CONFIG_SYSCTL=y
|
|
|
+-CONFIG_EMBEDDED=y
|
|
|
+-CONFIG_SYSCTL_SYSCALL=y
|
|
|
+-CONFIG_KALLSYMS=y
|
|
|
+-# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
|
|
+-CONFIG_HOTPLUG=y
|
|
|
+-CONFIG_PRINTK=y
|
|
|
+-CONFIG_BUG=y
|
|
|
+-CONFIG_ELF_CORE=y
|
|
|
+-# CONFIG_PCSPKR_PLATFORM is not set
|
|
|
+-# CONFIG_COMPAT_BRK is not set
|
|
|
+-CONFIG_BASE_FULL=y
|
|
|
+-CONFIG_FUTEX=y
|
|
|
+-CONFIG_ANON_INODES=y
|
|
|
+-CONFIG_EPOLL=y
|
|
|
+-CONFIG_SIGNALFD=y
|
|
|
+-CONFIG_TIMERFD=y
|
|
|
+-CONFIG_EVENTFD=y
|
|
|
+-CONFIG_SHMEM=y
|
|
|
+-CONFIG_AIO=y
|
|
|
+-CONFIG_VM_EVENT_COUNTERS=y
|
|
|
+-CONFIG_PCI_QUIRKS=y
|
|
|
+-CONFIG_SLAB=y
|
|
|
+-# CONFIG_SLUB is not set
|
|
|
+-# CONFIG_SLOB is not set
|
|
|
+-CONFIG_PROFILING=y
|
|
|
+-# CONFIG_MARKERS is not set
|
|
|
+-CONFIG_OPROFILE=m
|
|
|
+-CONFIG_HAVE_OPROFILE=y
|
|
|
+-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
|
|
+-CONFIG_SLABINFO=y
|
|
|
+-CONFIG_RT_MUTEXES=y
|
|
|
+-# CONFIG_TINY_SHMEM is not set
|
|
|
+-CONFIG_BASE_SMALL=0
|
|
|
+-CONFIG_MODULES=y
|
|
|
+-# CONFIG_MODULE_FORCE_LOAD is not set
|
|
|
+-CONFIG_MODULE_UNLOAD=y
|
|
|
+-CONFIG_MODULE_FORCE_UNLOAD=y
|
|
|
+-# CONFIG_MODVERSIONS is not set
|
|
|
+-# CONFIG_MODULE_SRCVERSION_ALL is not set
|
|
|
+-CONFIG_KMOD=y
|
|
|
+-CONFIG_BLOCK=y
|
|
|
+-# CONFIG_BLK_DEV_IO_TRACE is not set
|
|
|
+-CONFIG_BLK_DEV_BSG=y
|
|
|
+-# CONFIG_BLK_DEV_INTEGRITY is not set
|
|
|
+-CONFIG_BLOCK_COMPAT=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# IO Schedulers
|
|
|
+-#
|
|
|
+-CONFIG_IOSCHED_NOOP=y
|
|
|
+-CONFIG_IOSCHED_AS=y
|
|
|
+-CONFIG_IOSCHED_DEADLINE=y
|
|
|
+-CONFIG_IOSCHED_CFQ=y
|
|
|
+-# CONFIG_DEFAULT_AS is not set
|
|
|
+-# CONFIG_DEFAULT_DEADLINE is not set
|
|
|
+-CONFIG_DEFAULT_CFQ=y
|
|
|
+-# CONFIG_DEFAULT_NOOP is not set
|
|
|
+-CONFIG_DEFAULT_IOSCHED="cfq"
|
|
|
+-CONFIG_CLASSIC_RCU=y
|
|
|
+-CONFIG_FREEZER=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
|
|
+-#
|
|
|
+-CONFIG_HW_HAS_PCI=y
|
|
|
+-CONFIG_PCI=y
|
|
|
+-CONFIG_PCI_DOMAINS=y
|
|
|
+-# CONFIG_ARCH_SUPPORTS_MSI is not set
|
|
|
+-CONFIG_PCI_LEGACY=y
|
|
|
+-CONFIG_ISA=y
|
|
|
+-CONFIG_MMU=y
|
|
|
+-# CONFIG_PCCARD is not set
|
|
|
+-# CONFIG_HOTPLUG_PCI is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Executable file formats
|
|
|
+-#
|
|
|
+-CONFIG_BINFMT_ELF=y
|
|
|
+-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
|
|
+-# CONFIG_HAVE_AOUT is not set
|
|
|
+-CONFIG_BINFMT_MISC=y
|
|
|
+-CONFIG_MIPS32_COMPAT=y
|
|
|
+-CONFIG_COMPAT=y
|
|
|
+-CONFIG_SYSVIPC_COMPAT=y
|
|
|
+-CONFIG_MIPS32_O32=y
|
|
|
+-CONFIG_MIPS32_N32=y
|
|
|
+-CONFIG_BINFMT_ELF32=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Power management options
|
|
|
+-#
|
|
|
+-CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
|
+-CONFIG_PM=y
|
|
|
+-# CONFIG_PM_DEBUG is not set
|
|
|
+-CONFIG_PM_SLEEP=y
|
|
|
+-CONFIG_SUSPEND=y
|
|
|
+-CONFIG_SUSPEND_FREEZER=y
|
|
|
+-CONFIG_NET=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Networking options
|
|
|
+-#
|
|
|
+-CONFIG_PACKET=y
|
|
|
+-CONFIG_PACKET_MMAP=y
|
|
|
+-CONFIG_UNIX=y
|
|
|
+-CONFIG_XFRM=y
|
|
|
+-# CONFIG_XFRM_USER is not set
|
|
|
+-# CONFIG_XFRM_SUB_POLICY is not set
|
|
|
+-# CONFIG_XFRM_MIGRATE is not set
|
|
|
+-# CONFIG_XFRM_STATISTICS is not set
|
|
|
+-# CONFIG_NET_KEY is not set
|
|
|
+-CONFIG_INET=y
|
|
|
+-CONFIG_IP_MULTICAST=y
|
|
|
+-# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
|
+-CONFIG_IP_FIB_HASH=y
|
|
|
+-CONFIG_IP_PNP=y
|
|
|
+-# CONFIG_IP_PNP_DHCP is not set
|
|
|
+-CONFIG_IP_PNP_BOOTP=y
|
|
|
+-# CONFIG_IP_PNP_RARP is not set
|
|
|
+-CONFIG_NET_IPIP=m
|
|
|
+-CONFIG_NET_IPGRE=m
|
|
|
+-CONFIG_NET_IPGRE_BROADCAST=y
|
|
|
+-# CONFIG_IP_MROUTE is not set
|
|
|
+-# CONFIG_ARPD is not set
|
|
|
+-# CONFIG_SYN_COOKIES is not set
|
|
|
+-# CONFIG_INET_AH is not set
|
|
|
+-# CONFIG_INET_ESP is not set
|
|
|
+-# CONFIG_INET_IPCOMP is not set
|
|
|
+-# CONFIG_INET_XFRM_TUNNEL is not set
|
|
|
+-CONFIG_INET_TUNNEL=m
|
|
|
+-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
|
|
+-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
|
|
+-CONFIG_INET_XFRM_MODE_BEET=y
|
|
|
+-# CONFIG_INET_LRO is not set
|
|
|
+-# CONFIG_INET_DIAG is not set
|
|
|
+-# CONFIG_TCP_CONG_ADVANCED is not set
|
|
|
+-CONFIG_TCP_CONG_CUBIC=y
|
|
|
+-CONFIG_DEFAULT_TCP_CONG="cubic"
|
|
|
+-# CONFIG_TCP_MD5SIG is not set
|
|
|
+-# CONFIG_IPV6 is not set
|
|
|
+-# CONFIG_NETWORK_SECMARK is not set
|
|
|
+-CONFIG_NETFILTER=y
|
|
|
+-# CONFIG_NETFILTER_DEBUG is not set
|
|
|
+-CONFIG_NETFILTER_ADVANCED=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Core Netfilter Configuration
|
|
|
+-#
|
|
|
+-CONFIG_NETFILTER_NETLINK=m
|
|
|
+-CONFIG_NETFILTER_NETLINK_QUEUE=m
|
|
|
+-CONFIG_NETFILTER_NETLINK_LOG=m
|
|
|
+-# CONFIG_NF_CONNTRACK is not set
|
|
|
+-CONFIG_NETFILTER_XTABLES=m
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
|
|
|
+-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_MARK=m
|
|
|
+-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_TRACE=m
|
|
|
+-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
|
|
|
+-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
|
|
+-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|
|
+-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_MARK=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_OWNER=m
|
|
|
+-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_REALM=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_RECENT=m
|
|
|
+-# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_SCTP=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_TIME=m
|
|
|
+-CONFIG_NETFILTER_XT_MATCH_U32=m
|
|
|
+-# CONFIG_IP_VS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# IP: Netfilter Configuration
|
|
|
+-#
|
|
|
+-# CONFIG_NF_DEFRAG_IPV4 is not set
|
|
|
+-CONFIG_IP_NF_QUEUE=m
|
|
|
+-CONFIG_IP_NF_IPTABLES=m
|
|
|
+-CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
|
|
+-CONFIG_IP_NF_MATCH_AH=m
|
|
|
+-CONFIG_IP_NF_MATCH_ECN=m
|
|
|
+-CONFIG_IP_NF_MATCH_TTL=m
|
|
|
+-CONFIG_IP_NF_FILTER=m
|
|
|
+-CONFIG_IP_NF_TARGET_REJECT=m
|
|
|
+-CONFIG_IP_NF_TARGET_LOG=m
|
|
|
+-CONFIG_IP_NF_TARGET_ULOG=m
|
|
|
+-CONFIG_IP_NF_MANGLE=m
|
|
|
+-CONFIG_IP_NF_TARGET_ECN=m
|
|
|
+-CONFIG_IP_NF_TARGET_TTL=m
|
|
|
+-CONFIG_IP_NF_RAW=m
|
|
|
+-CONFIG_IP_NF_ARPTABLES=m
|
|
|
+-CONFIG_IP_NF_ARPFILTER=m
|
|
|
+-CONFIG_IP_NF_ARP_MANGLE=m
|
|
|
+-# CONFIG_IP_DCCP is not set
|
|
|
+-# CONFIG_IP_SCTP is not set
|
|
|
+-# CONFIG_TIPC is not set
|
|
|
+-# CONFIG_ATM is not set
|
|
|
+-# CONFIG_BRIDGE is not set
|
|
|
+-# CONFIG_NET_DSA is not set
|
|
|
+-# CONFIG_VLAN_8021Q is not set
|
|
|
+-# CONFIG_DECNET is not set
|
|
|
+-# CONFIG_LLC2 is not set
|
|
|
+-# CONFIG_IPX is not set
|
|
|
+-# CONFIG_ATALK is not set
|
|
|
+-# CONFIG_X25 is not set
|
|
|
+-# CONFIG_LAPB is not set
|
|
|
+-# CONFIG_ECONET is not set
|
|
|
+-# CONFIG_WAN_ROUTER is not set
|
|
|
+-# CONFIG_NET_SCHED is not set
|
|
|
+-CONFIG_NET_CLS_ROUTE=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Network testing
|
|
|
+-#
|
|
|
+-# CONFIG_NET_PKTGEN is not set
|
|
|
+-# CONFIG_HAMRADIO is not set
|
|
|
+-# CONFIG_CAN is not set
|
|
|
+-# CONFIG_IRDA is not set
|
|
|
+-# CONFIG_BT is not set
|
|
|
+-# CONFIG_AF_RXRPC is not set
|
|
|
+-CONFIG_PHONET=m
|
|
|
+-CONFIG_WIRELESS=y
|
|
|
+-# CONFIG_CFG80211 is not set
|
|
|
+-CONFIG_WIRELESS_OLD_REGULATORY=y
|
|
|
+-CONFIG_WIRELESS_EXT=y
|
|
|
+-CONFIG_WIRELESS_EXT_SYSFS=y
|
|
|
+-# CONFIG_MAC80211 is not set
|
|
|
+-CONFIG_IEEE80211=m
|
|
|
+-# CONFIG_IEEE80211_DEBUG is not set
|
|
|
+-CONFIG_IEEE80211_CRYPT_WEP=m
|
|
|
+-# CONFIG_IEEE80211_CRYPT_CCMP is not set
|
|
|
+-# CONFIG_IEEE80211_CRYPT_TKIP is not set
|
|
|
+-# CONFIG_RFKILL is not set
|
|
|
+-CONFIG_NET_9P=m
|
|
|
+-# CONFIG_NET_9P_DEBUG is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Device Drivers
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Generic Driver Options
|
|
|
+-#
|
|
|
+-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
|
+-CONFIG_STANDALONE=y
|
|
|
+-CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|
|
+-CONFIG_FW_LOADER=m
|
|
|
+-CONFIG_FIRMWARE_IN_KERNEL=y
|
|
|
+-CONFIG_EXTRA_FIRMWARE=""
|
|
|
+-# CONFIG_SYS_HYPERVISOR is not set
|
|
|
+-# CONFIG_CONNECTOR is not set
|
|
|
+-CONFIG_MTD=m
|
|
|
+-# CONFIG_MTD_DEBUG is not set
|
|
|
+-# CONFIG_MTD_CONCAT is not set
|
|
|
+-# CONFIG_MTD_PARTITIONS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# User Modules And Translation Layers
|
|
|
+-#
|
|
|
+-CONFIG_MTD_CHAR=m
|
|
|
+-CONFIG_MTD_BLKDEVS=m
|
|
|
+-CONFIG_MTD_BLOCK=m
|
|
|
+-# CONFIG_MTD_BLOCK_RO is not set
|
|
|
+-# CONFIG_FTL is not set
|
|
|
+-# CONFIG_NFTL is not set
|
|
|
+-# CONFIG_INFTL is not set
|
|
|
+-# CONFIG_RFD_FTL is not set
|
|
|
+-# CONFIG_SSFDC is not set
|
|
|
+-# CONFIG_MTD_OOPS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# RAM/ROM/Flash chip drivers
|
|
|
+-#
|
|
|
+-CONFIG_MTD_CFI=m
|
|
|
+-CONFIG_MTD_JEDECPROBE=m
|
|
|
+-CONFIG_MTD_GEN_PROBE=m
|
|
|
+-CONFIG_MTD_CFI_ADV_OPTIONS=y
|
|
|
+-CONFIG_MTD_CFI_NOSWAP=y
|
|
|
+-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
|
|
|
+-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
|
|
|
+-# CONFIG_MTD_CFI_GEOMETRY is not set
|
|
|
+-CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
|
|
+-CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
|
|
+-CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
|
|
+-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
|
|
+-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
|
|
+-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
|
|
+-CONFIG_MTD_CFI_I1=y
|
|
|
+-CONFIG_MTD_CFI_I2=y
|
|
|
+-# CONFIG_MTD_CFI_I4 is not set
|
|
|
+-# CONFIG_MTD_CFI_I8 is not set
|
|
|
+-# CONFIG_MTD_OTP is not set
|
|
|
+-# CONFIG_MTD_CFI_INTELEXT is not set
|
|
|
+-CONFIG_MTD_CFI_AMDSTD=m
|
|
|
+-CONFIG_MTD_CFI_STAA=m
|
|
|
+-CONFIG_MTD_CFI_UTIL=m
|
|
|
+-# CONFIG_MTD_RAM is not set
|
|
|
+-# CONFIG_MTD_ROM is not set
|
|
|
+-# CONFIG_MTD_ABSENT is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Mapping drivers for chip access
|
|
|
+-#
|
|
|
+-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
|
|
+-CONFIG_MTD_PHYSMAP=m
|
|
|
+-CONFIG_MTD_PHYSMAP_START=0x1fc00000
|
|
|
+-CONFIG_MTD_PHYSMAP_LEN=0x80000
|
|
|
+-CONFIG_MTD_PHYSMAP_BANKWIDTH=1
|
|
|
+-# CONFIG_MTD_INTEL_VR_NOR is not set
|
|
|
+-# CONFIG_MTD_PLATRAM is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Self-contained MTD device drivers
|
|
|
+-#
|
|
|
+-# CONFIG_MTD_PMC551 is not set
|
|
|
+-# CONFIG_MTD_SLRAM is not set
|
|
|
+-# CONFIG_MTD_PHRAM is not set
|
|
|
+-# CONFIG_MTD_MTDRAM is not set
|
|
|
+-# CONFIG_MTD_BLOCK2MTD is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Disk-On-Chip Device Drivers
|
|
|
+-#
|
|
|
+-# CONFIG_MTD_DOC2000 is not set
|
|
|
+-# CONFIG_MTD_DOC2001 is not set
|
|
|
+-# CONFIG_MTD_DOC2001PLUS is not set
|
|
|
+-# CONFIG_MTD_NAND is not set
|
|
|
+-# CONFIG_MTD_ONENAND is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# UBI - Unsorted block images
|
|
|
+-#
|
|
|
+-# CONFIG_MTD_UBI is not set
|
|
|
+-# CONFIG_PARPORT is not set
|
|
|
+-# CONFIG_PNP is not set
|
|
|
+-CONFIG_BLK_DEV=y
|
|
|
+-# CONFIG_BLK_CPQ_DA is not set
|
|
|
+-# CONFIG_BLK_CPQ_CISS_DA is not set
|
|
|
+-# CONFIG_BLK_DEV_DAC960 is not set
|
|
|
+-# CONFIG_BLK_DEV_UMEM is not set
|
|
|
+-# CONFIG_BLK_DEV_COW_COMMON is not set
|
|
|
+-CONFIG_BLK_DEV_LOOP=y
|
|
|
+-CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|
|
+-# CONFIG_BLK_DEV_NBD is not set
|
|
|
+-# CONFIG_BLK_DEV_SX8 is not set
|
|
|
+-# CONFIG_BLK_DEV_UB is not set
|
|
|
+-CONFIG_BLK_DEV_RAM=m
|
|
|
+-CONFIG_BLK_DEV_RAM_COUNT=16
|
|
|
+-CONFIG_BLK_DEV_RAM_SIZE=4096
|
|
|
+-# CONFIG_BLK_DEV_XIP is not set
|
|
|
+-CONFIG_CDROM_PKTCDVD=m
|
|
|
+-CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
|
|
+-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
|
|
+-CONFIG_ATA_OVER_ETH=m
|
|
|
+-# CONFIG_BLK_DEV_HD is not set
|
|
|
+-# CONFIG_MISC_DEVICES is not set
|
|
|
+-CONFIG_HAVE_IDE=y
|
|
|
+-CONFIG_IDE=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Please see Documentation/ide/ide.txt for help/info on IDE drives
|
|
|
+-#
|
|
|
+-CONFIG_IDE_TIMINGS=y
|
|
|
+-CONFIG_IDE_ATAPI=y
|
|
|
+-# CONFIG_BLK_DEV_IDE_SATA is not set
|
|
|
+-CONFIG_IDE_GD=y
|
|
|
+-CONFIG_IDE_GD_ATA=y
|
|
|
+-# CONFIG_IDE_GD_ATAPI is not set
|
|
|
+-CONFIG_BLK_DEV_IDECD=y
|
|
|
+-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
|
|
|
+-# CONFIG_BLK_DEV_IDETAPE is not set
|
|
|
+-CONFIG_BLK_DEV_IDESCSI=y
|
|
|
+-CONFIG_IDE_TASK_IOCTL=y
|
|
|
+-CONFIG_IDE_PROC_FS=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# IDE chipset support/bugfixes
|
|
|
+-#
|
|
|
+-CONFIG_IDE_GENERIC=y
|
|
|
+-# CONFIG_BLK_DEV_PLATFORM is not set
|
|
|
+-CONFIG_BLK_DEV_IDEDMA_SFF=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# PCI IDE chipsets support
|
|
|
+-#
|
|
|
+-CONFIG_BLK_DEV_IDEPCI=y
|
|
|
+-CONFIG_IDEPCI_PCIBUS_ORDER=y
|
|
|
+-# CONFIG_BLK_DEV_OFFBOARD is not set
|
|
|
+-CONFIG_BLK_DEV_GENERIC=y
|
|
|
+-# CONFIG_BLK_DEV_OPTI621 is not set
|
|
|
+-CONFIG_BLK_DEV_IDEDMA_PCI=y
|
|
|
+-# CONFIG_BLK_DEV_AEC62XX is not set
|
|
|
+-# CONFIG_BLK_DEV_ALI15X3 is not set
|
|
|
+-# CONFIG_BLK_DEV_AMD74XX is not set
|
|
|
+-# CONFIG_BLK_DEV_CMD64X is not set
|
|
|
+-# CONFIG_BLK_DEV_TRIFLEX is not set
|
|
|
+-# CONFIG_BLK_DEV_CS5520 is not set
|
|
|
+-# CONFIG_BLK_DEV_CS5530 is not set
|
|
|
+-# CONFIG_BLK_DEV_HPT366 is not set
|
|
|
+-# CONFIG_BLK_DEV_JMICRON is not set
|
|
|
+-# CONFIG_BLK_DEV_SC1200 is not set
|
|
|
+-# CONFIG_BLK_DEV_PIIX is not set
|
|
|
+-# CONFIG_BLK_DEV_IT8213 is not set
|
|
|
+-# CONFIG_BLK_DEV_IT821X is not set
|
|
|
+-# CONFIG_BLK_DEV_NS87415 is not set
|
|
|
+-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
|
|
+-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
|
|
+-# CONFIG_BLK_DEV_SVWKS is not set
|
|
|
+-# CONFIG_BLK_DEV_SIIMAGE is not set
|
|
|
+-# CONFIG_BLK_DEV_SLC90E66 is not set
|
|
|
+-# CONFIG_BLK_DEV_TRM290 is not set
|
|
|
+-CONFIG_BLK_DEV_VIA82CXXX=y
|
|
|
+-# CONFIG_BLK_DEV_TC86C001 is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Other IDE chipsets support
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Note: most of these also require special kernel boot parameters
|
|
|
+-#
|
|
|
+-# CONFIG_BLK_DEV_4DRIVES is not set
|
|
|
+-# CONFIG_BLK_DEV_ALI14XX is not set
|
|
|
+-# CONFIG_BLK_DEV_DTC2278 is not set
|
|
|
+-# CONFIG_BLK_DEV_HT6560B is not set
|
|
|
+-# CONFIG_BLK_DEV_QD65XX is not set
|
|
|
+-# CONFIG_BLK_DEV_UMC8672 is not set
|
|
|
+-CONFIG_BLK_DEV_IDEDMA=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# SCSI device support
|
|
|
+-#
|
|
|
+-# CONFIG_RAID_ATTRS is not set
|
|
|
+-CONFIG_SCSI=y
|
|
|
+-CONFIG_SCSI_DMA=y
|
|
|
+-# CONFIG_SCSI_TGT is not set
|
|
|
+-# CONFIG_SCSI_NETLINK is not set
|
|
|
+-CONFIG_SCSI_PROC_FS=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# SCSI support type (disk, tape, CD-ROM)
|
|
|
+-#
|
|
|
+-CONFIG_BLK_DEV_SD=y
|
|
|
+-# CONFIG_CHR_DEV_ST is not set
|
|
|
+-# CONFIG_CHR_DEV_OSST is not set
|
|
|
+-CONFIG_BLK_DEV_SR=y
|
|
|
+-CONFIG_BLK_DEV_SR_VENDOR=y
|
|
|
+-CONFIG_CHR_DEV_SG=y
|
|
|
+-# CONFIG_CHR_DEV_SCH is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
|
|
+-#
|
|
|
+-# CONFIG_SCSI_MULTI_LUN is not set
|
|
|
+-CONFIG_SCSI_CONSTANTS=y
|
|
|
+-# CONFIG_SCSI_LOGGING is not set
|
|
|
+-# CONFIG_SCSI_SCAN_ASYNC is not set
|
|
|
+-CONFIG_SCSI_WAIT_SCAN=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# SCSI Transports
|
|
|
+-#
|
|
|
+-# CONFIG_SCSI_SPI_ATTRS is not set
|
|
|
+-# CONFIG_SCSI_FC_ATTRS is not set
|
|
|
+-# CONFIG_SCSI_ISCSI_ATTRS is not set
|
|
|
+-# CONFIG_SCSI_SAS_ATTRS is not set
|
|
|
+-# CONFIG_SCSI_SAS_LIBSAS is not set
|
|
|
+-# CONFIG_SCSI_SRP_ATTRS is not set
|
|
|
+-# CONFIG_SCSI_LOWLEVEL is not set
|
|
|
+-# CONFIG_SCSI_DH is not set
|
|
|
+-# CONFIG_ATA is not set
|
|
|
+-# CONFIG_MD is not set
|
|
|
+-# CONFIG_FUSION is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# IEEE 1394 (FireWire) support
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Enable only one of the two stacks, unless you know what you are doing
|
|
|
+-#
|
|
|
+-# CONFIG_FIREWIRE is not set
|
|
|
+-# CONFIG_IEEE1394 is not set
|
|
|
+-# CONFIG_I2O is not set
|
|
|
+-CONFIG_NETDEVICES=y
|
|
|
+-# CONFIG_DUMMY is not set
|
|
|
+-# CONFIG_BONDING is not set
|
|
|
+-CONFIG_MACVLAN=m
|
|
|
+-# CONFIG_EQUALIZER is not set
|
|
|
+-# CONFIG_TUN is not set
|
|
|
+-CONFIG_VETH=m
|
|
|
+-# CONFIG_ARCNET is not set
|
|
|
+-CONFIG_PHYLIB=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# MII PHY device drivers
|
|
|
+-#
|
|
|
+-CONFIG_MARVELL_PHY=m
|
|
|
+-CONFIG_DAVICOM_PHY=m
|
|
|
+-CONFIG_QSEMI_PHY=m
|
|
|
+-CONFIG_LXT_PHY=m
|
|
|
+-CONFIG_CICADA_PHY=m
|
|
|
+-# CONFIG_VITESSE_PHY is not set
|
|
|
+-# CONFIG_SMSC_PHY is not set
|
|
|
+-# CONFIG_BROADCOM_PHY is not set
|
|
|
+-# CONFIG_ICPLUS_PHY is not set
|
|
|
+-# CONFIG_REALTEK_PHY is not set
|
|
|
+-# CONFIG_MDIO_BITBANG is not set
|
|
|
+-CONFIG_NET_ETHERNET=y
|
|
|
+-CONFIG_MII=y
|
|
|
+-# CONFIG_AX88796 is not set
|
|
|
+-# CONFIG_HAPPYMEAL is not set
|
|
|
+-# CONFIG_SUNGEM is not set
|
|
|
+-# CONFIG_CASSINI is not set
|
|
|
+-# CONFIG_NET_VENDOR_3COM is not set
|
|
|
+-# CONFIG_NET_VENDOR_SMC is not set
|
|
|
+-# CONFIG_SMC91X is not set
|
|
|
+-# CONFIG_DM9000 is not set
|
|
|
+-# CONFIG_NET_VENDOR_RACAL is not set
|
|
|
+-# CONFIG_NET_TULIP is not set
|
|
|
+-# CONFIG_AT1700 is not set
|
|
|
+-# CONFIG_DEPCA is not set
|
|
|
+-# CONFIG_HP100 is not set
|
|
|
+-# CONFIG_NET_ISA is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_TAH is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
|
|
+-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
|
|
+-CONFIG_NET_PCI=y
|
|
|
+-# CONFIG_PCNET32 is not set
|
|
|
+-# CONFIG_AMD8111_ETH is not set
|
|
|
+-# CONFIG_ADAPTEC_STARFIRE is not set
|
|
|
+-# CONFIG_AC3200 is not set
|
|
|
+-# CONFIG_APRICOT is not set
|
|
|
+-# CONFIG_B44 is not set
|
|
|
+-# CONFIG_FORCEDETH is not set
|
|
|
+-# CONFIG_CS89x0 is not set
|
|
|
+-# CONFIG_TC35815 is not set
|
|
|
+-# CONFIG_EEPRO100 is not set
|
|
|
+-# CONFIG_E100 is not set
|
|
|
+-# CONFIG_FEALNX is not set
|
|
|
+-# CONFIG_NATSEMI is not set
|
|
|
+-# CONFIG_NE2K_PCI is not set
|
|
|
+-# CONFIG_8139CP is not set
|
|
|
+-CONFIG_8139TOO=y
|
|
|
+-# CONFIG_8139TOO_PIO is not set
|
|
|
+-# CONFIG_8139TOO_TUNE_TWISTER is not set
|
|
|
+-# CONFIG_8139TOO_8129 is not set
|
|
|
+-# CONFIG_8139_OLD_RX_RESET is not set
|
|
|
+-# CONFIG_R6040 is not set
|
|
|
+-# CONFIG_SIS900 is not set
|
|
|
+-# CONFIG_EPIC100 is not set
|
|
|
+-# CONFIG_SUNDANCE is not set
|
|
|
+-# CONFIG_TLAN is not set
|
|
|
+-# CONFIG_VIA_RHINE is not set
|
|
|
+-# CONFIG_SC92031 is not set
|
|
|
+-# CONFIG_ATL2 is not set
|
|
|
+-CONFIG_NETDEV_1000=y
|
|
|
+-# CONFIG_ACENIC is not set
|
|
|
+-# CONFIG_DL2K is not set
|
|
|
+-# CONFIG_E1000 is not set
|
|
|
+-# CONFIG_E1000E is not set
|
|
|
+-# CONFIG_IP1000 is not set
|
|
|
+-# CONFIG_IGB is not set
|
|
|
+-# CONFIG_NS83820 is not set
|
|
|
+-# CONFIG_HAMACHI is not set
|
|
|
+-# CONFIG_YELLOWFIN is not set
|
|
|
+-# CONFIG_R8169 is not set
|
|
|
+-# CONFIG_SIS190 is not set
|
|
|
+-# CONFIG_SKGE is not set
|
|
|
+-# CONFIG_SKY2 is not set
|
|
|
+-# CONFIG_VIA_VELOCITY is not set
|
|
|
+-# CONFIG_TIGON3 is not set
|
|
|
+-# CONFIG_BNX2 is not set
|
|
|
+-# CONFIG_QLA3XXX is not set
|
|
|
+-# CONFIG_ATL1 is not set
|
|
|
+-# CONFIG_ATL1E is not set
|
|
|
+-# CONFIG_JME is not set
|
|
|
+-CONFIG_NETDEV_10000=y
|
|
|
+-# CONFIG_CHELSIO_T1 is not set
|
|
|
+-# CONFIG_CHELSIO_T3 is not set
|
|
|
+-# CONFIG_ENIC is not set
|
|
|
+-# CONFIG_IXGBE is not set
|
|
|
+-# CONFIG_IXGB is not set
|
|
|
+-# CONFIG_S2IO is not set
|
|
|
+-# CONFIG_MYRI10GE is not set
|
|
|
+-# CONFIG_NETXEN_NIC is not set
|
|
|
+-# CONFIG_NIU is not set
|
|
|
+-# CONFIG_MLX4_EN is not set
|
|
|
+-# CONFIG_MLX4_CORE is not set
|
|
|
+-# CONFIG_TEHUTI is not set
|
|
|
+-# CONFIG_BNX2X is not set
|
|
|
+-# CONFIG_QLGE is not set
|
|
|
+-# CONFIG_SFC is not set
|
|
|
+-# CONFIG_TR is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Wireless LAN
|
|
|
+-#
|
|
|
+-# CONFIG_WLAN_PRE80211 is not set
|
|
|
+-# CONFIG_WLAN_80211 is not set
|
|
|
+-# CONFIG_IWLWIFI_LEDS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Network Adapters
|
|
|
+-#
|
|
|
+-# CONFIG_USB_CATC is not set
|
|
|
+-# CONFIG_USB_KAWETH is not set
|
|
|
+-# CONFIG_USB_PEGASUS is not set
|
|
|
+-# CONFIG_USB_RTL8150 is not set
|
|
|
+-# CONFIG_USB_USBNET is not set
|
|
|
+-# CONFIG_WAN is not set
|
|
|
+-# CONFIG_FDDI is not set
|
|
|
+-# CONFIG_HIPPI is not set
|
|
|
+-CONFIG_PPP=m
|
|
|
+-CONFIG_PPP_MULTILINK=y
|
|
|
+-CONFIG_PPP_FILTER=y
|
|
|
+-CONFIG_PPP_ASYNC=m
|
|
|
+-CONFIG_PPP_SYNC_TTY=m
|
|
|
+-CONFIG_PPP_DEFLATE=m
|
|
|
+-CONFIG_PPP_BSDCOMP=m
|
|
|
+-CONFIG_PPP_MPPE=m
|
|
|
+-CONFIG_PPPOE=m
|
|
|
+-CONFIG_PPPOL2TP=m
|
|
|
+-CONFIG_SLIP=m
|
|
|
+-CONFIG_SLIP_COMPRESSED=y
|
|
|
+-CONFIG_SLHC=m
|
|
|
+-CONFIG_SLIP_SMART=y
|
|
|
+-CONFIG_SLIP_MODE_SLIP6=y
|
|
|
+-CONFIG_NET_FC=y
|
|
|
+-# CONFIG_NETCONSOLE is not set
|
|
|
+-# CONFIG_NETPOLL is not set
|
|
|
+-# CONFIG_NET_POLL_CONTROLLER is not set
|
|
|
+-# CONFIG_ISDN is not set
|
|
|
+-# CONFIG_PHONE is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Input device support
|
|
|
+-#
|
|
|
+-CONFIG_INPUT=y
|
|
|
+-CONFIG_INPUT_FF_MEMLESS=y
|
|
|
+-# CONFIG_INPUT_POLLDEV is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Userland interfaces
|
|
|
+-#
|
|
|
+-CONFIG_INPUT_MOUSEDEV=y
|
|
|
+-CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
|
|
+-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
|
|
+-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|
|
+-# CONFIG_INPUT_JOYDEV is not set
|
|
|
+-# CONFIG_INPUT_EVDEV is not set
|
|
|
+-# CONFIG_INPUT_EVBUG is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Input Device Drivers
|
|
|
+-#
|
|
|
+-CONFIG_INPUT_KEYBOARD=y
|
|
|
+-CONFIG_KEYBOARD_ATKBD=m
|
|
|
+-# CONFIG_KEYBOARD_SUNKBD is not set
|
|
|
+-# CONFIG_KEYBOARD_LKKBD is not set
|
|
|
+-# CONFIG_KEYBOARD_XTKBD is not set
|
|
|
+-# CONFIG_KEYBOARD_NEWTON is not set
|
|
|
+-# CONFIG_KEYBOARD_STOWAWAY is not set
|
|
|
+-CONFIG_INPUT_MOUSE=y
|
|
|
+-CONFIG_MOUSE_PS2=y
|
|
|
+-CONFIG_MOUSE_PS2_ALPS=y
|
|
|
+-CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
|
|
+-CONFIG_MOUSE_PS2_SYNAPTICS=y
|
|
|
+-CONFIG_MOUSE_PS2_LIFEBOOK=y
|
|
|
+-CONFIG_MOUSE_PS2_TRACKPOINT=y
|
|
|
+-# CONFIG_MOUSE_PS2_ELANTECH is not set
|
|
|
+-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
|
|
+-CONFIG_MOUSE_SERIAL=y
|
|
|
+-# CONFIG_MOUSE_APPLETOUCH is not set
|
|
|
+-# CONFIG_MOUSE_BCM5974 is not set
|
|
|
+-# CONFIG_MOUSE_INPORT is not set
|
|
|
+-# CONFIG_MOUSE_LOGIBM is not set
|
|
|
+-# CONFIG_MOUSE_PC110PAD is not set
|
|
|
+-# CONFIG_MOUSE_VSXXXAA is not set
|
|
|
+-# CONFIG_INPUT_JOYSTICK is not set
|
|
|
+-# CONFIG_INPUT_TABLET is not set
|
|
|
+-# CONFIG_INPUT_TOUCHSCREEN is not set
|
|
|
+-# CONFIG_INPUT_MISC is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Hardware I/O ports
|
|
|
+-#
|
|
|
+-CONFIG_SERIO=y
|
|
|
+-CONFIG_SERIO_I8042=y
|
|
|
+-CONFIG_SERIO_SERPORT=y
|
|
|
+-# CONFIG_SERIO_PCIPS2 is not set
|
|
|
+-CONFIG_SERIO_LIBPS2=y
|
|
|
+-# CONFIG_SERIO_RAW is not set
|
|
|
+-# CONFIG_GAMEPORT is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Character devices
|
|
|
+-#
|
|
|
+-CONFIG_VT=y
|
|
|
+-CONFIG_CONSOLE_TRANSLATIONS=y
|
|
|
+-CONFIG_VT_CONSOLE=y
|
|
|
+-CONFIG_HW_CONSOLE=y
|
|
|
+-# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
|
|
+-CONFIG_DEVKMEM=y
|
|
|
+-# CONFIG_SERIAL_NONSTANDARD is not set
|
|
|
+-# CONFIG_NOZOMI is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Serial drivers
|
|
|
+-#
|
|
|
+-CONFIG_SERIAL_8250=y
|
|
|
+-CONFIG_SERIAL_8250_CONSOLE=y
|
|
|
+-CONFIG_SERIAL_8250_PCI=y
|
|
|
+-CONFIG_SERIAL_8250_NR_UARTS=2
|
|
|
+-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
|
|
+-# CONFIG_SERIAL_8250_EXTENDED is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Non-8250 serial port support
|
|
|
+-#
|
|
|
+-CONFIG_SERIAL_CORE=y
|
|
|
+-CONFIG_SERIAL_CORE_CONSOLE=y
|
|
|
+-# CONFIG_SERIAL_JSM is not set
|
|
|
+-CONFIG_UNIX98_PTYS=y
|
|
|
+-CONFIG_LEGACY_PTYS=y
|
|
|
+-CONFIG_LEGACY_PTY_COUNT=256
|
|
|
+-# CONFIG_IPMI_HANDLER is not set
|
|
|
+-CONFIG_HW_RANDOM=y
|
|
|
+-# CONFIG_DTLK is not set
|
|
|
+-# CONFIG_R3964 is not set
|
|
|
+-# CONFIG_APPLICOM is not set
|
|
|
+-# CONFIG_RAW_DRIVER is not set
|
|
|
+-# CONFIG_TCG_TPM is not set
|
|
|
+-CONFIG_DEVPORT=y
|
|
|
+-CONFIG_I2C=m
|
|
|
+-CONFIG_I2C_BOARDINFO=y
|
|
|
+-CONFIG_I2C_CHARDEV=m
|
|
|
+-CONFIG_I2C_HELPER_AUTO=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# I2C Hardware Bus support
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# PC SMBus host controller drivers
|
|
|
+-#
|
|
|
+-# CONFIG_I2C_ALI1535 is not set
|
|
|
+-# CONFIG_I2C_ALI1563 is not set
|
|
|
+-# CONFIG_I2C_ALI15X3 is not set
|
|
|
+-# CONFIG_I2C_AMD756 is not set
|
|
|
+-# CONFIG_I2C_AMD8111 is not set
|
|
|
+-# CONFIG_I2C_I801 is not set
|
|
|
+-# CONFIG_I2C_ISCH is not set
|
|
|
+-# CONFIG_I2C_PIIX4 is not set
|
|
|
+-# CONFIG_I2C_NFORCE2 is not set
|
|
|
+-# CONFIG_I2C_SIS5595 is not set
|
|
|
+-# CONFIG_I2C_SIS630 is not set
|
|
|
+-# CONFIG_I2C_SIS96X is not set
|
|
|
+-# CONFIG_I2C_VIA is not set
|
|
|
+-CONFIG_I2C_VIAPRO=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# I2C system bus drivers (mostly embedded / system-on-chip)
|
|
|
+-#
|
|
|
+-# CONFIG_I2C_OCORES is not set
|
|
|
+-# CONFIG_I2C_SIMTEC is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# External I2C/SMBus adapter drivers
|
|
|
+-#
|
|
|
+-# CONFIG_I2C_PARPORT_LIGHT is not set
|
|
|
+-# CONFIG_I2C_TAOS_EVM is not set
|
|
|
+-# CONFIG_I2C_TINY_USB is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Graphics adapter I2C/DDC channel drivers
|
|
|
+-#
|
|
|
+-# CONFIG_I2C_VOODOO3 is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Other I2C/SMBus bus drivers
|
|
|
+-#
|
|
|
+-# CONFIG_I2C_ELEKTOR is not set
|
|
|
+-# CONFIG_I2C_PCA_ISA is not set
|
|
|
+-# CONFIG_I2C_PCA_PLATFORM is not set
|
|
|
+-# CONFIG_I2C_STUB is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Miscellaneous I2C Chip support
|
|
|
+-#
|
|
|
+-# CONFIG_DS1682 is not set
|
|
|
+-# CONFIG_EEPROM_AT24 is not set
|
|
|
+-# CONFIG_EEPROM_LEGACY is not set
|
|
|
+-# CONFIG_SENSORS_PCF8574 is not set
|
|
|
+-# CONFIG_PCF8575 is not set
|
|
|
+-# CONFIG_SENSORS_PCA9539 is not set
|
|
|
+-# CONFIG_SENSORS_PCF8591 is not set
|
|
|
+-# CONFIG_SENSORS_MAX6875 is not set
|
|
|
+-# CONFIG_SENSORS_TSL2550 is not set
|
|
|
+-# CONFIG_I2C_DEBUG_CORE is not set
|
|
|
+-# CONFIG_I2C_DEBUG_ALGO is not set
|
|
|
+-# CONFIG_I2C_DEBUG_BUS is not set
|
|
|
+-# CONFIG_I2C_DEBUG_CHIP is not set
|
|
|
+-# CONFIG_SPI is not set
|
|
|
+-# CONFIG_W1 is not set
|
|
|
+-# CONFIG_POWER_SUPPLY is not set
|
|
|
+-# CONFIG_HWMON is not set
|
|
|
+-# CONFIG_THERMAL is not set
|
|
|
+-# CONFIG_THERMAL_HWMON is not set
|
|
|
+-# CONFIG_WATCHDOG is not set
|
|
|
+-CONFIG_SSB_POSSIBLE=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Sonics Silicon Backplane
|
|
|
+-#
|
|
|
+-# CONFIG_SSB is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Multifunction device drivers
|
|
|
+-#
|
|
|
+-# CONFIG_MFD_CORE is not set
|
|
|
+-# CONFIG_MFD_SM501 is not set
|
|
|
+-# CONFIG_HTC_PASIC3 is not set
|
|
|
+-# CONFIG_MFD_TMIO is not set
|
|
|
+-# CONFIG_MFD_WM8400 is not set
|
|
|
+-# CONFIG_MFD_WM8350_I2C is not set
|
|
|
+-# CONFIG_REGULATOR is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Multimedia devices
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Multimedia core support
|
|
|
+-#
|
|
|
+-CONFIG_VIDEO_DEV=m
|
|
|
+-CONFIG_VIDEO_V4L2_COMMON=m
|
|
|
+-CONFIG_VIDEO_ALLOW_V4L1=y
|
|
|
+-CONFIG_VIDEO_V4L1_COMPAT=y
|
|
|
+-# CONFIG_DVB_CORE is not set
|
|
|
+-CONFIG_VIDEO_MEDIA=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Multimedia drivers
|
|
|
+-#
|
|
|
+-CONFIG_MEDIA_ATTACH=y
|
|
|
+-CONFIG_MEDIA_TUNER=m
|
|
|
+-CONFIG_MEDIA_TUNER_CUSTOMIZE=y
|
|
|
+-CONFIG_MEDIA_TUNER_SIMPLE=m
|
|
|
+-CONFIG_MEDIA_TUNER_TDA8290=m
|
|
|
+-CONFIG_MEDIA_TUNER_TDA827X=m
|
|
|
+-CONFIG_MEDIA_TUNER_TDA18271=m
|
|
|
+-CONFIG_MEDIA_TUNER_TDA9887=m
|
|
|
+-CONFIG_MEDIA_TUNER_TEA5761=m
|
|
|
+-CONFIG_MEDIA_TUNER_TEA5767=m
|
|
|
+-CONFIG_MEDIA_TUNER_MT20XX=m
|
|
|
+-CONFIG_MEDIA_TUNER_MT2060=m
|
|
|
+-CONFIG_MEDIA_TUNER_MT2266=m
|
|
|
+-CONFIG_MEDIA_TUNER_MT2131=m
|
|
|
+-CONFIG_MEDIA_TUNER_QT1010=m
|
|
|
+-CONFIG_MEDIA_TUNER_XC2028=m
|
|
|
+-CONFIG_MEDIA_TUNER_XC5000=m
|
|
|
+-CONFIG_MEDIA_TUNER_MXL5005S=m
|
|
|
+-CONFIG_MEDIA_TUNER_MXL5007T=m
|
|
|
+-CONFIG_VIDEO_V4L2=m
|
|
|
+-CONFIG_VIDEO_V4L1=m
|
|
|
+-CONFIG_VIDEOBUF_GEN=m
|
|
|
+-CONFIG_VIDEOBUF_VMALLOC=m
|
|
|
+-CONFIG_VIDEOBUF_DMA_CONTIG=m
|
|
|
+-CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
|
|
+-# CONFIG_VIDEO_ADV_DEBUG is not set
|
|
|
+-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
|
|
+-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
|
|
|
+-# CONFIG_VIDEO_VIVI is not set
|
|
|
+-# CONFIG_VIDEO_BT848 is not set
|
|
|
+-# CONFIG_VIDEO_PMS is not set
|
|
|
+-# CONFIG_VIDEO_CPIA is not set
|
|
|
+-# CONFIG_VIDEO_CPIA2 is not set
|
|
|
+-# CONFIG_VIDEO_SAA5246A is not set
|
|
|
+-# CONFIG_VIDEO_SAA5249 is not set
|
|
|
+-# CONFIG_VIDEO_STRADIS is not set
|
|
|
+-# CONFIG_VIDEO_SAA7134 is not set
|
|
|
+-# CONFIG_VIDEO_MXB is not set
|
|
|
+-# CONFIG_VIDEO_HEXIUM_ORION is not set
|
|
|
+-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
|
|
|
+-# CONFIG_VIDEO_CX88 is not set
|
|
|
+-# CONFIG_VIDEO_IVTV is not set
|
|
|
+-# CONFIG_VIDEO_CAFE_CCIC is not set
|
|
|
+-CONFIG_SOC_CAMERA=m
|
|
|
+-CONFIG_SOC_CAMERA_MT9M001=m
|
|
|
+-CONFIG_SOC_CAMERA_MT9M111=m
|
|
|
+-CONFIG_SOC_CAMERA_MT9V022=m
|
|
|
+-CONFIG_SOC_CAMERA_PLATFORM=m
|
|
|
+-CONFIG_VIDEO_SH_MOBILE_CEU=m
|
|
|
+-CONFIG_V4L_USB_DRIVERS=y
|
|
|
+-CONFIG_USB_VIDEO_CLASS=m
|
|
|
+-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
|
|
|
+-CONFIG_USB_GSPCA=m
|
|
|
+-CONFIG_USB_M5602=m
|
|
|
+-CONFIG_USB_GSPCA_CONEX=m
|
|
|
+-CONFIG_USB_GSPCA_ETOMS=m
|
|
|
+-CONFIG_USB_GSPCA_FINEPIX=m
|
|
|
+-CONFIG_USB_GSPCA_MARS=m
|
|
|
+-CONFIG_USB_GSPCA_OV519=m
|
|
|
+-CONFIG_USB_GSPCA_PAC207=m
|
|
|
+-CONFIG_USB_GSPCA_PAC7311=m
|
|
|
+-CONFIG_USB_GSPCA_SONIXB=m
|
|
|
+-CONFIG_USB_GSPCA_SONIXJ=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA500=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA501=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA505=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA506=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA508=m
|
|
|
+-CONFIG_USB_GSPCA_SPCA561=m
|
|
|
+-CONFIG_USB_GSPCA_STK014=m
|
|
|
+-CONFIG_USB_GSPCA_SUNPLUS=m
|
|
|
+-CONFIG_USB_GSPCA_T613=m
|
|
|
+-CONFIG_USB_GSPCA_TV8532=m
|
|
|
+-CONFIG_USB_GSPCA_VC032X=m
|
|
|
+-CONFIG_USB_GSPCA_ZC3XX=m
|
|
|
+-# CONFIG_VIDEO_PVRUSB2 is not set
|
|
|
+-# CONFIG_VIDEO_EM28XX is not set
|
|
|
+-# CONFIG_VIDEO_USBVISION is not set
|
|
|
+-CONFIG_VIDEO_USBVIDEO=m
|
|
|
+-CONFIG_USB_VICAM=m
|
|
|
+-CONFIG_USB_IBMCAM=m
|
|
|
+-CONFIG_USB_KONICAWC=m
|
|
|
+-CONFIG_USB_QUICKCAM_MESSENGER=m
|
|
|
+-CONFIG_USB_ET61X251=m
|
|
|
+-# CONFIG_VIDEO_OVCAMCHIP is not set
|
|
|
+-CONFIG_USB_OV511=m
|
|
|
+-CONFIG_USB_SE401=m
|
|
|
+-CONFIG_USB_SN9C102=m
|
|
|
+-CONFIG_USB_STV680=m
|
|
|
+-CONFIG_USB_ZC0301=m
|
|
|
+-CONFIG_USB_PWC=m
|
|
|
+-# CONFIG_USB_PWC_DEBUG is not set
|
|
|
+-# CONFIG_USB_ZR364XX is not set
|
|
|
+-CONFIG_USB_STKWEBCAM=m
|
|
|
+-CONFIG_USB_S2255=m
|
|
|
+-CONFIG_RADIO_ADAPTERS=y
|
|
|
+-# CONFIG_RADIO_CADET is not set
|
|
|
+-# CONFIG_RADIO_RTRACK is not set
|
|
|
+-# CONFIG_RADIO_RTRACK2 is not set
|
|
|
+-# CONFIG_RADIO_AZTECH is not set
|
|
|
+-# CONFIG_RADIO_GEMTEK is not set
|
|
|
+-# CONFIG_RADIO_GEMTEK_PCI is not set
|
|
|
+-# CONFIG_RADIO_MAXIRADIO is not set
|
|
|
+-# CONFIG_RADIO_MAESTRO is not set
|
|
|
+-# CONFIG_RADIO_SF16FMI is not set
|
|
|
+-# CONFIG_RADIO_SF16FMR2 is not set
|
|
|
+-# CONFIG_RADIO_TERRATEC is not set
|
|
|
+-# CONFIG_RADIO_TRUST is not set
|
|
|
+-# CONFIG_RADIO_TYPHOON is not set
|
|
|
+-# CONFIG_RADIO_ZOLTRIX is not set
|
|
|
+-# CONFIG_USB_DSBR is not set
|
|
|
+-CONFIG_USB_SI470X=m
|
|
|
+-CONFIG_USB_MR800=m
|
|
|
+-CONFIG_DAB=y
|
|
|
+-# CONFIG_USB_DABUSB is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Graphics support
|
|
|
+-#
|
|
|
+-# CONFIG_DRM is not set
|
|
|
+-# CONFIG_VGASTATE is not set
|
|
|
+-CONFIG_VIDEO_OUTPUT_CONTROL=m
|
|
|
+-CONFIG_FB=y
|
|
|
+-# CONFIG_FIRMWARE_EDID is not set
|
|
|
+-# CONFIG_FB_DDC is not set
|
|
|
+-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
|
|
|
+-CONFIG_FB_CFB_FILLRECT=y
|
|
|
+-CONFIG_FB_CFB_COPYAREA=y
|
|
|
+-CONFIG_FB_CFB_IMAGEBLIT=y
|
|
|
+-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
|
|
+-# CONFIG_FB_SYS_FILLRECT is not set
|
|
|
+-# CONFIG_FB_SYS_COPYAREA is not set
|
|
|
+-# CONFIG_FB_SYS_IMAGEBLIT is not set
|
|
|
+-# CONFIG_FB_FOREIGN_ENDIAN is not set
|
|
|
+-# CONFIG_FB_SYS_FOPS is not set
|
|
|
+-# CONFIG_FB_SVGALIB is not set
|
|
|
+-# CONFIG_FB_MACMODES is not set
|
|
|
+-CONFIG_FB_BACKLIGHT=y
|
|
|
+-CONFIG_FB_MODE_HELPERS=y
|
|
|
+-# CONFIG_FB_TILEBLITTING is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Frame buffer hardware drivers
|
|
|
+-#
|
|
|
+-# CONFIG_FB_CIRRUS is not set
|
|
|
+-# CONFIG_FB_PM2 is not set
|
|
|
+-# CONFIG_FB_CYBER2000 is not set
|
|
|
+-# CONFIG_FB_ASILIANT is not set
|
|
|
+-# CONFIG_FB_IMSTT is not set
|
|
|
+-# CONFIG_FB_S1D13XXX is not set
|
|
|
+-# CONFIG_FB_NVIDIA is not set
|
|
|
+-# CONFIG_FB_RIVA is not set
|
|
|
+-# CONFIG_FB_MATROX is not set
|
|
|
+-CONFIG_FB_RADEON=y
|
|
|
+-# CONFIG_FB_RADEON_I2C is not set
|
|
|
+-CONFIG_FB_RADEON_BACKLIGHT=y
|
|
|
+-# CONFIG_FB_RADEON_DEBUG is not set
|
|
|
+-# CONFIG_FB_ATY128 is not set
|
|
|
+-# CONFIG_FB_ATY is not set
|
|
|
+-# CONFIG_FB_S3 is not set
|
|
|
+-# CONFIG_FB_SAVAGE is not set
|
|
|
+-# CONFIG_FB_SIS is not set
|
|
|
+-# CONFIG_FB_VIA is not set
|
|
|
+-# CONFIG_FB_NEOMAGIC is not set
|
|
|
+-# CONFIG_FB_KYRO is not set
|
|
|
+-# CONFIG_FB_3DFX is not set
|
|
|
+-# CONFIG_FB_VOODOO1 is not set
|
|
|
+-# CONFIG_FB_VT8623 is not set
|
|
|
+-# CONFIG_FB_TRIDENT is not set
|
|
|
+-# CONFIG_FB_ARK is not set
|
|
|
+-# CONFIG_FB_PM3 is not set
|
|
|
+-# CONFIG_FB_CARMINE is not set
|
|
|
+-# CONFIG_FB_VIRTUAL is not set
|
|
|
+-# CONFIG_FB_METRONOME is not set
|
|
|
+-# CONFIG_FB_MB862XX is not set
|
|
|
+-CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
|
+-CONFIG_LCD_CLASS_DEVICE=m
|
|
|
+-# CONFIG_LCD_ILI9320 is not set
|
|
|
+-# CONFIG_LCD_PLATFORM is not set
|
|
|
+-CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|
|
+-# CONFIG_BACKLIGHT_CORGI is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Display device support
|
|
|
+-#
|
|
|
+-# CONFIG_DISPLAY_SUPPORT is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Console display driver support
|
|
|
+-#
|
|
|
+-# CONFIG_VGA_CONSOLE is not set
|
|
|
+-# CONFIG_MDA_CONSOLE is not set
|
|
|
+-CONFIG_DUMMY_CONSOLE=y
|
|
|
+-CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
|
+-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
|
|
+-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
|
|
+-# CONFIG_FONTS is not set
|
|
|
+-CONFIG_FONT_8x8=y
|
|
|
+-CONFIG_FONT_8x16=y
|
|
|
+-# CONFIG_LOGO is not set
|
|
|
+-CONFIG_SOUND=y
|
|
|
+-CONFIG_SOUND_OSS_CORE=y
|
|
|
+-CONFIG_SND=m
|
|
|
+-CONFIG_SND_TIMER=m
|
|
|
+-CONFIG_SND_PCM=m
|
|
|
+-CONFIG_SND_RAWMIDI=m
|
|
|
+-CONFIG_SND_SEQUENCER=m
|
|
|
+-CONFIG_SND_SEQ_DUMMY=m
|
|
|
+-CONFIG_SND_OSSEMUL=y
|
|
|
+-CONFIG_SND_MIXER_OSS=m
|
|
|
+-CONFIG_SND_PCM_OSS=m
|
|
|
+-CONFIG_SND_PCM_OSS_PLUGINS=y
|
|
|
+-CONFIG_SND_SEQUENCER_OSS=y
|
|
|
+-# CONFIG_SND_DYNAMIC_MINORS is not set
|
|
|
+-CONFIG_SND_SUPPORT_OLD_API=y
|
|
|
+-CONFIG_SND_VERBOSE_PROCFS=y
|
|
|
+-# CONFIG_SND_VERBOSE_PRINTK is not set
|
|
|
+-# CONFIG_SND_DEBUG is not set
|
|
|
+-CONFIG_SND_VMASTER=y
|
|
|
+-CONFIG_SND_MPU401_UART=m
|
|
|
+-CONFIG_SND_AC97_CODEC=m
|
|
|
+-CONFIG_SND_DRIVERS=y
|
|
|
+-# CONFIG_SND_DUMMY is not set
|
|
|
+-# CONFIG_SND_VIRMIDI is not set
|
|
|
+-# CONFIG_SND_MTPAV is not set
|
|
|
+-# CONFIG_SND_SERIAL_U16550 is not set
|
|
|
+-# CONFIG_SND_MPU401 is not set
|
|
|
+-# CONFIG_SND_AC97_POWER_SAVE is not set
|
|
|
+-CONFIG_SND_PCI=y
|
|
|
+-# CONFIG_SND_AD1889 is not set
|
|
|
+-# CONFIG_SND_ALS300 is not set
|
|
|
+-# CONFIG_SND_ALI5451 is not set
|
|
|
+-# CONFIG_SND_ATIIXP is not set
|
|
|
+-# CONFIG_SND_ATIIXP_MODEM is not set
|
|
|
+-# CONFIG_SND_AU8810 is not set
|
|
|
+-# CONFIG_SND_AU8820 is not set
|
|
|
+-# CONFIG_SND_AU8830 is not set
|
|
|
+-# CONFIG_SND_AW2 is not set
|
|
|
+-# CONFIG_SND_AZT3328 is not set
|
|
|
+-# CONFIG_SND_BT87X is not set
|
|
|
+-# CONFIG_SND_CA0106 is not set
|
|
|
+-# CONFIG_SND_CMIPCI is not set
|
|
|
+-# CONFIG_SND_OXYGEN is not set
|
|
|
+-# CONFIG_SND_CS4281 is not set
|
|
|
+-# CONFIG_SND_CS46XX is not set
|
|
|
+-# CONFIG_SND_DARLA20 is not set
|
|
|
+-# CONFIG_SND_GINA20 is not set
|
|
|
+-# CONFIG_SND_LAYLA20 is not set
|
|
|
+-# CONFIG_SND_DARLA24 is not set
|
|
|
+-# CONFIG_SND_GINA24 is not set
|
|
|
+-# CONFIG_SND_LAYLA24 is not set
|
|
|
+-# CONFIG_SND_MONA is not set
|
|
|
+-# CONFIG_SND_MIA is not set
|
|
|
+-# CONFIG_SND_ECHO3G is not set
|
|
|
+-# CONFIG_SND_INDIGO is not set
|
|
|
+-# CONFIG_SND_INDIGOIO is not set
|
|
|
+-# CONFIG_SND_INDIGODJ is not set
|
|
|
+-# CONFIG_SND_EMU10K1 is not set
|
|
|
+-# CONFIG_SND_EMU10K1X is not set
|
|
|
+-# CONFIG_SND_ENS1370 is not set
|
|
|
+-# CONFIG_SND_ENS1371 is not set
|
|
|
+-# CONFIG_SND_ES1938 is not set
|
|
|
+-# CONFIG_SND_ES1968 is not set
|
|
|
+-# CONFIG_SND_FM801 is not set
|
|
|
+-# CONFIG_SND_HDA_INTEL is not set
|
|
|
+-# CONFIG_SND_HDSP is not set
|
|
|
+-# CONFIG_SND_HDSPM is not set
|
|
|
+-# CONFIG_SND_HIFIER is not set
|
|
|
+-# CONFIG_SND_ICE1712 is not set
|
|
|
+-# CONFIG_SND_ICE1724 is not set
|
|
|
+-# CONFIG_SND_INTEL8X0 is not set
|
|
|
+-# CONFIG_SND_INTEL8X0M is not set
|
|
|
+-# CONFIG_SND_KORG1212 is not set
|
|
|
+-# CONFIG_SND_MAESTRO3 is not set
|
|
|
+-# CONFIG_SND_MIXART is not set
|
|
|
+-# CONFIG_SND_NM256 is not set
|
|
|
+-# CONFIG_SND_PCXHR is not set
|
|
|
+-# CONFIG_SND_RIPTIDE is not set
|
|
|
+-# CONFIG_SND_RME32 is not set
|
|
|
+-# CONFIG_SND_RME96 is not set
|
|
|
+-# CONFIG_SND_RME9652 is not set
|
|
|
+-# CONFIG_SND_SONICVIBES is not set
|
|
|
+-# CONFIG_SND_TRIDENT is not set
|
|
|
+-CONFIG_SND_VIA82XX=m
|
|
|
+-# CONFIG_SND_VIA82XX_MODEM is not set
|
|
|
+-# CONFIG_SND_VIRTUOSO is not set
|
|
|
+-# CONFIG_SND_VX222 is not set
|
|
|
+-# CONFIG_SND_YMFPCI is not set
|
|
|
+-CONFIG_SND_MIPS=y
|
|
|
+-CONFIG_SND_USB=y
|
|
|
+-# CONFIG_SND_USB_AUDIO is not set
|
|
|
+-# CONFIG_SND_USB_CAIAQ is not set
|
|
|
+-# CONFIG_SND_SOC is not set
|
|
|
+-# CONFIG_SOUND_PRIME is not set
|
|
|
+-CONFIG_AC97_BUS=m
|
|
|
+-CONFIG_HID_SUPPORT=y
|
|
|
+-CONFIG_HID=y
|
|
|
+-# CONFIG_HID_DEBUG is not set
|
|
|
+-CONFIG_HIDRAW=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Input Devices
|
|
|
+-#
|
|
|
+-CONFIG_USB_HID=m
|
|
|
+-CONFIG_HID_PID=y
|
|
|
+-CONFIG_USB_HIDDEV=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB HID Boot Protocol drivers
|
|
|
+-#
|
|
|
+-# CONFIG_USB_KBD is not set
|
|
|
+-# CONFIG_USB_MOUSE is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Special HID drivers
|
|
|
+-#
|
|
|
+-CONFIG_HID_COMPAT=y
|
|
|
+-CONFIG_HID_A4TECH=m
|
|
|
+-CONFIG_HID_APPLE=m
|
|
|
+-CONFIG_HID_BELKIN=m
|
|
|
+-CONFIG_HID_BRIGHT=m
|
|
|
+-CONFIG_HID_CHERRY=m
|
|
|
+-CONFIG_HID_CHICONY=m
|
|
|
+-CONFIG_HID_CYPRESS=m
|
|
|
+-CONFIG_HID_DELL=m
|
|
|
+-CONFIG_HID_EZKEY=m
|
|
|
+-CONFIG_HID_GYRATION=m
|
|
|
+-CONFIG_HID_LOGITECH=m
|
|
|
+-CONFIG_LOGITECH_FF=y
|
|
|
+-CONFIG_LOGIRUMBLEPAD2_FF=y
|
|
|
+-CONFIG_HID_MICROSOFT=m
|
|
|
+-CONFIG_HID_MONTEREY=m
|
|
|
+-CONFIG_HID_PANTHERLORD=m
|
|
|
+-# CONFIG_PANTHERLORD_FF is not set
|
|
|
+-CONFIG_HID_PETALYNX=m
|
|
|
+-CONFIG_HID_SAMSUNG=m
|
|
|
+-CONFIG_HID_SONY=m
|
|
|
+-CONFIG_HID_SUNPLUS=m
|
|
|
+-# CONFIG_THRUSTMASTER_FF is not set
|
|
|
+-CONFIG_ZEROPLUS_FF=m
|
|
|
+-CONFIG_USB_SUPPORT=y
|
|
|
+-CONFIG_USB_ARCH_HAS_HCD=y
|
|
|
+-CONFIG_USB_ARCH_HAS_OHCI=y
|
|
|
+-CONFIG_USB_ARCH_HAS_EHCI=y
|
|
|
+-CONFIG_USB=y
|
|
|
+-# CONFIG_USB_DEBUG is not set
|
|
|
+-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Miscellaneous USB options
|
|
|
+-#
|
|
|
+-CONFIG_USB_DEVICEFS=y
|
|
|
+-# CONFIG_USB_DEVICE_CLASS is not set
|
|
|
+-# CONFIG_USB_DYNAMIC_MINORS is not set
|
|
|
+-# CONFIG_USB_SUSPEND is not set
|
|
|
+-# CONFIG_USB_OTG is not set
|
|
|
+-CONFIG_USB_OTG_WHITELIST=y
|
|
|
+-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
|
|
+-# CONFIG_USB_MON is not set
|
|
|
+-# CONFIG_USB_WUSB is not set
|
|
|
+-CONFIG_USB_WUSB_CBAF=m
|
|
|
+-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Host Controller Drivers
|
|
|
+-#
|
|
|
+-CONFIG_USB_C67X00_HCD=m
|
|
|
+-CONFIG_USB_EHCI_HCD=y
|
|
|
+-CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
|
|
+-CONFIG_USB_EHCI_TT_NEWSCHED=y
|
|
|
+-# CONFIG_USB_ISP116X_HCD is not set
|
|
|
+-CONFIG_USB_ISP1760_HCD=m
|
|
|
+-CONFIG_USB_OHCI_HCD=y
|
|
|
+-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
|
|
+-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
|
|
+-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
|
+-CONFIG_USB_UHCI_HCD=m
|
|
|
+-# CONFIG_USB_SL811_HCD is not set
|
|
|
+-CONFIG_USB_R8A66597_HCD=m
|
|
|
+-# CONFIG_USB_WHCI_HCD is not set
|
|
|
+-# CONFIG_USB_HWA_HCD is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Device Class drivers
|
|
|
+-#
|
|
|
+-CONFIG_USB_ACM=y
|
|
|
+-CONFIG_USB_PRINTER=y
|
|
|
+-CONFIG_USB_WDM=m
|
|
|
+-CONFIG_USB_TMC=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# see USB_STORAGE Help for more information
|
|
|
+-#
|
|
|
+-CONFIG_USB_STORAGE=y
|
|
|
+-# CONFIG_USB_STORAGE_DEBUG is not set
|
|
|
+-# CONFIG_USB_STORAGE_DATAFAB is not set
|
|
|
+-# CONFIG_USB_STORAGE_FREECOM is not set
|
|
|
+-# CONFIG_USB_STORAGE_ISD200 is not set
|
|
|
+-# CONFIG_USB_STORAGE_DPCM is not set
|
|
|
+-# CONFIG_USB_STORAGE_USBAT is not set
|
|
|
+-# CONFIG_USB_STORAGE_SDDR09 is not set
|
|
|
+-# CONFIG_USB_STORAGE_SDDR55 is not set
|
|
|
+-# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
|
|
+-# CONFIG_USB_STORAGE_ALAUDA is not set
|
|
|
+-CONFIG_USB_STORAGE_ONETOUCH=y
|
|
|
+-# CONFIG_USB_STORAGE_KARMA is not set
|
|
|
+-CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
|
|
+-CONFIG_USB_LIBUSUAL=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Imaging devices
|
|
|
+-#
|
|
|
+-# CONFIG_USB_MDC800 is not set
|
|
|
+-# CONFIG_USB_MICROTEK is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB port drivers
|
|
|
+-#
|
|
|
+-# CONFIG_USB_SERIAL is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# USB Miscellaneous drivers
|
|
|
+-#
|
|
|
+-# CONFIG_USB_EMI62 is not set
|
|
|
+-# CONFIG_USB_EMI26 is not set
|
|
|
+-# CONFIG_USB_ADUTUX is not set
|
|
|
+-CONFIG_USB_SEVSEG=m
|
|
|
+-# CONFIG_USB_RIO500 is not set
|
|
|
+-# CONFIG_USB_LEGOTOWER is not set
|
|
|
+-# CONFIG_USB_LCD is not set
|
|
|
+-# CONFIG_USB_BERRY_CHARGE is not set
|
|
|
+-# CONFIG_USB_LED is not set
|
|
|
+-# CONFIG_USB_CYPRESS_CY7C63 is not set
|
|
|
+-# CONFIG_USB_CYTHERM is not set
|
|
|
+-# CONFIG_USB_PHIDGET is not set
|
|
|
+-# CONFIG_USB_IDMOUSE is not set
|
|
|
+-# CONFIG_USB_FTDI_ELAN is not set
|
|
|
+-# CONFIG_USB_APPLEDISPLAY is not set
|
|
|
+-# CONFIG_USB_SISUSBVGA is not set
|
|
|
+-# CONFIG_USB_LD is not set
|
|
|
+-# CONFIG_USB_TRANCEVIBRATOR is not set
|
|
|
+-# CONFIG_USB_IOWARRIOR is not set
|
|
|
+-# CONFIG_USB_TEST is not set
|
|
|
+-CONFIG_USB_ISIGHTFW=m
|
|
|
+-CONFIG_USB_VST=m
|
|
|
+-# CONFIG_USB_GADGET is not set
|
|
|
+-# CONFIG_UWB is not set
|
|
|
+-# CONFIG_MMC is not set
|
|
|
+-# CONFIG_MEMSTICK is not set
|
|
|
+-# CONFIG_NEW_LEDS is not set
|
|
|
+-# CONFIG_ACCESSIBILITY is not set
|
|
|
+-# CONFIG_INFINIBAND is not set
|
|
|
+-CONFIG_RTC_LIB=y
|
|
|
+-CONFIG_RTC_CLASS=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# RTC interfaces
|
|
|
+-#
|
|
|
+-CONFIG_RTC_INTF_SYSFS=y
|
|
|
+-CONFIG_RTC_INTF_PROC=y
|
|
|
+-CONFIG_RTC_INTF_DEV=y
|
|
|
+-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
|
|
|
+-# CONFIG_RTC_DRV_TEST is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# I2C RTC drivers
|
|
|
+-#
|
|
|
+-# CONFIG_RTC_DRV_DS1307 is not set
|
|
|
+-# CONFIG_RTC_DRV_DS1374 is not set
|
|
|
+-# CONFIG_RTC_DRV_DS1672 is not set
|
|
|
+-# CONFIG_RTC_DRV_MAX6900 is not set
|
|
|
+-# CONFIG_RTC_DRV_RS5C372 is not set
|
|
|
+-# CONFIG_RTC_DRV_ISL1208 is not set
|
|
|
+-# CONFIG_RTC_DRV_X1205 is not set
|
|
|
+-# CONFIG_RTC_DRV_PCF8563 is not set
|
|
|
+-# CONFIG_RTC_DRV_PCF8583 is not set
|
|
|
+-# CONFIG_RTC_DRV_M41T80 is not set
|
|
|
+-# CONFIG_RTC_DRV_S35390A is not set
|
|
|
+-# CONFIG_RTC_DRV_FM3130 is not set
|
|
|
+-# CONFIG_RTC_DRV_RX8581 is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# SPI RTC drivers
|
|
|
+-#
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Platform RTC drivers
|
|
|
+-#
|
|
|
+-CONFIG_RTC_DRV_CMOS=m
|
|
|
+-# CONFIG_RTC_DRV_DS1286 is not set
|
|
|
+-# CONFIG_RTC_DRV_DS1511 is not set
|
|
|
+-# CONFIG_RTC_DRV_DS1553 is not set
|
|
|
+-# CONFIG_RTC_DRV_DS1742 is not set
|
|
|
+-# CONFIG_RTC_DRV_STK17TA8 is not set
|
|
|
+-# CONFIG_RTC_DRV_M48T86 is not set
|
|
|
+-# CONFIG_RTC_DRV_M48T35 is not set
|
|
|
+-# CONFIG_RTC_DRV_M48T59 is not set
|
|
|
+-# CONFIG_RTC_DRV_BQ4802 is not set
|
|
|
+-# CONFIG_RTC_DRV_V3020 is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# on-CPU RTC drivers
|
|
|
+-#
|
|
|
+-# CONFIG_DMADEVICES is not set
|
|
|
+-CONFIG_UIO=m
|
|
|
+-CONFIG_UIO_CIF=m
|
|
|
+-# CONFIG_UIO_PDRV is not set
|
|
|
+-# CONFIG_UIO_PDRV_GENIRQ is not set
|
|
|
+-# CONFIG_UIO_SMX is not set
|
|
|
+-# CONFIG_UIO_SERCOS3 is not set
|
|
|
+-# CONFIG_STAGING is not set
|
|
|
+-CONFIG_STAGING_EXCLUDE_BUILD=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# File systems
|
|
|
+-#
|
|
|
+-CONFIG_EXT2_FS=y
|
|
|
+-# CONFIG_EXT2_FS_XATTR is not set
|
|
|
+-CONFIG_EXT2_FS_XIP=y
|
|
|
+-CONFIG_EXT3_FS=y
|
|
|
+-# CONFIG_EXT3_FS_XATTR is not set
|
|
|
+-CONFIG_EXT4_FS=m
|
|
|
+-CONFIG_EXT4DEV_COMPAT=y
|
|
|
+-CONFIG_EXT4_FS_XATTR=y
|
|
|
+-CONFIG_EXT4_FS_POSIX_ACL=y
|
|
|
+-CONFIG_EXT4_FS_SECURITY=y
|
|
|
+-CONFIG_FS_XIP=y
|
|
|
+-CONFIG_JBD=y
|
|
|
+-CONFIG_JBD2=m
|
|
|
+-CONFIG_FS_MBCACHE=m
|
|
|
+-CONFIG_REISERFS_FS=m
|
|
|
+-# CONFIG_REISERFS_CHECK is not set
|
|
|
+-# CONFIG_REISERFS_PROC_INFO is not set
|
|
|
+-# CONFIG_REISERFS_FS_XATTR is not set
|
|
|
+-# CONFIG_JFS_FS is not set
|
|
|
+-CONFIG_FS_POSIX_ACL=y
|
|
|
+-CONFIG_FILE_LOCKING=y
|
|
|
+-# CONFIG_XFS_FS is not set
|
|
|
+-# CONFIG_GFS2_FS is not set
|
|
|
+-# CONFIG_OCFS2_FS is not set
|
|
|
+-CONFIG_DNOTIFY=y
|
|
|
+-CONFIG_INOTIFY=y
|
|
|
+-CONFIG_INOTIFY_USER=y
|
|
|
+-# CONFIG_QUOTA is not set
|
|
|
+-CONFIG_AUTOFS_FS=y
|
|
|
+-CONFIG_AUTOFS4_FS=y
|
|
|
+-CONFIG_FUSE_FS=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# CD-ROM/DVD Filesystems
|
|
|
+-#
|
|
|
+-CONFIG_ISO9660_FS=m
|
|
|
+-CONFIG_JOLIET=y
|
|
|
+-CONFIG_ZISOFS=y
|
|
|
+-CONFIG_UDF_FS=m
|
|
|
+-CONFIG_UDF_NLS=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# DOS/FAT/NT Filesystems
|
|
|
+-#
|
|
|
+-CONFIG_FAT_FS=m
|
|
|
+-CONFIG_MSDOS_FS=m
|
|
|
+-CONFIG_VFAT_FS=m
|
|
|
+-CONFIG_FAT_DEFAULT_CODEPAGE=936
|
|
|
+-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
|
|
|
+-CONFIG_NTFS_FS=m
|
|
|
+-# CONFIG_NTFS_DEBUG is not set
|
|
|
+-CONFIG_NTFS_RW=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Pseudo filesystems
|
|
|
+-#
|
|
|
+-CONFIG_PROC_FS=y
|
|
|
+-CONFIG_PROC_KCORE=y
|
|
|
+-CONFIG_PROC_SYSCTL=y
|
|
|
+-CONFIG_PROC_PAGE_MONITOR=y
|
|
|
+-CONFIG_SYSFS=y
|
|
|
+-CONFIG_TMPFS=y
|
|
|
+-# CONFIG_TMPFS_POSIX_ACL is not set
|
|
|
+-# CONFIG_HUGETLB_PAGE is not set
|
|
|
+-# CONFIG_CONFIGFS_FS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Miscellaneous filesystems
|
|
|
+-#
|
|
|
+-# CONFIG_ADFS_FS is not set
|
|
|
+-# CONFIG_AFFS_FS is not set
|
|
|
+-# CONFIG_HFS_FS is not set
|
|
|
+-# CONFIG_HFSPLUS_FS is not set
|
|
|
+-# CONFIG_BEFS_FS is not set
|
|
|
+-# CONFIG_BFS_FS is not set
|
|
|
+-# CONFIG_EFS_FS is not set
|
|
|
+-# CONFIG_JFFS2_FS is not set
|
|
|
+-# CONFIG_CRAMFS is not set
|
|
|
+-# CONFIG_VXFS_FS is not set
|
|
|
+-# CONFIG_MINIX_FS is not set
|
|
|
+-CONFIG_OMFS_FS=m
|
|
|
+-# CONFIG_HPFS_FS is not set
|
|
|
+-# CONFIG_QNX4FS_FS is not set
|
|
|
+-# CONFIG_ROMFS_FS is not set
|
|
|
+-# CONFIG_SYSV_FS is not set
|
|
|
+-# CONFIG_UFS_FS is not set
|
|
|
+-CONFIG_NETWORK_FILESYSTEMS=y
|
|
|
+-CONFIG_NFS_FS=m
|
|
|
+-CONFIG_NFS_V3=y
|
|
|
+-CONFIG_NFS_V3_ACL=y
|
|
|
+-CONFIG_NFS_V4=y
|
|
|
+-CONFIG_NFSD=m
|
|
|
+-CONFIG_NFSD_V2_ACL=y
|
|
|
+-CONFIG_NFSD_V3=y
|
|
|
+-CONFIG_NFSD_V3_ACL=y
|
|
|
+-CONFIG_NFSD_V4=y
|
|
|
+-CONFIG_LOCKD=m
|
|
|
+-CONFIG_LOCKD_V4=y
|
|
|
+-CONFIG_EXPORTFS=m
|
|
|
+-CONFIG_NFS_ACL_SUPPORT=m
|
|
|
+-CONFIG_NFS_COMMON=y
|
|
|
+-CONFIG_SUNRPC=m
|
|
|
+-CONFIG_SUNRPC_GSS=m
|
|
|
+-# CONFIG_SUNRPC_REGISTER_V4 is not set
|
|
|
+-CONFIG_RPCSEC_GSS_KRB5=m
|
|
|
+-# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
|
|
+-CONFIG_SMB_FS=m
|
|
|
+-CONFIG_SMB_NLS_DEFAULT=y
|
|
|
+-CONFIG_SMB_NLS_REMOTE="cp936"
|
|
|
+-CONFIG_CIFS=m
|
|
|
+-CONFIG_CIFS_STATS=y
|
|
|
+-CONFIG_CIFS_STATS2=y
|
|
|
+-CONFIG_CIFS_WEAK_PW_HASH=y
|
|
|
+-CONFIG_CIFS_XATTR=y
|
|
|
+-CONFIG_CIFS_POSIX=y
|
|
|
+-CONFIG_CIFS_DEBUG2=y
|
|
|
+-CONFIG_CIFS_EXPERIMENTAL=y
|
|
|
+-# CONFIG_NCP_FS is not set
|
|
|
+-# CONFIG_CODA_FS is not set
|
|
|
+-# CONFIG_AFS_FS is not set
|
|
|
+-# CONFIG_9P_FS is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Partition Types
|
|
|
+-#
|
|
|
+-CONFIG_PARTITION_ADVANCED=y
|
|
|
+-# CONFIG_ACORN_PARTITION is not set
|
|
|
+-# CONFIG_OSF_PARTITION is not set
|
|
|
+-# CONFIG_AMIGA_PARTITION is not set
|
|
|
+-# CONFIG_ATARI_PARTITION is not set
|
|
|
+-# CONFIG_MAC_PARTITION is not set
|
|
|
+-CONFIG_MSDOS_PARTITION=y
|
|
|
+-# CONFIG_BSD_DISKLABEL is not set
|
|
|
+-# CONFIG_MINIX_SUBPARTITION is not set
|
|
|
+-# CONFIG_SOLARIS_X86_PARTITION is not set
|
|
|
+-# CONFIG_UNIXWARE_DISKLABEL is not set
|
|
|
+-# CONFIG_LDM_PARTITION is not set
|
|
|
+-# CONFIG_SGI_PARTITION is not set
|
|
|
+-# CONFIG_ULTRIX_PARTITION is not set
|
|
|
+-# CONFIG_SUN_PARTITION is not set
|
|
|
+-# CONFIG_KARMA_PARTITION is not set
|
|
|
+-# CONFIG_EFI_PARTITION is not set
|
|
|
+-# CONFIG_SYSV68_PARTITION is not set
|
|
|
+-CONFIG_NLS=y
|
|
|
+-CONFIG_NLS_DEFAULT="utf8"
|
|
|
+-# CONFIG_NLS_CODEPAGE_437 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_737 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_775 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_850 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_852 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_855 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_857 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_860 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_861 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_862 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_863 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_864 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_865 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_866 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_869 is not set
|
|
|
+-CONFIG_NLS_CODEPAGE_936=y
|
|
|
+-# CONFIG_NLS_CODEPAGE_950 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_932 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_949 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_874 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_8 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_1250 is not set
|
|
|
+-# CONFIG_NLS_CODEPAGE_1251 is not set
|
|
|
+-# CONFIG_NLS_ASCII is not set
|
|
|
+-CONFIG_NLS_ISO8859_1=y
|
|
|
+-# CONFIG_NLS_ISO8859_2 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_3 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_4 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_5 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_6 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_7 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_9 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_13 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_14 is not set
|
|
|
+-# CONFIG_NLS_ISO8859_15 is not set
|
|
|
+-# CONFIG_NLS_KOI8_R is not set
|
|
|
+-# CONFIG_NLS_KOI8_U is not set
|
|
|
+-CONFIG_NLS_UTF8=y
|
|
|
+-# CONFIG_DLM is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Kernel hacking
|
|
|
+-#
|
|
|
+-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
|
|
+-# CONFIG_PRINTK_TIME is not set
|
|
|
+-CONFIG_ENABLE_WARN_DEPRECATED=y
|
|
|
+-# CONFIG_ENABLE_MUST_CHECK is not set
|
|
|
+-CONFIG_FRAME_WARN=2048
|
|
|
+-# CONFIG_MAGIC_SYSRQ is not set
|
|
|
+-# CONFIG_UNUSED_SYMBOLS is not set
|
|
|
+-# CONFIG_DEBUG_FS is not set
|
|
|
+-# CONFIG_HEADERS_CHECK is not set
|
|
|
+-# CONFIG_DEBUG_KERNEL is not set
|
|
|
+-# CONFIG_DEBUG_MEMORY_INIT is not set
|
|
|
+-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
|
+-CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Tracers
|
|
|
+-#
|
|
|
+-CONFIG_DYNAMIC_PRINTK_DEBUG=y
|
|
|
+-# CONFIG_SAMPLES is not set
|
|
|
+-CONFIG_HAVE_ARCH_KGDB=y
|
|
|
+-CONFIG_CMDLINE=""
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Security options
|
|
|
+-#
|
|
|
+-# CONFIG_KEYS is not set
|
|
|
+-# CONFIG_SECURITY is not set
|
|
|
+-# CONFIG_SECURITYFS is not set
|
|
|
+-CONFIG_SECURITY_FILE_CAPABILITIES=y
|
|
|
+-CONFIG_CRYPTO=y
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Crypto core or helper
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_FIPS=y
|
|
|
+-CONFIG_CRYPTO_ALGAPI=y
|
|
|
+-CONFIG_CRYPTO_AEAD=y
|
|
|
+-CONFIG_CRYPTO_BLKCIPHER=y
|
|
|
+-CONFIG_CRYPTO_HASH=y
|
|
|
+-CONFIG_CRYPTO_RNG=y
|
|
|
+-CONFIG_CRYPTO_MANAGER=y
|
|
|
+-CONFIG_CRYPTO_GF128MUL=m
|
|
|
+-# CONFIG_CRYPTO_NULL is not set
|
|
|
+-# CONFIG_CRYPTO_CRYPTD is not set
|
|
|
+-CONFIG_CRYPTO_AUTHENC=m
|
|
|
+-# CONFIG_CRYPTO_TEST is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Authenticated Encryption with Associated Data
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_CCM=m
|
|
|
+-CONFIG_CRYPTO_GCM=m
|
|
|
+-CONFIG_CRYPTO_SEQIV=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Block modes
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_CBC=m
|
|
|
+-CONFIG_CRYPTO_CTR=m
|
|
|
+-CONFIG_CRYPTO_CTS=m
|
|
|
+-CONFIG_CRYPTO_ECB=m
|
|
|
+-# CONFIG_CRYPTO_LRW is not set
|
|
|
+-CONFIG_CRYPTO_PCBC=m
|
|
|
+-CONFIG_CRYPTO_XTS=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Hash modes
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_HMAC=y
|
|
|
+-# CONFIG_CRYPTO_XCBC is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Digest
|
|
|
+-#
|
|
|
+-# CONFIG_CRYPTO_CRC32C is not set
|
|
|
+-# CONFIG_CRYPTO_MD4 is not set
|
|
|
+-CONFIG_CRYPTO_MD5=m
|
|
|
+-# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
|
|
+-CONFIG_CRYPTO_RMD128=m
|
|
|
+-CONFIG_CRYPTO_RMD160=m
|
|
|
+-CONFIG_CRYPTO_RMD256=m
|
|
|
+-CONFIG_CRYPTO_RMD320=m
|
|
|
+-CONFIG_CRYPTO_SHA1=m
|
|
|
+-# CONFIG_CRYPTO_SHA256 is not set
|
|
|
+-# CONFIG_CRYPTO_SHA512 is not set
|
|
|
+-# CONFIG_CRYPTO_TGR192 is not set
|
|
|
+-# CONFIG_CRYPTO_WP512 is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Ciphers
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_AES=m
|
|
|
+-# CONFIG_CRYPTO_ANUBIS is not set
|
|
|
+-CONFIG_CRYPTO_ARC4=m
|
|
|
+-# CONFIG_CRYPTO_BLOWFISH is not set
|
|
|
+-# CONFIG_CRYPTO_CAMELLIA is not set
|
|
|
+-# CONFIG_CRYPTO_CAST5 is not set
|
|
|
+-# CONFIG_CRYPTO_CAST6 is not set
|
|
|
+-CONFIG_CRYPTO_DES=m
|
|
|
+-# CONFIG_CRYPTO_FCRYPT is not set
|
|
|
+-# CONFIG_CRYPTO_KHAZAD is not set
|
|
|
+-CONFIG_CRYPTO_SALSA20=m
|
|
|
+-CONFIG_CRYPTO_SEED=m
|
|
|
+-# CONFIG_CRYPTO_SERPENT is not set
|
|
|
+-# CONFIG_CRYPTO_TEA is not set
|
|
|
+-# CONFIG_CRYPTO_TWOFISH is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Compression
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_DEFLATE=m
|
|
|
+-CONFIG_CRYPTO_LZO=m
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Random Number Generation
|
|
|
+-#
|
|
|
+-CONFIG_CRYPTO_ANSI_CPRNG=m
|
|
|
+-# CONFIG_CRYPTO_HW is not set
|
|
|
+-
|
|
|
+-#
|
|
|
+-# Library routines
|
|
|
+-#
|
|
|
+-CONFIG_BITREVERSE=y
|
|
|
+-CONFIG_CRC_CCITT=y
|
|
|
+-CONFIG_CRC16=m
|
|
|
+-# CONFIG_CRC_T10DIF is not set
|
|
|
+-CONFIG_CRC_ITU_T=m
|
|
|
+-CONFIG_CRC32=y
|
|
|
+-CONFIG_CRC7=m
|
|
|
+-# CONFIG_LIBCRC32C is not set
|
|
|
+-CONFIG_ZLIB_INFLATE=m
|
|
|
+-CONFIG_ZLIB_DEFLATE=m
|
|
|
+-CONFIG_LZO_COMPRESS=m
|
|
|
+-CONFIG_LZO_DECOMPRESS=m
|
|
|
+-CONFIG_TEXTSEARCH=y
|
|
|
+-CONFIG_TEXTSEARCH_KMP=m
|
|
|
+-CONFIG_TEXTSEARCH_BM=m
|
|
|
+-CONFIG_TEXTSEARCH_FSM=m
|
|
|
+-CONFIG_PLIST=y
|
|
|
+-CONFIG_HAS_IOMEM=y
|
|
|
+-CONFIG_HAS_IOPORT=y
|
|
|
+-CONFIG_HAS_DMA=y
|
|
|
+diff -Nur linux-2.6.30/arch/mips/configs/fuloong2e_defconfig rt4ls/arch/mips/configs/fuloong2e_defconfig
|
|
|
+--- linux-2.6.30/arch/mips/configs/fuloong2e_defconfig 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/configs/fuloong2e_defconfig 2009-06-12 16:27:08.246405134 +0200
|
|
|
+@@ -0,0 +1,2018 @@
|
|
|
++#
|
|
|
++# Automatically generated make config: don't edit
|
|
|
++# Linux kernel version: 2.6.30-rc8
|
|
|
++# Thu Jun 11 01:50:35 2009
|
|
|
++#
|
|
|
++CONFIG_MIPS=y
|
|
|
++
|
|
|
++#
|
|
|
++# Machine selection
|
|
|
++#
|
|
|
++# CONFIG_MACH_ALCHEMY is not set
|
|
|
++# CONFIG_BASLER_EXCITE is not set
|
|
|
++# CONFIG_BCM47XX is not set
|
|
|
++# CONFIG_MIPS_COBALT is not set
|
|
|
++# CONFIG_MACH_DECSTATION is not set
|
|
|
++# CONFIG_MACH_JAZZ is not set
|
|
|
++# CONFIG_LASAT is not set
|
|
|
++CONFIG_MACH_LOONGSON=y
|
|
|
++# CONFIG_MIPS_MALTA is not set
|
|
|
++# CONFIG_MIPS_SIM is not set
|
|
|
++# CONFIG_NEC_MARKEINS is not set
|
|
|
++# CONFIG_MACH_VR41XX is not set
|
|
|
++# CONFIG_NXP_STB220 is not set
|
|
|
++# CONFIG_NXP_STB225 is not set
|
|
|
++# CONFIG_PNX8550_JBS is not set
|
|
|
++# CONFIG_PNX8550_STB810 is not set
|
|
|
++# CONFIG_PMC_MSP is not set
|
|
|
++# CONFIG_PMC_YOSEMITE is not set
|
|
|
++# CONFIG_SGI_IP22 is not set
|
|
|
++# CONFIG_SGI_IP27 is not set
|
|
|
++# CONFIG_SGI_IP28 is not set
|
|
|
++# CONFIG_SGI_IP32 is not set
|
|
|
++# CONFIG_SIBYTE_CRHINE is not set
|
|
|
++# CONFIG_SIBYTE_CARMEL is not set
|
|
|
++# CONFIG_SIBYTE_CRHONE is not set
|
|
|
++# CONFIG_SIBYTE_RHONE is not set
|
|
|
++# CONFIG_SIBYTE_SWARM is not set
|
|
|
++# CONFIG_SIBYTE_LITTLESUR is not set
|
|
|
++# CONFIG_SIBYTE_SENTOSA is not set
|
|
|
++# CONFIG_SIBYTE_BIGSUR is not set
|
|
|
++# CONFIG_SNI_RM is not set
|
|
|
++# CONFIG_MACH_TX39XX is not set
|
|
|
++# CONFIG_MACH_TX49XX is not set
|
|
|
++# CONFIG_MIKROTIK_RB532 is not set
|
|
|
++# CONFIG_WR_PPMC is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
|
|
|
++CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
|
++CONFIG_LEMOTE_FULOONG2E=y
|
|
|
++# CONFIG_LEMOTE_FULOONG2F is not set
|
|
|
++# CONFIG_LEMOTE_YEELOONG2F is not set
|
|
|
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
|
|
++CONFIG_ARCH_SUPPORTS_OPROFILE=y
|
|
|
++CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|
|
++CONFIG_GENERIC_HWEIGHT=y
|
|
|
++CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS=y
|
|
|
++CONFIG_GENERIC_TIME=y
|
|
|
++CONFIG_GENERIC_CMOS_UPDATE=y
|
|
|
++CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
|
|
++CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
|
|
++CONFIG_CEVT_R4K_LIB=y
|
|
|
++CONFIG_CEVT_R4K=y
|
|
|
++CONFIG_CSRC_R4K_LIB=y
|
|
|
++CONFIG_CSRC_R4K=y
|
|
|
++CONFIG_DMA_NONCOHERENT=y
|
|
|
++CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
|
|
++CONFIG_EARLY_PRINTK=y
|
|
|
++CONFIG_SYS_HAS_EARLY_PRINTK=y
|
|
|
++# CONFIG_HOTPLUG_CPU is not set
|
|
|
++CONFIG_I8259=y
|
|
|
++# CONFIG_NO_IOPORT is not set
|
|
|
++CONFIG_GENERIC_ISA_DMA=y
|
|
|
++CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
|
|
|
++# CONFIG_CPU_BIG_ENDIAN is not set
|
|
|
++CONFIG_CPU_LITTLE_ENDIAN=y
|
|
|
++CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
|
|
++CONFIG_IRQ_CPU=y
|
|
|
++CONFIG_BOOT_ELF32=y
|
|
|
++CONFIG_MIPS_L1_CACHE_SHIFT=5
|
|
|
++
|
|
|
++#
|
|
|
++# CPU selection
|
|
|
++#
|
|
|
++CONFIG_CPU_LOONGSON2E=y
|
|
|
++# CONFIG_CPU_LOONGSON2F is not set
|
|
|
++# CONFIG_CPU_MIPS32_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS32_R2 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R2 is not set
|
|
|
++# CONFIG_CPU_R3000 is not set
|
|
|
++# CONFIG_CPU_TX39XX is not set
|
|
|
++# CONFIG_CPU_VR41XX is not set
|
|
|
++# CONFIG_CPU_R4300 is not set
|
|
|
++# CONFIG_CPU_R4X00 is not set
|
|
|
++# CONFIG_CPU_TX49XX is not set
|
|
|
++# CONFIG_CPU_R5000 is not set
|
|
|
++# CONFIG_CPU_R5432 is not set
|
|
|
++# CONFIG_CPU_R5500 is not set
|
|
|
++# CONFIG_CPU_R6000 is not set
|
|
|
++# CONFIG_CPU_NEVADA is not set
|
|
|
++# CONFIG_CPU_R8000 is not set
|
|
|
++# CONFIG_CPU_R10000 is not set
|
|
|
++# CONFIG_CPU_RM7000 is not set
|
|
|
++# CONFIG_CPU_RM9000 is not set
|
|
|
++# CONFIG_CPU_SB1 is not set
|
|
|
++# CONFIG_CPU_CAVIUM_OCTEON is not set
|
|
|
++CONFIG_CPU_LOONGSON2=y
|
|
|
++CONFIG_SYS_HAS_CPU_LOONGSON2E=y
|
|
|
++CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel type
|
|
|
++#
|
|
|
++# CONFIG_32BIT is not set
|
|
|
++CONFIG_64BIT=y
|
|
|
++# CONFIG_PAGE_SIZE_4KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_8KB is not set
|
|
|
++CONFIG_PAGE_SIZE_16KB=y
|
|
|
++# CONFIG_PAGE_SIZE_32KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_64KB is not set
|
|
|
++CONFIG_BOARD_SCACHE=y
|
|
|
++CONFIG_MIPS_MT_DISABLED=y
|
|
|
++# CONFIG_MIPS_MT_SMP is not set
|
|
|
++# CONFIG_MIPS_MT_SMTC is not set
|
|
|
++CONFIG_CPU_HAS_WB=y
|
|
|
++CONFIG_CPU_HAS_SYNC=y
|
|
|
++CONFIG_GENERIC_HARDIRQS=y
|
|
|
++CONFIG_GENERIC_IRQ_PROBE=y
|
|
|
++CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_SYS_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_ARCH_FLATMEM_ENABLE=y
|
|
|
++CONFIG_ARCH_POPULATES_NODE_MAP=y
|
|
|
++CONFIG_SELECT_MEMORY_MODEL=y
|
|
|
++CONFIG_FLATMEM_MANUAL=y
|
|
|
++# CONFIG_DISCONTIGMEM_MANUAL is not set
|
|
|
++# CONFIG_SPARSEMEM_MANUAL is not set
|
|
|
++CONFIG_FLATMEM=y
|
|
|
++CONFIG_FLAT_NODE_MEM_MAP=y
|
|
|
++CONFIG_SPARSEMEM_STATIC=y
|
|
|
++CONFIG_PAGEFLAGS_EXTENDED=y
|
|
|
++CONFIG_SPLIT_PTLOCK_CPUS=4
|
|
|
++CONFIG_PHYS_ADDR_T_64BIT=y
|
|
|
++CONFIG_ZONE_DMA_FLAG=0
|
|
|
++CONFIG_VIRT_TO_BUS=y
|
|
|
++CONFIG_UNEVICTABLE_LRU=y
|
|
|
++CONFIG_HAVE_MLOCK=y
|
|
|
++CONFIG_HAVE_MLOCKED_PAGE_BIT=y
|
|
|
++CONFIG_TICK_ONESHOT=y
|
|
|
++CONFIG_NO_HZ=y
|
|
|
++CONFIG_HIGH_RES_TIMERS=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
|
|
++# CONFIG_HZ_48 is not set
|
|
|
++# CONFIG_HZ_100 is not set
|
|
|
++# CONFIG_HZ_128 is not set
|
|
|
++CONFIG_HZ_250=y
|
|
|
++# CONFIG_HZ_256 is not set
|
|
|
++# CONFIG_HZ_1000 is not set
|
|
|
++# CONFIG_HZ_1024 is not set
|
|
|
++CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
|
|
++CONFIG_HZ=250
|
|
|
++# CONFIG_PREEMPT_NONE is not set
|
|
|
++CONFIG_PREEMPT_VOLUNTARY=y
|
|
|
++# CONFIG_PREEMPT is not set
|
|
|
++# CONFIG_KEXEC is not set
|
|
|
++CONFIG_SECCOMP=y
|
|
|
++CONFIG_LOCKDEP_SUPPORT=y
|
|
|
++CONFIG_STACKTRACE_SUPPORT=y
|
|
|
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
|
|
++
|
|
|
++#
|
|
|
++# General setup
|
|
|
++#
|
|
|
++CONFIG_EXPERIMENTAL=y
|
|
|
++CONFIG_BROKEN_ON_SMP=y
|
|
|
++CONFIG_INIT_ENV_ARG_LIMIT=32
|
|
|
++CONFIG_LOCALVERSION="-loongson2e"
|
|
|
++# CONFIG_LOCALVERSION_AUTO is not set
|
|
|
++CONFIG_SWAP=y
|
|
|
++CONFIG_SYSVIPC=y
|
|
|
++CONFIG_SYSVIPC_SYSCTL=y
|
|
|
++CONFIG_POSIX_MQUEUE=y
|
|
|
++CONFIG_POSIX_MQUEUE_SYSCTL=y
|
|
|
++CONFIG_BSD_PROCESS_ACCT=y
|
|
|
++# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
|
|
++# CONFIG_TASKSTATS is not set
|
|
|
++# CONFIG_AUDIT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RCU Subsystem
|
|
|
++#
|
|
|
++CONFIG_CLASSIC_RCU=y
|
|
|
++# CONFIG_TREE_RCU is not set
|
|
|
++# CONFIG_PREEMPT_RCU is not set
|
|
|
++# CONFIG_TREE_RCU_TRACE is not set
|
|
|
++# CONFIG_PREEMPT_RCU_TRACE is not set
|
|
|
++CONFIG_IKCONFIG=y
|
|
|
++CONFIG_IKCONFIG_PROC=y
|
|
|
++CONFIG_LOG_BUF_SHIFT=14
|
|
|
++# CONFIG_GROUP_SCHED is not set
|
|
|
++# CONFIG_CGROUPS is not set
|
|
|
++CONFIG_SYSFS_DEPRECATED=y
|
|
|
++CONFIG_SYSFS_DEPRECATED_V2=y
|
|
|
++# CONFIG_RELAY is not set
|
|
|
++CONFIG_NAMESPACES=y
|
|
|
++# CONFIG_UTS_NS is not set
|
|
|
++# CONFIG_IPC_NS is not set
|
|
|
++CONFIG_USER_NS=y
|
|
|
++CONFIG_PID_NS=y
|
|
|
++# CONFIG_NET_NS is not set
|
|
|
++# CONFIG_BLK_DEV_INITRD is not set
|
|
|
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
|
++CONFIG_SYSCTL=y
|
|
|
++CONFIG_ANON_INODES=y
|
|
|
++CONFIG_EMBEDDED=y
|
|
|
++CONFIG_SYSCTL_SYSCALL=y
|
|
|
++CONFIG_KALLSYMS=y
|
|
|
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
|
|
++# CONFIG_STRIP_ASM_SYMS is not set
|
|
|
++CONFIG_HOTPLUG=y
|
|
|
++CONFIG_PRINTK=y
|
|
|
++CONFIG_BUG=y
|
|
|
++CONFIG_ELF_CORE=y
|
|
|
++# CONFIG_PCSPKR_PLATFORM is not set
|
|
|
++CONFIG_BASE_FULL=y
|
|
|
++CONFIG_FUTEX=y
|
|
|
++CONFIG_EPOLL=y
|
|
|
++CONFIG_SIGNALFD=y
|
|
|
++CONFIG_TIMERFD=y
|
|
|
++CONFIG_EVENTFD=y
|
|
|
++CONFIG_SHMEM=y
|
|
|
++CONFIG_AIO=y
|
|
|
++CONFIG_VM_EVENT_COUNTERS=y
|
|
|
++CONFIG_PCI_QUIRKS=y
|
|
|
++# CONFIG_COMPAT_BRK is not set
|
|
|
++CONFIG_SLAB=y
|
|
|
++# CONFIG_SLUB is not set
|
|
|
++# CONFIG_SLOB is not set
|
|
|
++CONFIG_PROFILING=y
|
|
|
++CONFIG_TRACEPOINTS=y
|
|
|
++# CONFIG_MARKERS is not set
|
|
|
++CONFIG_OPROFILE=m
|
|
|
++CONFIG_HAVE_OPROFILE=y
|
|
|
++CONFIG_HAVE_SYSCALL_WRAPPERS=y
|
|
|
++# CONFIG_SLOW_WORK is not set
|
|
|
++# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
|
|
++CONFIG_SLABINFO=y
|
|
|
++CONFIG_RT_MUTEXES=y
|
|
|
++CONFIG_BASE_SMALL=0
|
|
|
++CONFIG_MODULES=y
|
|
|
++# CONFIG_MODULE_FORCE_LOAD is not set
|
|
|
++CONFIG_MODULE_UNLOAD=y
|
|
|
++CONFIG_MODULE_FORCE_UNLOAD=y
|
|
|
++# CONFIG_MODVERSIONS is not set
|
|
|
++# CONFIG_MODULE_SRCVERSION_ALL is not set
|
|
|
++CONFIG_BLOCK=y
|
|
|
++CONFIG_BLK_DEV_BSG=y
|
|
|
++# CONFIG_BLK_DEV_INTEGRITY is not set
|
|
|
++CONFIG_BLOCK_COMPAT=y
|
|
|
++
|
|
|
++#
|
|
|
++# IO Schedulers
|
|
|
++#
|
|
|
++CONFIG_IOSCHED_NOOP=y
|
|
|
++CONFIG_IOSCHED_AS=y
|
|
|
++CONFIG_IOSCHED_DEADLINE=y
|
|
|
++CONFIG_IOSCHED_CFQ=y
|
|
|
++# CONFIG_DEFAULT_AS is not set
|
|
|
++# CONFIG_DEFAULT_DEADLINE is not set
|
|
|
++CONFIG_DEFAULT_CFQ=y
|
|
|
++# CONFIG_DEFAULT_NOOP is not set
|
|
|
++CONFIG_DEFAULT_IOSCHED="cfq"
|
|
|
++CONFIG_FREEZER=y
|
|
|
++
|
|
|
++#
|
|
|
++# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
|
|
++#
|
|
|
++CONFIG_HW_HAS_PCI=y
|
|
|
++CONFIG_PCI=y
|
|
|
++CONFIG_PCI_DOMAINS=y
|
|
|
++# CONFIG_ARCH_SUPPORTS_MSI is not set
|
|
|
++CONFIG_PCI_LEGACY=y
|
|
|
++# CONFIG_PCI_STUB is not set
|
|
|
++# CONFIG_PCI_IOV is not set
|
|
|
++CONFIG_ISA=y
|
|
|
++CONFIG_MMU=y
|
|
|
++# CONFIG_PCCARD is not set
|
|
|
++# CONFIG_HOTPLUG_PCI is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Executable file formats
|
|
|
++#
|
|
|
++CONFIG_BINFMT_ELF=y
|
|
|
++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
|
|
++# CONFIG_HAVE_AOUT is not set
|
|
|
++CONFIG_BINFMT_MISC=y
|
|
|
++CONFIG_MIPS32_COMPAT=y
|
|
|
++CONFIG_COMPAT=y
|
|
|
++CONFIG_SYSVIPC_COMPAT=y
|
|
|
++CONFIG_MIPS32_O32=y
|
|
|
++CONFIG_MIPS32_N32=y
|
|
|
++CONFIG_BINFMT_ELF32=y
|
|
|
++
|
|
|
++#
|
|
|
++# Power management options
|
|
|
++#
|
|
|
++CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
|
++CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
|
++CONFIG_PM=y
|
|
|
++# CONFIG_PM_DEBUG is not set
|
|
|
++CONFIG_PM_SLEEP=y
|
|
|
++CONFIG_SUSPEND=y
|
|
|
++CONFIG_SUSPEND_FREEZER=y
|
|
|
++CONFIG_HIBERNATION=y
|
|
|
++CONFIG_PM_STD_PARTITION=""
|
|
|
++
|
|
|
++#
|
|
|
++# CPU Frequency scaling
|
|
|
++#
|
|
|
++# CONFIG_CPU_FREQ is not set
|
|
|
++CONFIG_NET=y
|
|
|
++
|
|
|
++#
|
|
|
++# Networking options
|
|
|
++#
|
|
|
++CONFIG_PACKET=y
|
|
|
++CONFIG_PACKET_MMAP=y
|
|
|
++CONFIG_UNIX=y
|
|
|
++CONFIG_XFRM=y
|
|
|
++# CONFIG_XFRM_USER is not set
|
|
|
++# CONFIG_XFRM_SUB_POLICY is not set
|
|
|
++# CONFIG_XFRM_MIGRATE is not set
|
|
|
++# CONFIG_XFRM_STATISTICS is not set
|
|
|
++# CONFIG_NET_KEY is not set
|
|
|
++CONFIG_INET=y
|
|
|
++CONFIG_IP_MULTICAST=y
|
|
|
++# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
|
++CONFIG_IP_FIB_HASH=y
|
|
|
++CONFIG_IP_PNP=y
|
|
|
++# CONFIG_IP_PNP_DHCP is not set
|
|
|
++CONFIG_IP_PNP_BOOTP=y
|
|
|
++# CONFIG_IP_PNP_RARP is not set
|
|
|
++CONFIG_NET_IPIP=m
|
|
|
++CONFIG_NET_IPGRE=m
|
|
|
++CONFIG_NET_IPGRE_BROADCAST=y
|
|
|
++# CONFIG_IP_MROUTE is not set
|
|
|
++# CONFIG_ARPD is not set
|
|
|
++# CONFIG_SYN_COOKIES is not set
|
|
|
++# CONFIG_INET_AH is not set
|
|
|
++# CONFIG_INET_ESP is not set
|
|
|
++# CONFIG_INET_IPCOMP is not set
|
|
|
++# CONFIG_INET_XFRM_TUNNEL is not set
|
|
|
++CONFIG_INET_TUNNEL=m
|
|
|
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
|
|
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
|
|
++CONFIG_INET_XFRM_MODE_BEET=y
|
|
|
++# CONFIG_INET_LRO is not set
|
|
|
++# CONFIG_INET_DIAG is not set
|
|
|
++# CONFIG_TCP_CONG_ADVANCED is not set
|
|
|
++CONFIG_TCP_CONG_CUBIC=y
|
|
|
++CONFIG_DEFAULT_TCP_CONG="cubic"
|
|
|
++# CONFIG_TCP_MD5SIG is not set
|
|
|
++# CONFIG_IPV6 is not set
|
|
|
++# CONFIG_NETWORK_SECMARK is not set
|
|
|
++CONFIG_NETFILTER=y
|
|
|
++# CONFIG_NETFILTER_DEBUG is not set
|
|
|
++CONFIG_NETFILTER_ADVANCED=y
|
|
|
++
|
|
|
++#
|
|
|
++# Core Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_NETFILTER_NETLINK=m
|
|
|
++CONFIG_NETFILTER_NETLINK_QUEUE=m
|
|
|
++CONFIG_NETFILTER_NETLINK_LOG=m
|
|
|
++# CONFIG_NF_CONNTRACK is not set
|
|
|
++# CONFIG_NETFILTER_TPROXY is not set
|
|
|
++CONFIG_NETFILTER_XTABLES=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_HL=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_MARK=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_RATEEST=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_TRACE=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_HL=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MARK=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_OWNER=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_REALM=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_RECENT=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_SCTP=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_TIME=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_U32=m
|
|
|
++# CONFIG_IP_VS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# IP: Netfilter Configuration
|
|
|
++#
|
|
|
++# CONFIG_NF_DEFRAG_IPV4 is not set
|
|
|
++CONFIG_IP_NF_QUEUE=m
|
|
|
++CONFIG_IP_NF_IPTABLES=m
|
|
|
++CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
|
|
++CONFIG_IP_NF_MATCH_AH=m
|
|
|
++CONFIG_IP_NF_MATCH_ECN=m
|
|
|
++CONFIG_IP_NF_MATCH_TTL=m
|
|
|
++CONFIG_IP_NF_FILTER=m
|
|
|
++CONFIG_IP_NF_TARGET_REJECT=m
|
|
|
++CONFIG_IP_NF_TARGET_LOG=m
|
|
|
++CONFIG_IP_NF_TARGET_ULOG=m
|
|
|
++CONFIG_IP_NF_MANGLE=m
|
|
|
++CONFIG_IP_NF_TARGET_ECN=m
|
|
|
++CONFIG_IP_NF_TARGET_TTL=m
|
|
|
++CONFIG_IP_NF_RAW=m
|
|
|
++CONFIG_IP_NF_ARPTABLES=m
|
|
|
++CONFIG_IP_NF_ARPFILTER=m
|
|
|
++CONFIG_IP_NF_ARP_MANGLE=m
|
|
|
++# CONFIG_IP_DCCP is not set
|
|
|
++# CONFIG_IP_SCTP is not set
|
|
|
++# CONFIG_TIPC is not set
|
|
|
++# CONFIG_ATM is not set
|
|
|
++# CONFIG_BRIDGE is not set
|
|
|
++# CONFIG_NET_DSA is not set
|
|
|
++# CONFIG_VLAN_8021Q is not set
|
|
|
++# CONFIG_DECNET is not set
|
|
|
++# CONFIG_LLC2 is not set
|
|
|
++# CONFIG_IPX is not set
|
|
|
++# CONFIG_ATALK is not set
|
|
|
++# CONFIG_X25 is not set
|
|
|
++# CONFIG_LAPB is not set
|
|
|
++# CONFIG_ECONET is not set
|
|
|
++# CONFIG_WAN_ROUTER is not set
|
|
|
++CONFIG_PHONET=m
|
|
|
++# CONFIG_NET_SCHED is not set
|
|
|
++CONFIG_NET_CLS_ROUTE=y
|
|
|
++# CONFIG_DCB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Network testing
|
|
|
++#
|
|
|
++# CONFIG_NET_PKTGEN is not set
|
|
|
++# CONFIG_NET_DROP_MONITOR is not set
|
|
|
++# CONFIG_HAMRADIO is not set
|
|
|
++# CONFIG_CAN is not set
|
|
|
++# CONFIG_IRDA is not set
|
|
|
++# CONFIG_BT is not set
|
|
|
++# CONFIG_AF_RXRPC is not set
|
|
|
++CONFIG_WIRELESS=y
|
|
|
++# CONFIG_CFG80211 is not set
|
|
|
++CONFIG_WIRELESS_OLD_REGULATORY=y
|
|
|
++CONFIG_WIRELESS_EXT=y
|
|
|
++CONFIG_WIRELESS_EXT_SYSFS=y
|
|
|
++# CONFIG_LIB80211 is not set
|
|
|
++# CONFIG_MAC80211 is not set
|
|
|
++# CONFIG_WIMAX is not set
|
|
|
++# CONFIG_RFKILL is not set
|
|
|
++CONFIG_NET_9P=m
|
|
|
++# CONFIG_NET_9P_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Device Drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Generic Driver Options
|
|
|
++#
|
|
|
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
|
++CONFIG_STANDALONE=y
|
|
|
++CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|
|
++CONFIG_FW_LOADER=m
|
|
|
++CONFIG_FIRMWARE_IN_KERNEL=y
|
|
|
++CONFIG_EXTRA_FIRMWARE=""
|
|
|
++# CONFIG_SYS_HYPERVISOR is not set
|
|
|
++# CONFIG_CONNECTOR is not set
|
|
|
++CONFIG_MTD=m
|
|
|
++# CONFIG_MTD_DEBUG is not set
|
|
|
++# CONFIG_MTD_CONCAT is not set
|
|
|
++# CONFIG_MTD_PARTITIONS is not set
|
|
|
++# CONFIG_MTD_TESTS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# User Modules And Translation Layers
|
|
|
++#
|
|
|
++CONFIG_MTD_CHAR=m
|
|
|
++CONFIG_MTD_BLKDEVS=m
|
|
|
++CONFIG_MTD_BLOCK=m
|
|
|
++# CONFIG_MTD_BLOCK_RO is not set
|
|
|
++# CONFIG_FTL is not set
|
|
|
++# CONFIG_NFTL is not set
|
|
|
++# CONFIG_INFTL is not set
|
|
|
++# CONFIG_RFD_FTL is not set
|
|
|
++# CONFIG_SSFDC is not set
|
|
|
++# CONFIG_MTD_OOPS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RAM/ROM/Flash chip drivers
|
|
|
++#
|
|
|
++CONFIG_MTD_CFI=m
|
|
|
++CONFIG_MTD_JEDECPROBE=m
|
|
|
++CONFIG_MTD_GEN_PROBE=m
|
|
|
++CONFIG_MTD_CFI_ADV_OPTIONS=y
|
|
|
++CONFIG_MTD_CFI_NOSWAP=y
|
|
|
++# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
|
|
|
++# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
|
|
|
++# CONFIG_MTD_CFI_GEOMETRY is not set
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
|
|
++CONFIG_MTD_CFI_I1=y
|
|
|
++CONFIG_MTD_CFI_I2=y
|
|
|
++# CONFIG_MTD_CFI_I4 is not set
|
|
|
++# CONFIG_MTD_CFI_I8 is not set
|
|
|
++# CONFIG_MTD_OTP is not set
|
|
|
++# CONFIG_MTD_CFI_INTELEXT is not set
|
|
|
++CONFIG_MTD_CFI_AMDSTD=m
|
|
|
++CONFIG_MTD_CFI_STAA=m
|
|
|
++CONFIG_MTD_CFI_UTIL=m
|
|
|
++# CONFIG_MTD_RAM is not set
|
|
|
++# CONFIG_MTD_ROM is not set
|
|
|
++# CONFIG_MTD_ABSENT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Mapping drivers for chip access
|
|
|
++#
|
|
|
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
|
|
++CONFIG_MTD_PHYSMAP=m
|
|
|
++# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
|
|
++# CONFIG_MTD_INTEL_VR_NOR is not set
|
|
|
++# CONFIG_MTD_PLATRAM is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Self-contained MTD device drivers
|
|
|
++#
|
|
|
++# CONFIG_MTD_PMC551 is not set
|
|
|
++# CONFIG_MTD_SLRAM is not set
|
|
|
++# CONFIG_MTD_PHRAM is not set
|
|
|
++# CONFIG_MTD_MTDRAM is not set
|
|
|
++# CONFIG_MTD_BLOCK2MTD is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Disk-On-Chip Device Drivers
|
|
|
++#
|
|
|
++# CONFIG_MTD_DOC2000 is not set
|
|
|
++# CONFIG_MTD_DOC2001 is not set
|
|
|
++# CONFIG_MTD_DOC2001PLUS is not set
|
|
|
++# CONFIG_MTD_NAND is not set
|
|
|
++# CONFIG_MTD_ONENAND is not set
|
|
|
++
|
|
|
++#
|
|
|
++# LPDDR flash memory drivers
|
|
|
++#
|
|
|
++# CONFIG_MTD_LPDDR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# UBI - Unsorted block images
|
|
|
++#
|
|
|
++# CONFIG_MTD_UBI is not set
|
|
|
++# CONFIG_PARPORT is not set
|
|
|
++# CONFIG_PNP is not set
|
|
|
++CONFIG_BLK_DEV=y
|
|
|
++# CONFIG_BLK_CPQ_DA is not set
|
|
|
++# CONFIG_BLK_CPQ_CISS_DA is not set
|
|
|
++# CONFIG_BLK_DEV_DAC960 is not set
|
|
|
++# CONFIG_BLK_DEV_UMEM is not set
|
|
|
++# CONFIG_BLK_DEV_COW_COMMON is not set
|
|
|
++CONFIG_BLK_DEV_LOOP=y
|
|
|
++CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|
|
++# CONFIG_BLK_DEV_NBD is not set
|
|
|
++# CONFIG_BLK_DEV_SX8 is not set
|
|
|
++# CONFIG_BLK_DEV_UB is not set
|
|
|
++CONFIG_BLK_DEV_RAM=m
|
|
|
++CONFIG_BLK_DEV_RAM_COUNT=16
|
|
|
++CONFIG_BLK_DEV_RAM_SIZE=4096
|
|
|
++# CONFIG_BLK_DEV_XIP is not set
|
|
|
++CONFIG_CDROM_PKTCDVD=m
|
|
|
++CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
|
|
++# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
|
|
++CONFIG_ATA_OVER_ETH=m
|
|
|
++# CONFIG_BLK_DEV_HD is not set
|
|
|
++# CONFIG_MISC_DEVICES is not set
|
|
|
++CONFIG_HAVE_IDE=y
|
|
|
++CONFIG_IDE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Please see Documentation/ide/ide.txt for help/info on IDE drives
|
|
|
++#
|
|
|
++CONFIG_IDE_XFER_MODE=y
|
|
|
++CONFIG_IDE_TIMINGS=y
|
|
|
++CONFIG_IDE_ATAPI=y
|
|
|
++# CONFIG_BLK_DEV_IDE_SATA is not set
|
|
|
++CONFIG_IDE_GD=y
|
|
|
++CONFIG_IDE_GD_ATA=y
|
|
|
++# CONFIG_IDE_GD_ATAPI is not set
|
|
|
++CONFIG_BLK_DEV_IDECD=y
|
|
|
++CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
|
|
|
++# CONFIG_BLK_DEV_IDETAPE is not set
|
|
|
++CONFIG_IDE_TASK_IOCTL=y
|
|
|
++CONFIG_IDE_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# IDE chipset support/bugfixes
|
|
|
++#
|
|
|
++CONFIG_IDE_GENERIC=y
|
|
|
++# CONFIG_BLK_DEV_PLATFORM is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_SFF=y
|
|
|
++
|
|
|
++#
|
|
|
++# PCI IDE chipsets support
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_IDEPCI=y
|
|
|
++CONFIG_IDEPCI_PCIBUS_ORDER=y
|
|
|
++# CONFIG_BLK_DEV_OFFBOARD is not set
|
|
|
++CONFIG_BLK_DEV_GENERIC=y
|
|
|
++# CONFIG_BLK_DEV_OPTI621 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_PCI=y
|
|
|
++# CONFIG_BLK_DEV_AEC62XX is not set
|
|
|
++# CONFIG_BLK_DEV_ALI15X3 is not set
|
|
|
++# CONFIG_BLK_DEV_AMD74XX is not set
|
|
|
++# CONFIG_BLK_DEV_CMD64X is not set
|
|
|
++# CONFIG_BLK_DEV_TRIFLEX is not set
|
|
|
++# CONFIG_BLK_DEV_CS5520 is not set
|
|
|
++# CONFIG_BLK_DEV_CS5530 is not set
|
|
|
++# CONFIG_BLK_DEV_HPT366 is not set
|
|
|
++# CONFIG_BLK_DEV_JMICRON is not set
|
|
|
++# CONFIG_BLK_DEV_SC1200 is not set
|
|
|
++# CONFIG_BLK_DEV_PIIX is not set
|
|
|
++# CONFIG_BLK_DEV_IT8172 is not set
|
|
|
++# CONFIG_BLK_DEV_IT8213 is not set
|
|
|
++# CONFIG_BLK_DEV_IT821X is not set
|
|
|
++# CONFIG_BLK_DEV_NS87415 is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
|
|
++# CONFIG_BLK_DEV_SVWKS is not set
|
|
|
++# CONFIG_BLK_DEV_SIIMAGE is not set
|
|
|
++# CONFIG_BLK_DEV_SLC90E66 is not set
|
|
|
++# CONFIG_BLK_DEV_TRM290 is not set
|
|
|
++CONFIG_BLK_DEV_VIA82CXXX=y
|
|
|
++# CONFIG_BLK_DEV_TC86C001 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Other IDE chipsets support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Note: most of these also require special kernel boot parameters
|
|
|
++#
|
|
|
++# CONFIG_BLK_DEV_4DRIVES is not set
|
|
|
++# CONFIG_BLK_DEV_ALI14XX is not set
|
|
|
++# CONFIG_BLK_DEV_DTC2278 is not set
|
|
|
++# CONFIG_BLK_DEV_HT6560B is not set
|
|
|
++# CONFIG_BLK_DEV_QD65XX is not set
|
|
|
++# CONFIG_BLK_DEV_UMC8672 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI device support
|
|
|
++#
|
|
|
++# CONFIG_RAID_ATTRS is not set
|
|
|
++CONFIG_SCSI=y
|
|
|
++CONFIG_SCSI_DMA=y
|
|
|
++# CONFIG_SCSI_TGT is not set
|
|
|
++# CONFIG_SCSI_NETLINK is not set
|
|
|
++CONFIG_SCSI_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI support type (disk, tape, CD-ROM)
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_SD=y
|
|
|
++# CONFIG_CHR_DEV_ST is not set
|
|
|
++# CONFIG_CHR_DEV_OSST is not set
|
|
|
++CONFIG_BLK_DEV_SR=y
|
|
|
++CONFIG_BLK_DEV_SR_VENDOR=y
|
|
|
++CONFIG_CHR_DEV_SG=y
|
|
|
++# CONFIG_CHR_DEV_SCH is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
|
|
++#
|
|
|
++# CONFIG_SCSI_MULTI_LUN is not set
|
|
|
++CONFIG_SCSI_CONSTANTS=y
|
|
|
++# CONFIG_SCSI_LOGGING is not set
|
|
|
++# CONFIG_SCSI_SCAN_ASYNC is not set
|
|
|
++CONFIG_SCSI_WAIT_SCAN=m
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI Transports
|
|
|
++#
|
|
|
++# CONFIG_SCSI_SPI_ATTRS is not set
|
|
|
++# CONFIG_SCSI_FC_ATTRS is not set
|
|
|
++# CONFIG_SCSI_ISCSI_ATTRS is not set
|
|
|
++# CONFIG_SCSI_SAS_ATTRS is not set
|
|
|
++# CONFIG_SCSI_SAS_LIBSAS is not set
|
|
|
++# CONFIG_SCSI_SRP_ATTRS is not set
|
|
|
++# CONFIG_SCSI_LOWLEVEL is not set
|
|
|
++# CONFIG_SCSI_DH is not set
|
|
|
++# CONFIG_SCSI_OSD_INITIATOR is not set
|
|
|
++# CONFIG_ATA is not set
|
|
|
++# CONFIG_MD is not set
|
|
|
++# CONFIG_FUSION is not set
|
|
|
++
|
|
|
++#
|
|
|
++# IEEE 1394 (FireWire) support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Enable only one of the two stacks, unless you know what you are doing
|
|
|
++#
|
|
|
++# CONFIG_FIREWIRE is not set
|
|
|
++# CONFIG_IEEE1394 is not set
|
|
|
++# CONFIG_I2O is not set
|
|
|
++CONFIG_NETDEVICES=y
|
|
|
++CONFIG_COMPAT_NET_DEV_OPS=y
|
|
|
++# CONFIG_DUMMY is not set
|
|
|
++# CONFIG_BONDING is not set
|
|
|
++CONFIG_MACVLAN=m
|
|
|
++# CONFIG_EQUALIZER is not set
|
|
|
++# CONFIG_TUN is not set
|
|
|
++CONFIG_VETH=m
|
|
|
++# CONFIG_ARCNET is not set
|
|
|
++CONFIG_PHYLIB=m
|
|
|
++
|
|
|
++#
|
|
|
++# MII PHY device drivers
|
|
|
++#
|
|
|
++CONFIG_MARVELL_PHY=m
|
|
|
++CONFIG_DAVICOM_PHY=m
|
|
|
++CONFIG_QSEMI_PHY=m
|
|
|
++CONFIG_LXT_PHY=m
|
|
|
++CONFIG_CICADA_PHY=m
|
|
|
++# CONFIG_VITESSE_PHY is not set
|
|
|
++# CONFIG_SMSC_PHY is not set
|
|
|
++# CONFIG_BROADCOM_PHY is not set
|
|
|
++# CONFIG_ICPLUS_PHY is not set
|
|
|
++# CONFIG_REALTEK_PHY is not set
|
|
|
++# CONFIG_NATIONAL_PHY is not set
|
|
|
++# CONFIG_STE10XP is not set
|
|
|
++# CONFIG_LSI_ET1011C_PHY is not set
|
|
|
++# CONFIG_MDIO_BITBANG is not set
|
|
|
++CONFIG_NET_ETHERNET=y
|
|
|
++CONFIG_MII=y
|
|
|
++# CONFIG_AX88796 is not set
|
|
|
++# CONFIG_HAPPYMEAL is not set
|
|
|
++# CONFIG_SUNGEM is not set
|
|
|
++# CONFIG_CASSINI is not set
|
|
|
++# CONFIG_NET_VENDOR_3COM is not set
|
|
|
++# CONFIG_NET_VENDOR_SMC is not set
|
|
|
++# CONFIG_SMC91X is not set
|
|
|
++# CONFIG_DM9000 is not set
|
|
|
++# CONFIG_ETHOC is not set
|
|
|
++# CONFIG_NET_VENDOR_RACAL is not set
|
|
|
++# CONFIG_DNET is not set
|
|
|
++# CONFIG_NET_TULIP is not set
|
|
|
++# CONFIG_AT1700 is not set
|
|
|
++# CONFIG_DEPCA is not set
|
|
|
++# CONFIG_HP100 is not set
|
|
|
++# CONFIG_NET_ISA is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_TAH is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
|
|
++CONFIG_NET_PCI=y
|
|
|
++# CONFIG_PCNET32 is not set
|
|
|
++# CONFIG_AMD8111_ETH is not set
|
|
|
++# CONFIG_ADAPTEC_STARFIRE is not set
|
|
|
++# CONFIG_AC3200 is not set
|
|
|
++# CONFIG_APRICOT is not set
|
|
|
++# CONFIG_B44 is not set
|
|
|
++# CONFIG_FORCEDETH is not set
|
|
|
++# CONFIG_CS89x0 is not set
|
|
|
++# CONFIG_TC35815 is not set
|
|
|
++# CONFIG_E100 is not set
|
|
|
++# CONFIG_FEALNX is not set
|
|
|
++# CONFIG_NATSEMI is not set
|
|
|
++# CONFIG_NE2K_PCI is not set
|
|
|
++# CONFIG_8139CP is not set
|
|
|
++CONFIG_8139TOO=y
|
|
|
++# CONFIG_8139TOO_PIO is not set
|
|
|
++# CONFIG_8139TOO_TUNE_TWISTER is not set
|
|
|
++# CONFIG_8139TOO_8129 is not set
|
|
|
++# CONFIG_8139_OLD_RX_RESET is not set
|
|
|
++# CONFIG_R6040 is not set
|
|
|
++# CONFIG_SIS900 is not set
|
|
|
++# CONFIG_EPIC100 is not set
|
|
|
++# CONFIG_SMSC9420 is not set
|
|
|
++# CONFIG_SUNDANCE is not set
|
|
|
++# CONFIG_TLAN is not set
|
|
|
++# CONFIG_VIA_RHINE is not set
|
|
|
++# CONFIG_SC92031 is not set
|
|
|
++# CONFIG_ATL2 is not set
|
|
|
++CONFIG_NETDEV_1000=y
|
|
|
++# CONFIG_ACENIC is not set
|
|
|
++# CONFIG_DL2K is not set
|
|
|
++# CONFIG_E1000 is not set
|
|
|
++# CONFIG_E1000E is not set
|
|
|
++# CONFIG_IP1000 is not set
|
|
|
++# CONFIG_IGB is not set
|
|
|
++# CONFIG_IGBVF is not set
|
|
|
++# CONFIG_NS83820 is not set
|
|
|
++# CONFIG_HAMACHI is not set
|
|
|
++# CONFIG_YELLOWFIN is not set
|
|
|
++# CONFIG_R8169 is not set
|
|
|
++# CONFIG_SIS190 is not set
|
|
|
++# CONFIG_SKGE is not set
|
|
|
++# CONFIG_SKY2 is not set
|
|
|
++# CONFIG_VIA_VELOCITY is not set
|
|
|
++# CONFIG_TIGON3 is not set
|
|
|
++# CONFIG_BNX2 is not set
|
|
|
++# CONFIG_QLA3XXX is not set
|
|
|
++# CONFIG_ATL1 is not set
|
|
|
++# CONFIG_ATL1E is not set
|
|
|
++# CONFIG_ATL1C is not set
|
|
|
++# CONFIG_JME is not set
|
|
|
++CONFIG_NETDEV_10000=y
|
|
|
++# CONFIG_CHELSIO_T1 is not set
|
|
|
++CONFIG_CHELSIO_T3_DEPENDS=y
|
|
|
++# CONFIG_CHELSIO_T3 is not set
|
|
|
++# CONFIG_ENIC is not set
|
|
|
++# CONFIG_IXGBE is not set
|
|
|
++# CONFIG_IXGB is not set
|
|
|
++# CONFIG_S2IO is not set
|
|
|
++# CONFIG_VXGE is not set
|
|
|
++# CONFIG_MYRI10GE is not set
|
|
|
++# CONFIG_NETXEN_NIC is not set
|
|
|
++# CONFIG_NIU is not set
|
|
|
++# CONFIG_MLX4_EN is not set
|
|
|
++# CONFIG_MLX4_CORE is not set
|
|
|
++# CONFIG_TEHUTI is not set
|
|
|
++# CONFIG_BNX2X is not set
|
|
|
++# CONFIG_QLGE is not set
|
|
|
++# CONFIG_SFC is not set
|
|
|
++# CONFIG_BE2NET is not set
|
|
|
++# CONFIG_TR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Wireless LAN
|
|
|
++#
|
|
|
++# CONFIG_WLAN_PRE80211 is not set
|
|
|
++# CONFIG_WLAN_80211 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Enable WiMAX (Networking options) to see the WiMAX drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# USB Network Adapters
|
|
|
++#
|
|
|
++# CONFIG_USB_CATC is not set
|
|
|
++# CONFIG_USB_KAWETH is not set
|
|
|
++# CONFIG_USB_PEGASUS is not set
|
|
|
++# CONFIG_USB_RTL8150 is not set
|
|
|
++# CONFIG_USB_USBNET is not set
|
|
|
++# CONFIG_WAN is not set
|
|
|
++# CONFIG_FDDI is not set
|
|
|
++# CONFIG_HIPPI is not set
|
|
|
++CONFIG_PPP=m
|
|
|
++CONFIG_PPP_MULTILINK=y
|
|
|
++CONFIG_PPP_FILTER=y
|
|
|
++CONFIG_PPP_ASYNC=m
|
|
|
++CONFIG_PPP_SYNC_TTY=m
|
|
|
++CONFIG_PPP_DEFLATE=m
|
|
|
++CONFIG_PPP_BSDCOMP=m
|
|
|
++CONFIG_PPP_MPPE=m
|
|
|
++CONFIG_PPPOE=m
|
|
|
++CONFIG_PPPOL2TP=m
|
|
|
++CONFIG_SLIP=m
|
|
|
++CONFIG_SLIP_COMPRESSED=y
|
|
|
++CONFIG_SLHC=m
|
|
|
++CONFIG_SLIP_SMART=y
|
|
|
++CONFIG_SLIP_MODE_SLIP6=y
|
|
|
++CONFIG_NET_FC=y
|
|
|
++# CONFIG_NETCONSOLE is not set
|
|
|
++# CONFIG_NETPOLL is not set
|
|
|
++# CONFIG_NET_POLL_CONTROLLER is not set
|
|
|
++# CONFIG_ISDN is not set
|
|
|
++# CONFIG_PHONE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input device support
|
|
|
++#
|
|
|
++CONFIG_INPUT=y
|
|
|
++CONFIG_INPUT_FF_MEMLESS=y
|
|
|
++# CONFIG_INPUT_POLLDEV is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Userland interfaces
|
|
|
++#
|
|
|
++CONFIG_INPUT_MOUSEDEV=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|
|
++# CONFIG_INPUT_JOYDEV is not set
|
|
|
++# CONFIG_INPUT_EVDEV is not set
|
|
|
++# CONFIG_INPUT_EVBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input Device Drivers
|
|
|
++#
|
|
|
++CONFIG_INPUT_KEYBOARD=y
|
|
|
++CONFIG_KEYBOARD_ATKBD=m
|
|
|
++# CONFIG_KEYBOARD_SUNKBD is not set
|
|
|
++# CONFIG_KEYBOARD_LKKBD is not set
|
|
|
++# CONFIG_KEYBOARD_XTKBD is not set
|
|
|
++# CONFIG_KEYBOARD_NEWTON is not set
|
|
|
++# CONFIG_KEYBOARD_STOWAWAY is not set
|
|
|
++CONFIG_INPUT_MOUSE=y
|
|
|
++CONFIG_MOUSE_PS2=y
|
|
|
++CONFIG_MOUSE_PS2_ALPS=y
|
|
|
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
|
|
++CONFIG_MOUSE_PS2_SYNAPTICS=y
|
|
|
++CONFIG_MOUSE_PS2_TRACKPOINT=y
|
|
|
++# CONFIG_MOUSE_PS2_ELANTECH is not set
|
|
|
++# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
|
|
++CONFIG_MOUSE_SERIAL=y
|
|
|
++# CONFIG_MOUSE_APPLETOUCH is not set
|
|
|
++# CONFIG_MOUSE_BCM5974 is not set
|
|
|
++# CONFIG_MOUSE_INPORT is not set
|
|
|
++# CONFIG_MOUSE_LOGIBM is not set
|
|
|
++# CONFIG_MOUSE_PC110PAD is not set
|
|
|
++# CONFIG_MOUSE_VSXXXAA is not set
|
|
|
++# CONFIG_INPUT_JOYSTICK is not set
|
|
|
++# CONFIG_INPUT_TABLET is not set
|
|
|
++# CONFIG_INPUT_TOUCHSCREEN is not set
|
|
|
++# CONFIG_INPUT_MISC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Hardware I/O ports
|
|
|
++#
|
|
|
++CONFIG_SERIO=y
|
|
|
++CONFIG_SERIO_I8042=y
|
|
|
++CONFIG_SERIO_SERPORT=y
|
|
|
++# CONFIG_SERIO_PCIPS2 is not set
|
|
|
++CONFIG_SERIO_LIBPS2=y
|
|
|
++# CONFIG_SERIO_RAW is not set
|
|
|
++# CONFIG_GAMEPORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Character devices
|
|
|
++#
|
|
|
++CONFIG_VT=y
|
|
|
++CONFIG_CONSOLE_TRANSLATIONS=y
|
|
|
++CONFIG_VT_CONSOLE=y
|
|
|
++CONFIG_HW_CONSOLE=y
|
|
|
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
|
|
++CONFIG_DEVKMEM=y
|
|
|
++# CONFIG_SERIAL_NONSTANDARD is not set
|
|
|
++# CONFIG_NOZOMI is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Serial drivers
|
|
|
++#
|
|
|
++CONFIG_SERIAL_8250=y
|
|
|
++CONFIG_SERIAL_8250_CONSOLE=y
|
|
|
++CONFIG_SERIAL_8250_PCI=y
|
|
|
++CONFIG_SERIAL_8250_NR_UARTS=2
|
|
|
++CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
|
|
++# CONFIG_SERIAL_8250_EXTENDED is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Non-8250 serial port support
|
|
|
++#
|
|
|
++CONFIG_SERIAL_CORE=y
|
|
|
++CONFIG_SERIAL_CORE_CONSOLE=y
|
|
|
++# CONFIG_SERIAL_JSM is not set
|
|
|
++CONFIG_UNIX98_PTYS=y
|
|
|
++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
|
|
++CONFIG_LEGACY_PTYS=y
|
|
|
++CONFIG_LEGACY_PTY_COUNT=256
|
|
|
++# CONFIG_IPMI_HANDLER is not set
|
|
|
++CONFIG_HW_RANDOM=y
|
|
|
++# CONFIG_HW_RANDOM_TIMERIOMEM is not set
|
|
|
++# CONFIG_DTLK is not set
|
|
|
++# CONFIG_R3964 is not set
|
|
|
++# CONFIG_APPLICOM is not set
|
|
|
++# CONFIG_RAW_DRIVER is not set
|
|
|
++# CONFIG_TCG_TPM is not set
|
|
|
++CONFIG_DEVPORT=y
|
|
|
++CONFIG_I2C=m
|
|
|
++CONFIG_I2C_BOARDINFO=y
|
|
|
++CONFIG_I2C_CHARDEV=m
|
|
|
++CONFIG_I2C_HELPER_AUTO=y
|
|
|
++
|
|
|
++#
|
|
|
++# I2C Hardware Bus support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# PC SMBus host controller drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_ALI1535 is not set
|
|
|
++# CONFIG_I2C_ALI1563 is not set
|
|
|
++# CONFIG_I2C_ALI15X3 is not set
|
|
|
++# CONFIG_I2C_AMD756 is not set
|
|
|
++# CONFIG_I2C_AMD8111 is not set
|
|
|
++# CONFIG_I2C_I801 is not set
|
|
|
++# CONFIG_I2C_ISCH is not set
|
|
|
++# CONFIG_I2C_PIIX4 is not set
|
|
|
++# CONFIG_I2C_NFORCE2 is not set
|
|
|
++# CONFIG_I2C_SIS5595 is not set
|
|
|
++# CONFIG_I2C_SIS630 is not set
|
|
|
++# CONFIG_I2C_SIS96X is not set
|
|
|
++# CONFIG_I2C_VIA is not set
|
|
|
++CONFIG_I2C_VIAPRO=m
|
|
|
++
|
|
|
++#
|
|
|
++# I2C system bus drivers (mostly embedded / system-on-chip)
|
|
|
++#
|
|
|
++# CONFIG_I2C_OCORES is not set
|
|
|
++# CONFIG_I2C_SIMTEC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# External I2C/SMBus adapter drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_PARPORT_LIGHT is not set
|
|
|
++# CONFIG_I2C_TAOS_EVM is not set
|
|
|
++# CONFIG_I2C_TINY_USB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics adapter I2C/DDC channel drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_VOODOO3 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Other I2C/SMBus bus drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_ELEKTOR is not set
|
|
|
++# CONFIG_I2C_PCA_ISA is not set
|
|
|
++# CONFIG_I2C_PCA_PLATFORM is not set
|
|
|
++# CONFIG_I2C_STUB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous I2C Chip support
|
|
|
++#
|
|
|
++# CONFIG_DS1682 is not set
|
|
|
++# CONFIG_SENSORS_PCF8574 is not set
|
|
|
++# CONFIG_PCF8575 is not set
|
|
|
++# CONFIG_SENSORS_PCA9539 is not set
|
|
|
++# CONFIG_SENSORS_MAX6875 is not set
|
|
|
++# CONFIG_SENSORS_TSL2550 is not set
|
|
|
++# CONFIG_I2C_DEBUG_CORE is not set
|
|
|
++# CONFIG_I2C_DEBUG_ALGO is not set
|
|
|
++# CONFIG_I2C_DEBUG_BUS is not set
|
|
|
++# CONFIG_I2C_DEBUG_CHIP is not set
|
|
|
++# CONFIG_SPI is not set
|
|
|
++# CONFIG_W1 is not set
|
|
|
++# CONFIG_POWER_SUPPLY is not set
|
|
|
++# CONFIG_HWMON is not set
|
|
|
++# CONFIG_THERMAL is not set
|
|
|
++# CONFIG_THERMAL_HWMON is not set
|
|
|
++# CONFIG_WATCHDOG is not set
|
|
|
++CONFIG_SSB_POSSIBLE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Sonics Silicon Backplane
|
|
|
++#
|
|
|
++# CONFIG_SSB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multifunction device drivers
|
|
|
++#
|
|
|
++# CONFIG_MFD_CORE is not set
|
|
|
++# CONFIG_MFD_SM501 is not set
|
|
|
++# CONFIG_HTC_PASIC3 is not set
|
|
|
++# CONFIG_MFD_TMIO is not set
|
|
|
++# CONFIG_MFD_WM8400 is not set
|
|
|
++# CONFIG_MFD_WM8350_I2C is not set
|
|
|
++# CONFIG_MFD_PCF50633 is not set
|
|
|
++# CONFIG_REGULATOR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia devices
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia core support
|
|
|
++#
|
|
|
++CONFIG_VIDEO_DEV=m
|
|
|
++CONFIG_VIDEO_V4L2_COMMON=m
|
|
|
++CONFIG_VIDEO_ALLOW_V4L1=y
|
|
|
++CONFIG_VIDEO_V4L1_COMPAT=y
|
|
|
++# CONFIG_DVB_CORE is not set
|
|
|
++CONFIG_VIDEO_MEDIA=m
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia drivers
|
|
|
++#
|
|
|
++CONFIG_MEDIA_ATTACH=y
|
|
|
++CONFIG_MEDIA_TUNER=m
|
|
|
++# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
|
|
|
++CONFIG_MEDIA_TUNER_SIMPLE=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA8290=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA9887=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5761=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5767=m
|
|
|
++CONFIG_MEDIA_TUNER_MT20XX=m
|
|
|
++CONFIG_MEDIA_TUNER_XC2028=m
|
|
|
++CONFIG_MEDIA_TUNER_XC5000=m
|
|
|
++CONFIG_MEDIA_TUNER_MC44S803=m
|
|
|
++CONFIG_VIDEO_V4L2=m
|
|
|
++CONFIG_VIDEO_V4L1=m
|
|
|
++CONFIG_VIDEOBUF_GEN=m
|
|
|
++CONFIG_VIDEOBUF_VMALLOC=m
|
|
|
++CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
|
|
++# CONFIG_VIDEO_ADV_DEBUG is not set
|
|
|
++# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
|
|
++CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
|
|
|
++# CONFIG_VIDEO_VIVI is not set
|
|
|
++# CONFIG_VIDEO_BT848 is not set
|
|
|
++# CONFIG_VIDEO_PMS is not set
|
|
|
++# CONFIG_VIDEO_CPIA is not set
|
|
|
++# CONFIG_VIDEO_CPIA2 is not set
|
|
|
++# CONFIG_VIDEO_SAA5246A is not set
|
|
|
++# CONFIG_VIDEO_SAA5249 is not set
|
|
|
++# CONFIG_VIDEO_STRADIS is not set
|
|
|
++# CONFIG_VIDEO_SAA7134 is not set
|
|
|
++# CONFIG_VIDEO_MXB is not set
|
|
|
++# CONFIG_VIDEO_HEXIUM_ORION is not set
|
|
|
++# CONFIG_VIDEO_HEXIUM_GEMINI is not set
|
|
|
++# CONFIG_VIDEO_CX88 is not set
|
|
|
++# CONFIG_VIDEO_IVTV is not set
|
|
|
++# CONFIG_VIDEO_CAFE_CCIC is not set
|
|
|
++CONFIG_SOC_CAMERA=m
|
|
|
++CONFIG_SOC_CAMERA_MT9M001=m
|
|
|
++CONFIG_SOC_CAMERA_MT9M111=m
|
|
|
++# CONFIG_SOC_CAMERA_MT9T031 is not set
|
|
|
++CONFIG_SOC_CAMERA_MT9V022=m
|
|
|
++# CONFIG_SOC_CAMERA_TW9910 is not set
|
|
|
++CONFIG_SOC_CAMERA_PLATFORM=m
|
|
|
++# CONFIG_SOC_CAMERA_OV772X is not set
|
|
|
++CONFIG_V4L_USB_DRIVERS=y
|
|
|
++CONFIG_USB_VIDEO_CLASS=m
|
|
|
++CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
|
|
|
++CONFIG_USB_GSPCA=m
|
|
|
++CONFIG_USB_M5602=m
|
|
|
++# CONFIG_USB_STV06XX is not set
|
|
|
++CONFIG_USB_GSPCA_CONEX=m
|
|
|
++CONFIG_USB_GSPCA_ETOMS=m
|
|
|
++CONFIG_USB_GSPCA_FINEPIX=m
|
|
|
++CONFIG_USB_GSPCA_MARS=m
|
|
|
++# CONFIG_USB_GSPCA_MR97310A is not set
|
|
|
++CONFIG_USB_GSPCA_OV519=m
|
|
|
++# CONFIG_USB_GSPCA_OV534 is not set
|
|
|
++CONFIG_USB_GSPCA_PAC207=m
|
|
|
++CONFIG_USB_GSPCA_PAC7311=m
|
|
|
++CONFIG_USB_GSPCA_SONIXB=m
|
|
|
++CONFIG_USB_GSPCA_SONIXJ=m
|
|
|
++CONFIG_USB_GSPCA_SPCA500=m
|
|
|
++CONFIG_USB_GSPCA_SPCA501=m
|
|
|
++CONFIG_USB_GSPCA_SPCA505=m
|
|
|
++CONFIG_USB_GSPCA_SPCA506=m
|
|
|
++CONFIG_USB_GSPCA_SPCA508=m
|
|
|
++CONFIG_USB_GSPCA_SPCA561=m
|
|
|
++# CONFIG_USB_GSPCA_SQ905 is not set
|
|
|
++# CONFIG_USB_GSPCA_SQ905C is not set
|
|
|
++CONFIG_USB_GSPCA_STK014=m
|
|
|
++CONFIG_USB_GSPCA_SUNPLUS=m
|
|
|
++CONFIG_USB_GSPCA_T613=m
|
|
|
++CONFIG_USB_GSPCA_TV8532=m
|
|
|
++CONFIG_USB_GSPCA_VC032X=m
|
|
|
++CONFIG_USB_GSPCA_ZC3XX=m
|
|
|
++# CONFIG_VIDEO_PVRUSB2 is not set
|
|
|
++# CONFIG_VIDEO_HDPVR is not set
|
|
|
++# CONFIG_VIDEO_EM28XX is not set
|
|
|
++# CONFIG_VIDEO_CX231XX is not set
|
|
|
++# CONFIG_VIDEO_USBVISION is not set
|
|
|
++CONFIG_VIDEO_USBVIDEO=m
|
|
|
++CONFIG_USB_VICAM=m
|
|
|
++CONFIG_USB_IBMCAM=m
|
|
|
++CONFIG_USB_KONICAWC=m
|
|
|
++CONFIG_USB_QUICKCAM_MESSENGER=m
|
|
|
++CONFIG_USB_ET61X251=m
|
|
|
++# CONFIG_VIDEO_OVCAMCHIP is not set
|
|
|
++CONFIG_USB_OV511=m
|
|
|
++CONFIG_USB_SE401=m
|
|
|
++CONFIG_USB_SN9C102=m
|
|
|
++CONFIG_USB_STV680=m
|
|
|
++CONFIG_USB_ZC0301=m
|
|
|
++CONFIG_USB_PWC=m
|
|
|
++# CONFIG_USB_PWC_DEBUG is not set
|
|
|
++CONFIG_USB_PWC_INPUT_EVDEV=y
|
|
|
++# CONFIG_USB_ZR364XX is not set
|
|
|
++CONFIG_USB_STKWEBCAM=m
|
|
|
++CONFIG_USB_S2255=m
|
|
|
++CONFIG_RADIO_ADAPTERS=y
|
|
|
++# CONFIG_RADIO_CADET is not set
|
|
|
++# CONFIG_RADIO_RTRACK is not set
|
|
|
++# CONFIG_RADIO_RTRACK2 is not set
|
|
|
++# CONFIG_RADIO_AZTECH is not set
|
|
|
++# CONFIG_RADIO_GEMTEK is not set
|
|
|
++# CONFIG_RADIO_GEMTEK_PCI is not set
|
|
|
++# CONFIG_RADIO_MAXIRADIO is not set
|
|
|
++# CONFIG_RADIO_MAESTRO is not set
|
|
|
++# CONFIG_RADIO_SF16FMI is not set
|
|
|
++# CONFIG_RADIO_SF16FMR2 is not set
|
|
|
++# CONFIG_RADIO_TERRATEC is not set
|
|
|
++# CONFIG_RADIO_TRUST is not set
|
|
|
++# CONFIG_RADIO_TYPHOON is not set
|
|
|
++# CONFIG_RADIO_ZOLTRIX is not set
|
|
|
++# CONFIG_USB_DSBR is not set
|
|
|
++CONFIG_USB_SI470X=m
|
|
|
++CONFIG_USB_MR800=m
|
|
|
++# CONFIG_RADIO_TEA5764 is not set
|
|
|
++CONFIG_DAB=y
|
|
|
++# CONFIG_USB_DABUSB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics support
|
|
|
++#
|
|
|
++# CONFIG_DRM is not set
|
|
|
++# CONFIG_VGASTATE is not set
|
|
|
++CONFIG_VIDEO_OUTPUT_CONTROL=m
|
|
|
++CONFIG_FB=y
|
|
|
++# CONFIG_FIRMWARE_EDID is not set
|
|
|
++# CONFIG_FB_DDC is not set
|
|
|
++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
|
|
|
++CONFIG_FB_CFB_FILLRECT=y
|
|
|
++CONFIG_FB_CFB_COPYAREA=y
|
|
|
++CONFIG_FB_CFB_IMAGEBLIT=y
|
|
|
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
|
|
++# CONFIG_FB_SYS_FILLRECT is not set
|
|
|
++# CONFIG_FB_SYS_COPYAREA is not set
|
|
|
++# CONFIG_FB_SYS_IMAGEBLIT is not set
|
|
|
++# CONFIG_FB_FOREIGN_ENDIAN is not set
|
|
|
++# CONFIG_FB_SYS_FOPS is not set
|
|
|
++# CONFIG_FB_SVGALIB is not set
|
|
|
++# CONFIG_FB_MACMODES is not set
|
|
|
++CONFIG_FB_BACKLIGHT=y
|
|
|
++CONFIG_FB_MODE_HELPERS=y
|
|
|
++# CONFIG_FB_TILEBLITTING is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Frame buffer hardware drivers
|
|
|
++#
|
|
|
++# CONFIG_FB_CIRRUS is not set
|
|
|
++# CONFIG_FB_PM2 is not set
|
|
|
++# CONFIG_FB_CYBER2000 is not set
|
|
|
++# CONFIG_FB_ASILIANT is not set
|
|
|
++# CONFIG_FB_IMSTT is not set
|
|
|
++# CONFIG_FB_S1D13XXX is not set
|
|
|
++# CONFIG_FB_NVIDIA is not set
|
|
|
++# CONFIG_FB_RIVA is not set
|
|
|
++# CONFIG_FB_MATROX is not set
|
|
|
++CONFIG_FB_RADEON=y
|
|
|
++# CONFIG_FB_RADEON_I2C is not set
|
|
|
++CONFIG_FB_RADEON_BACKLIGHT=y
|
|
|
++# CONFIG_FB_RADEON_DEBUG is not set
|
|
|
++# CONFIG_FB_ATY128 is not set
|
|
|
++# CONFIG_FB_ATY is not set
|
|
|
++# CONFIG_FB_S3 is not set
|
|
|
++# CONFIG_FB_SAVAGE is not set
|
|
|
++# CONFIG_FB_SIS is not set
|
|
|
++# CONFIG_FB_VIA is not set
|
|
|
++# CONFIG_FB_NEOMAGIC is not set
|
|
|
++# CONFIG_FB_KYRO is not set
|
|
|
++# CONFIG_FB_3DFX is not set
|
|
|
++# CONFIG_FB_VOODOO1 is not set
|
|
|
++# CONFIG_FB_VT8623 is not set
|
|
|
++# CONFIG_FB_TRIDENT is not set
|
|
|
++# CONFIG_FB_ARK is not set
|
|
|
++# CONFIG_FB_PM3 is not set
|
|
|
++# CONFIG_FB_CARMINE is not set
|
|
|
++# CONFIG_FB_SM7XX is not set
|
|
|
++# CONFIG_FB_VIRTUAL is not set
|
|
|
++# CONFIG_FB_METRONOME is not set
|
|
|
++# CONFIG_FB_MB862XX is not set
|
|
|
++# CONFIG_FB_BROADSHEET is not set
|
|
|
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
|
++CONFIG_LCD_CLASS_DEVICE=m
|
|
|
++# CONFIG_LCD_ILI9320 is not set
|
|
|
++# CONFIG_LCD_PLATFORM is not set
|
|
|
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|
|
++CONFIG_BACKLIGHT_GENERIC=y
|
|
|
++
|
|
|
++#
|
|
|
++# Display device support
|
|
|
++#
|
|
|
++# CONFIG_DISPLAY_SUPPORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Console display driver support
|
|
|
++#
|
|
|
++# CONFIG_VGA_CONSOLE is not set
|
|
|
++# CONFIG_MDA_CONSOLE is not set
|
|
|
++CONFIG_DUMMY_CONSOLE=y
|
|
|
++CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
|
++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
|
|
++# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
|
|
++# CONFIG_FONTS is not set
|
|
|
++CONFIG_FONT_8x8=y
|
|
|
++CONFIG_FONT_8x16=y
|
|
|
++# CONFIG_LOGO is not set
|
|
|
++CONFIG_SOUND=y
|
|
|
++CONFIG_SOUND_OSS_CORE=y
|
|
|
++CONFIG_SND=m
|
|
|
++CONFIG_SND_TIMER=m
|
|
|
++CONFIG_SND_PCM=m
|
|
|
++CONFIG_SND_RAWMIDI=m
|
|
|
++CONFIG_SND_SEQUENCER=m
|
|
|
++CONFIG_SND_SEQ_DUMMY=m
|
|
|
++CONFIG_SND_OSSEMUL=y
|
|
|
++CONFIG_SND_MIXER_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS_PLUGINS=y
|
|
|
++CONFIG_SND_SEQUENCER_OSS=y
|
|
|
++# CONFIG_SND_HRTIMER is not set
|
|
|
++# CONFIG_SND_DYNAMIC_MINORS is not set
|
|
|
++CONFIG_SND_SUPPORT_OLD_API=y
|
|
|
++CONFIG_SND_VERBOSE_PROCFS=y
|
|
|
++# CONFIG_SND_VERBOSE_PRINTK is not set
|
|
|
++# CONFIG_SND_DEBUG is not set
|
|
|
++CONFIG_SND_VMASTER=y
|
|
|
++CONFIG_SND_MPU401_UART=m
|
|
|
++CONFIG_SND_AC97_CODEC=m
|
|
|
++CONFIG_SND_DRIVERS=y
|
|
|
++# CONFIG_SND_DUMMY is not set
|
|
|
++# CONFIG_SND_VIRMIDI is not set
|
|
|
++# CONFIG_SND_MTPAV is not set
|
|
|
++# CONFIG_SND_SERIAL_U16550 is not set
|
|
|
++# CONFIG_SND_MPU401 is not set
|
|
|
++# CONFIG_SND_AC97_POWER_SAVE is not set
|
|
|
++CONFIG_SND_PCI=y
|
|
|
++# CONFIG_SND_AD1889 is not set
|
|
|
++# CONFIG_SND_ALS300 is not set
|
|
|
++# CONFIG_SND_ALI5451 is not set
|
|
|
++# CONFIG_SND_ATIIXP is not set
|
|
|
++# CONFIG_SND_ATIIXP_MODEM is not set
|
|
|
++# CONFIG_SND_AU8810 is not set
|
|
|
++# CONFIG_SND_AU8820 is not set
|
|
|
++# CONFIG_SND_AU8830 is not set
|
|
|
++# CONFIG_SND_AW2 is not set
|
|
|
++# CONFIG_SND_AZT3328 is not set
|
|
|
++# CONFIG_SND_BT87X is not set
|
|
|
++# CONFIG_SND_CA0106 is not set
|
|
|
++# CONFIG_SND_CMIPCI is not set
|
|
|
++# CONFIG_SND_OXYGEN is not set
|
|
|
++# CONFIG_SND_CS4281 is not set
|
|
|
++# CONFIG_SND_CS46XX is not set
|
|
|
++# CONFIG_SND_CS5535AUDIO is not set
|
|
|
++# CONFIG_SND_DARLA20 is not set
|
|
|
++# CONFIG_SND_GINA20 is not set
|
|
|
++# CONFIG_SND_LAYLA20 is not set
|
|
|
++# CONFIG_SND_DARLA24 is not set
|
|
|
++# CONFIG_SND_GINA24 is not set
|
|
|
++# CONFIG_SND_LAYLA24 is not set
|
|
|
++# CONFIG_SND_MONA is not set
|
|
|
++# CONFIG_SND_MIA is not set
|
|
|
++# CONFIG_SND_ECHO3G is not set
|
|
|
++# CONFIG_SND_INDIGO is not set
|
|
|
++# CONFIG_SND_INDIGOIO is not set
|
|
|
++# CONFIG_SND_INDIGODJ is not set
|
|
|
++# CONFIG_SND_INDIGOIOX is not set
|
|
|
++# CONFIG_SND_INDIGODJX is not set
|
|
|
++# CONFIG_SND_EMU10K1 is not set
|
|
|
++# CONFIG_SND_EMU10K1X is not set
|
|
|
++# CONFIG_SND_ENS1370 is not set
|
|
|
++# CONFIG_SND_ENS1371 is not set
|
|
|
++# CONFIG_SND_ES1938 is not set
|
|
|
++# CONFIG_SND_ES1968 is not set
|
|
|
++# CONFIG_SND_FM801 is not set
|
|
|
++# CONFIG_SND_HDA_INTEL is not set
|
|
|
++# CONFIG_SND_HDSP is not set
|
|
|
++# CONFIG_SND_HDSPM is not set
|
|
|
++# CONFIG_SND_HIFIER is not set
|
|
|
++# CONFIG_SND_ICE1712 is not set
|
|
|
++# CONFIG_SND_ICE1724 is not set
|
|
|
++# CONFIG_SND_INTEL8X0 is not set
|
|
|
++# CONFIG_SND_INTEL8X0M is not set
|
|
|
++# CONFIG_SND_KORG1212 is not set
|
|
|
++# CONFIG_SND_MAESTRO3 is not set
|
|
|
++# CONFIG_SND_MIXART is not set
|
|
|
++# CONFIG_SND_NM256 is not set
|
|
|
++# CONFIG_SND_PCXHR is not set
|
|
|
++# CONFIG_SND_RIPTIDE is not set
|
|
|
++# CONFIG_SND_RME32 is not set
|
|
|
++# CONFIG_SND_RME96 is not set
|
|
|
++# CONFIG_SND_RME9652 is not set
|
|
|
++# CONFIG_SND_SONICVIBES is not set
|
|
|
++# CONFIG_SND_TRIDENT is not set
|
|
|
++CONFIG_SND_VIA82XX=m
|
|
|
++# CONFIG_SND_VIA82XX_MODEM is not set
|
|
|
++# CONFIG_SND_VIRTUOSO is not set
|
|
|
++# CONFIG_SND_VX222 is not set
|
|
|
++# CONFIG_SND_YMFPCI is not set
|
|
|
++CONFIG_SND_MIPS=y
|
|
|
++CONFIG_SND_USB=y
|
|
|
++# CONFIG_SND_USB_AUDIO is not set
|
|
|
++# CONFIG_SND_USB_CAIAQ is not set
|
|
|
++# CONFIG_SND_SOC is not set
|
|
|
++# CONFIG_SOUND_PRIME is not set
|
|
|
++CONFIG_AC97_BUS=m
|
|
|
++CONFIG_HID_SUPPORT=y
|
|
|
++CONFIG_HID=y
|
|
|
++# CONFIG_HID_DEBUG is not set
|
|
|
++CONFIG_HIDRAW=y
|
|
|
++
|
|
|
++#
|
|
|
++# USB Input Devices
|
|
|
++#
|
|
|
++CONFIG_USB_HID=m
|
|
|
++CONFIG_HID_PID=y
|
|
|
++CONFIG_USB_HIDDEV=y
|
|
|
++
|
|
|
++#
|
|
|
++# USB HID Boot Protocol drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_KBD is not set
|
|
|
++# CONFIG_USB_MOUSE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Special HID drivers
|
|
|
++#
|
|
|
++CONFIG_HID_A4TECH=m
|
|
|
++CONFIG_HID_APPLE=m
|
|
|
++CONFIG_HID_BELKIN=m
|
|
|
++CONFIG_HID_CHERRY=m
|
|
|
++CONFIG_HID_CHICONY=m
|
|
|
++CONFIG_HID_CYPRESS=m
|
|
|
++# CONFIG_DRAGONRISE_FF is not set
|
|
|
++CONFIG_HID_EZKEY=m
|
|
|
++# CONFIG_HID_KYE is not set
|
|
|
++CONFIG_HID_GYRATION=m
|
|
|
++# CONFIG_HID_KENSINGTON is not set
|
|
|
++CONFIG_HID_LOGITECH=m
|
|
|
++CONFIG_LOGITECH_FF=y
|
|
|
++CONFIG_LOGIRUMBLEPAD2_FF=y
|
|
|
++CONFIG_HID_MICROSOFT=m
|
|
|
++CONFIG_HID_MONTEREY=m
|
|
|
++# CONFIG_HID_NTRIG is not set
|
|
|
++CONFIG_HID_PANTHERLORD=m
|
|
|
++# CONFIG_PANTHERLORD_FF is not set
|
|
|
++CONFIG_HID_PETALYNX=m
|
|
|
++CONFIG_HID_SAMSUNG=m
|
|
|
++CONFIG_HID_SONY=m
|
|
|
++CONFIG_HID_SUNPLUS=m
|
|
|
++# CONFIG_GREENASIA_FF is not set
|
|
|
++# CONFIG_HID_TOPSEED is not set
|
|
|
++# CONFIG_THRUSTMASTER_FF is not set
|
|
|
++CONFIG_ZEROPLUS_FF=m
|
|
|
++CONFIG_USB_SUPPORT=y
|
|
|
++CONFIG_USB_ARCH_HAS_HCD=y
|
|
|
++CONFIG_USB_ARCH_HAS_OHCI=y
|
|
|
++CONFIG_USB_ARCH_HAS_EHCI=y
|
|
|
++CONFIG_USB=y
|
|
|
++# CONFIG_USB_DEBUG is not set
|
|
|
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous USB options
|
|
|
++#
|
|
|
++CONFIG_USB_DEVICEFS=y
|
|
|
++# CONFIG_USB_DEVICE_CLASS is not set
|
|
|
++# CONFIG_USB_DYNAMIC_MINORS is not set
|
|
|
++# CONFIG_USB_SUSPEND is not set
|
|
|
++# CONFIG_USB_OTG is not set
|
|
|
++CONFIG_USB_OTG_WHITELIST=y
|
|
|
++# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
|
|
++# CONFIG_USB_MON is not set
|
|
|
++# CONFIG_USB_WUSB is not set
|
|
|
++CONFIG_USB_WUSB_CBAF=m
|
|
|
++# CONFIG_USB_WUSB_CBAF_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Host Controller Drivers
|
|
|
++#
|
|
|
++CONFIG_USB_C67X00_HCD=m
|
|
|
++CONFIG_USB_EHCI_HCD=y
|
|
|
++CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
|
|
++CONFIG_USB_EHCI_TT_NEWSCHED=y
|
|
|
++# CONFIG_USB_OXU210HP_HCD is not set
|
|
|
++# CONFIG_USB_ISP116X_HCD is not set
|
|
|
++CONFIG_USB_ISP1760_HCD=m
|
|
|
++CONFIG_USB_OHCI_HCD=y
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
|
|
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
|
++CONFIG_USB_UHCI_HCD=m
|
|
|
++# CONFIG_USB_SL811_HCD is not set
|
|
|
++CONFIG_USB_R8A66597_HCD=m
|
|
|
++# CONFIG_USB_WHCI_HCD is not set
|
|
|
++# CONFIG_USB_HWA_HCD is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Device Class drivers
|
|
|
++#
|
|
|
++CONFIG_USB_ACM=y
|
|
|
++CONFIG_USB_PRINTER=y
|
|
|
++CONFIG_USB_WDM=m
|
|
|
++CONFIG_USB_TMC=m
|
|
|
++
|
|
|
++#
|
|
|
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# also be needed; see USB_STORAGE Help for more info
|
|
|
++#
|
|
|
++CONFIG_USB_STORAGE=y
|
|
|
++# CONFIG_USB_STORAGE_DEBUG is not set
|
|
|
++# CONFIG_USB_STORAGE_DATAFAB is not set
|
|
|
++# CONFIG_USB_STORAGE_FREECOM is not set
|
|
|
++# CONFIG_USB_STORAGE_ISD200 is not set
|
|
|
++# CONFIG_USB_STORAGE_USBAT is not set
|
|
|
++# CONFIG_USB_STORAGE_SDDR09 is not set
|
|
|
++# CONFIG_USB_STORAGE_SDDR55 is not set
|
|
|
++# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
|
|
++# CONFIG_USB_STORAGE_ALAUDA is not set
|
|
|
++CONFIG_USB_STORAGE_ONETOUCH=y
|
|
|
++# CONFIG_USB_STORAGE_KARMA is not set
|
|
|
++CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
|
|
++CONFIG_USB_LIBUSUAL=y
|
|
|
++
|
|
|
++#
|
|
|
++# USB Imaging devices
|
|
|
++#
|
|
|
++# CONFIG_USB_MDC800 is not set
|
|
|
++# CONFIG_USB_MICROTEK is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB port drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_SERIAL is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Miscellaneous drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_EMI62 is not set
|
|
|
++# CONFIG_USB_EMI26 is not set
|
|
|
++# CONFIG_USB_ADUTUX is not set
|
|
|
++CONFIG_USB_SEVSEG=m
|
|
|
++# CONFIG_USB_RIO500 is not set
|
|
|
++# CONFIG_USB_LEGOTOWER is not set
|
|
|
++# CONFIG_USB_LCD is not set
|
|
|
++# CONFIG_USB_BERRY_CHARGE is not set
|
|
|
++# CONFIG_USB_LED is not set
|
|
|
++# CONFIG_USB_CYPRESS_CY7C63 is not set
|
|
|
++# CONFIG_USB_CYTHERM is not set
|
|
|
++# CONFIG_USB_IDMOUSE is not set
|
|
|
++# CONFIG_USB_FTDI_ELAN is not set
|
|
|
++# CONFIG_USB_APPLEDISPLAY is not set
|
|
|
++# CONFIG_USB_SISUSBVGA is not set
|
|
|
++# CONFIG_USB_LD is not set
|
|
|
++# CONFIG_USB_TRANCEVIBRATOR is not set
|
|
|
++# CONFIG_USB_IOWARRIOR is not set
|
|
|
++# CONFIG_USB_TEST is not set
|
|
|
++CONFIG_USB_ISIGHTFW=m
|
|
|
++CONFIG_USB_VST=m
|
|
|
++# CONFIG_USB_GADGET is not set
|
|
|
++
|
|
|
++#
|
|
|
++# OTG and related infrastructure
|
|
|
++#
|
|
|
++# CONFIG_NOP_USB_XCEIV is not set
|
|
|
++# CONFIG_UWB is not set
|
|
|
++# CONFIG_MMC is not set
|
|
|
++# CONFIG_MEMSTICK is not set
|
|
|
++# CONFIG_NEW_LEDS is not set
|
|
|
++# CONFIG_ACCESSIBILITY is not set
|
|
|
++# CONFIG_INFINIBAND is not set
|
|
|
++CONFIG_RTC_LIB=y
|
|
|
++CONFIG_RTC_CLASS=y
|
|
|
++CONFIG_RTC_HCTOSYS=y
|
|
|
++CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
|
|
++# CONFIG_RTC_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RTC interfaces
|
|
|
++#
|
|
|
++CONFIG_RTC_INTF_SYSFS=y
|
|
|
++CONFIG_RTC_INTF_PROC=y
|
|
|
++CONFIG_RTC_INTF_DEV=y
|
|
|
++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
|
|
++# CONFIG_RTC_DRV_TEST is not set
|
|
|
++
|
|
|
++#
|
|
|
++# I2C RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_RTC_DRV_DS1307 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1374 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1672 is not set
|
|
|
++# CONFIG_RTC_DRV_MAX6900 is not set
|
|
|
++# CONFIG_RTC_DRV_RS5C372 is not set
|
|
|
++# CONFIG_RTC_DRV_ISL1208 is not set
|
|
|
++# CONFIG_RTC_DRV_X1205 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8563 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8583 is not set
|
|
|
++# CONFIG_RTC_DRV_M41T80 is not set
|
|
|
++# CONFIG_RTC_DRV_S35390A is not set
|
|
|
++# CONFIG_RTC_DRV_FM3130 is not set
|
|
|
++# CONFIG_RTC_DRV_RX8581 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# SPI RTC drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Platform RTC drivers
|
|
|
++#
|
|
|
++CONFIG_RTC_DRV_CMOS=y
|
|
|
++# CONFIG_RTC_DRV_DS1286 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1511 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1553 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1742 is not set
|
|
|
++# CONFIG_RTC_DRV_STK17TA8 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T86 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T35 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T59 is not set
|
|
|
++# CONFIG_RTC_DRV_BQ4802 is not set
|
|
|
++# CONFIG_RTC_DRV_V3020 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# on-CPU RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_DMADEVICES is not set
|
|
|
++# CONFIG_AUXDISPLAY is not set
|
|
|
++CONFIG_UIO=m
|
|
|
++CONFIG_UIO_CIF=m
|
|
|
++# CONFIG_UIO_PDRV is not set
|
|
|
++# CONFIG_UIO_PDRV_GENIRQ is not set
|
|
|
++# CONFIG_UIO_SMX is not set
|
|
|
++# CONFIG_UIO_AEC is not set
|
|
|
++# CONFIG_UIO_SERCOS3 is not set
|
|
|
++# CONFIG_STAGING is not set
|
|
|
++
|
|
|
++#
|
|
|
++# File systems
|
|
|
++#
|
|
|
++CONFIG_EXT2_FS=y
|
|
|
++# CONFIG_EXT2_FS_XATTR is not set
|
|
|
++CONFIG_EXT2_FS_XIP=y
|
|
|
++CONFIG_EXT3_FS=y
|
|
|
++# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
|
|
++# CONFIG_EXT3_FS_XATTR is not set
|
|
|
++CONFIG_EXT4_FS=m
|
|
|
++CONFIG_EXT4DEV_COMPAT=y
|
|
|
++CONFIG_EXT4_FS_XATTR=y
|
|
|
++CONFIG_EXT4_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT4_FS_SECURITY=y
|
|
|
++CONFIG_FS_XIP=y
|
|
|
++CONFIG_JBD=y
|
|
|
++# CONFIG_JBD_DEBUG is not set
|
|
|
++CONFIG_JBD2=m
|
|
|
++# CONFIG_JBD2_DEBUG is not set
|
|
|
++CONFIG_FS_MBCACHE=m
|
|
|
++CONFIG_REISERFS_FS=m
|
|
|
++# CONFIG_REISERFS_CHECK is not set
|
|
|
++# CONFIG_REISERFS_PROC_INFO is not set
|
|
|
++# CONFIG_REISERFS_FS_XATTR is not set
|
|
|
++# CONFIG_JFS_FS is not set
|
|
|
++CONFIG_FS_POSIX_ACL=y
|
|
|
++CONFIG_FILE_LOCKING=y
|
|
|
++# CONFIG_XFS_FS is not set
|
|
|
++# CONFIG_GFS2_FS is not set
|
|
|
++# CONFIG_OCFS2_FS is not set
|
|
|
++# CONFIG_BTRFS_FS is not set
|
|
|
++CONFIG_DNOTIFY=y
|
|
|
++CONFIG_INOTIFY=y
|
|
|
++CONFIG_INOTIFY_USER=y
|
|
|
++# CONFIG_QUOTA is not set
|
|
|
++CONFIG_AUTOFS_FS=y
|
|
|
++CONFIG_AUTOFS4_FS=y
|
|
|
++CONFIG_FUSE_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# Caches
|
|
|
++#
|
|
|
++# CONFIG_FSCACHE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# CD-ROM/DVD Filesystems
|
|
|
++#
|
|
|
++CONFIG_ISO9660_FS=m
|
|
|
++CONFIG_JOLIET=y
|
|
|
++CONFIG_ZISOFS=y
|
|
|
++CONFIG_UDF_FS=m
|
|
|
++CONFIG_UDF_NLS=y
|
|
|
++
|
|
|
++#
|
|
|
++# DOS/FAT/NT Filesystems
|
|
|
++#
|
|
|
++CONFIG_FAT_FS=m
|
|
|
++CONFIG_MSDOS_FS=m
|
|
|
++CONFIG_VFAT_FS=m
|
|
|
++CONFIG_FAT_DEFAULT_CODEPAGE=936
|
|
|
++CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
|
|
|
++CONFIG_NTFS_FS=m
|
|
|
++# CONFIG_NTFS_DEBUG is not set
|
|
|
++CONFIG_NTFS_RW=y
|
|
|
++
|
|
|
++#
|
|
|
++# Pseudo filesystems
|
|
|
++#
|
|
|
++CONFIG_PROC_FS=y
|
|
|
++CONFIG_PROC_KCORE=y
|
|
|
++CONFIG_PROC_SYSCTL=y
|
|
|
++CONFIG_PROC_PAGE_MONITOR=y
|
|
|
++CONFIG_SYSFS=y
|
|
|
++CONFIG_TMPFS=y
|
|
|
++# CONFIG_TMPFS_POSIX_ACL is not set
|
|
|
++# CONFIG_HUGETLB_PAGE is not set
|
|
|
++# CONFIG_CONFIGFS_FS is not set
|
|
|
++CONFIG_MISC_FILESYSTEMS=y
|
|
|
++# CONFIG_ADFS_FS is not set
|
|
|
++# CONFIG_AFFS_FS is not set
|
|
|
++# CONFIG_HFS_FS is not set
|
|
|
++# CONFIG_HFSPLUS_FS is not set
|
|
|
++# CONFIG_BEFS_FS is not set
|
|
|
++# CONFIG_BFS_FS is not set
|
|
|
++# CONFIG_EFS_FS is not set
|
|
|
++# CONFIG_JFFS2_FS is not set
|
|
|
++# CONFIG_CRAMFS is not set
|
|
|
++# CONFIG_SQUASHFS is not set
|
|
|
++# CONFIG_VXFS_FS is not set
|
|
|
++# CONFIG_MINIX_FS is not set
|
|
|
++CONFIG_OMFS_FS=m
|
|
|
++# CONFIG_HPFS_FS is not set
|
|
|
++# CONFIG_QNX4FS_FS is not set
|
|
|
++# CONFIG_ROMFS_FS is not set
|
|
|
++# CONFIG_SYSV_FS is not set
|
|
|
++# CONFIG_UFS_FS is not set
|
|
|
++# CONFIG_NILFS2_FS is not set
|
|
|
++CONFIG_NETWORK_FILESYSTEMS=y
|
|
|
++CONFIG_NFS_FS=m
|
|
|
++CONFIG_NFS_V3=y
|
|
|
++CONFIG_NFS_V3_ACL=y
|
|
|
++CONFIG_NFS_V4=y
|
|
|
++CONFIG_NFSD=m
|
|
|
++CONFIG_NFSD_V2_ACL=y
|
|
|
++CONFIG_NFSD_V3=y
|
|
|
++CONFIG_NFSD_V3_ACL=y
|
|
|
++CONFIG_NFSD_V4=y
|
|
|
++CONFIG_LOCKD=m
|
|
|
++CONFIG_LOCKD_V4=y
|
|
|
++CONFIG_EXPORTFS=m
|
|
|
++CONFIG_NFS_ACL_SUPPORT=m
|
|
|
++CONFIG_NFS_COMMON=y
|
|
|
++CONFIG_SUNRPC=m
|
|
|
++CONFIG_SUNRPC_GSS=m
|
|
|
++CONFIG_RPCSEC_GSS_KRB5=m
|
|
|
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
|
|
++CONFIG_SMB_FS=m
|
|
|
++CONFIG_SMB_NLS_DEFAULT=y
|
|
|
++CONFIG_SMB_NLS_REMOTE="cp936"
|
|
|
++CONFIG_CIFS=m
|
|
|
++CONFIG_CIFS_STATS=y
|
|
|
++CONFIG_CIFS_STATS2=y
|
|
|
++CONFIG_CIFS_WEAK_PW_HASH=y
|
|
|
++CONFIG_CIFS_XATTR=y
|
|
|
++CONFIG_CIFS_POSIX=y
|
|
|
++CONFIG_CIFS_DEBUG2=y
|
|
|
++CONFIG_CIFS_EXPERIMENTAL=y
|
|
|
++# CONFIG_NCP_FS is not set
|
|
|
++# CONFIG_CODA_FS is not set
|
|
|
++# CONFIG_AFS_FS is not set
|
|
|
++# CONFIG_9P_FS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Partition Types
|
|
|
++#
|
|
|
++CONFIG_PARTITION_ADVANCED=y
|
|
|
++# CONFIG_ACORN_PARTITION is not set
|
|
|
++# CONFIG_OSF_PARTITION is not set
|
|
|
++# CONFIG_AMIGA_PARTITION is not set
|
|
|
++# CONFIG_ATARI_PARTITION is not set
|
|
|
++# CONFIG_MAC_PARTITION is not set
|
|
|
++CONFIG_MSDOS_PARTITION=y
|
|
|
++# CONFIG_BSD_DISKLABEL is not set
|
|
|
++# CONFIG_MINIX_SUBPARTITION is not set
|
|
|
++# CONFIG_SOLARIS_X86_PARTITION is not set
|
|
|
++# CONFIG_UNIXWARE_DISKLABEL is not set
|
|
|
++# CONFIG_LDM_PARTITION is not set
|
|
|
++# CONFIG_SGI_PARTITION is not set
|
|
|
++# CONFIG_ULTRIX_PARTITION is not set
|
|
|
++# CONFIG_SUN_PARTITION is not set
|
|
|
++# CONFIG_KARMA_PARTITION is not set
|
|
|
++# CONFIG_EFI_PARTITION is not set
|
|
|
++# CONFIG_SYSV68_PARTITION is not set
|
|
|
++CONFIG_NLS=y
|
|
|
++CONFIG_NLS_DEFAULT="utf8"
|
|
|
++# CONFIG_NLS_CODEPAGE_437 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_737 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_775 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_850 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_852 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_855 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_857 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_860 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_861 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_862 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_863 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_864 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_865 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_866 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_869 is not set
|
|
|
++CONFIG_NLS_CODEPAGE_936=y
|
|
|
++# CONFIG_NLS_CODEPAGE_950 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_932 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_949 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_874 is not set
|
|
|
++# CONFIG_NLS_ISO8859_8 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_1250 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_1251 is not set
|
|
|
++# CONFIG_NLS_ASCII is not set
|
|
|
++CONFIG_NLS_ISO8859_1=y
|
|
|
++# CONFIG_NLS_ISO8859_2 is not set
|
|
|
++# CONFIG_NLS_ISO8859_3 is not set
|
|
|
++# CONFIG_NLS_ISO8859_4 is not set
|
|
|
++# CONFIG_NLS_ISO8859_5 is not set
|
|
|
++# CONFIG_NLS_ISO8859_6 is not set
|
|
|
++# CONFIG_NLS_ISO8859_7 is not set
|
|
|
++# CONFIG_NLS_ISO8859_9 is not set
|
|
|
++# CONFIG_NLS_ISO8859_13 is not set
|
|
|
++# CONFIG_NLS_ISO8859_14 is not set
|
|
|
++# CONFIG_NLS_ISO8859_15 is not set
|
|
|
++# CONFIG_NLS_KOI8_R is not set
|
|
|
++# CONFIG_NLS_KOI8_U is not set
|
|
|
++CONFIG_NLS_UTF8=y
|
|
|
++# CONFIG_DLM is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel hacking
|
|
|
++#
|
|
|
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
|
|
++# CONFIG_PRINTK_TIME is not set
|
|
|
++CONFIG_ENABLE_WARN_DEPRECATED=y
|
|
|
++# CONFIG_ENABLE_MUST_CHECK is not set
|
|
|
++CONFIG_FRAME_WARN=2048
|
|
|
++# CONFIG_MAGIC_SYSRQ is not set
|
|
|
++# CONFIG_UNUSED_SYMBOLS is not set
|
|
|
++CONFIG_DEBUG_FS=y
|
|
|
++# CONFIG_HEADERS_CHECK is not set
|
|
|
++# CONFIG_DEBUG_KERNEL is not set
|
|
|
++CONFIG_STACKTRACE=y
|
|
|
++# CONFIG_DEBUG_MEMORY_INIT is not set
|
|
|
++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
|
++CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
|
++CONFIG_NOP_TRACER=y
|
|
|
++CONFIG_RING_BUFFER=y
|
|
|
++CONFIG_TRACING=y
|
|
|
++CONFIG_TRACING_SUPPORT=y
|
|
|
++
|
|
|
++#
|
|
|
++# Tracers
|
|
|
++#
|
|
|
++# CONFIG_IRQSOFF_TRACER is not set
|
|
|
++# CONFIG_SCHED_TRACER is not set
|
|
|
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
|
|
++# CONFIG_EVENT_TRACER is not set
|
|
|
++# CONFIG_BOOT_TRACER is not set
|
|
|
++# CONFIG_TRACE_BRANCH_PROFILING is not set
|
|
|
++# CONFIG_KMEMTRACE is not set
|
|
|
++# CONFIG_WORKQUEUE_TRACER is not set
|
|
|
++# CONFIG_BLK_DEV_IO_TRACE is not set
|
|
|
++# CONFIG_FTRACE_STARTUP_TEST is not set
|
|
|
++# CONFIG_DYNAMIC_DEBUG is not set
|
|
|
++# CONFIG_SAMPLES is not set
|
|
|
++CONFIG_HAVE_ARCH_KGDB=y
|
|
|
++CONFIG_CMDLINE=""
|
|
|
++
|
|
|
++#
|
|
|
++# Security options
|
|
|
++#
|
|
|
++# CONFIG_KEYS is not set
|
|
|
++# CONFIG_SECURITY is not set
|
|
|
++# CONFIG_SECURITYFS is not set
|
|
|
++CONFIG_SECURITY_FILE_CAPABILITIES=y
|
|
|
++CONFIG_CRYPTO=y
|
|
|
++
|
|
|
++#
|
|
|
++# Crypto core or helper
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_FIPS=y
|
|
|
++CONFIG_CRYPTO_ALGAPI=y
|
|
|
++CONFIG_CRYPTO_ALGAPI2=y
|
|
|
++CONFIG_CRYPTO_AEAD=m
|
|
|
++CONFIG_CRYPTO_AEAD2=y
|
|
|
++CONFIG_CRYPTO_BLKCIPHER=m
|
|
|
++CONFIG_CRYPTO_BLKCIPHER2=y
|
|
|
++CONFIG_CRYPTO_HASH=y
|
|
|
++CONFIG_CRYPTO_HASH2=y
|
|
|
++CONFIG_CRYPTO_RNG=m
|
|
|
++CONFIG_CRYPTO_RNG2=y
|
|
|
++CONFIG_CRYPTO_PCOMP=y
|
|
|
++CONFIG_CRYPTO_MANAGER=y
|
|
|
++CONFIG_CRYPTO_MANAGER2=y
|
|
|
++CONFIG_CRYPTO_GF128MUL=m
|
|
|
++# CONFIG_CRYPTO_NULL is not set
|
|
|
++CONFIG_CRYPTO_WORKQUEUE=y
|
|
|
++# CONFIG_CRYPTO_CRYPTD is not set
|
|
|
++CONFIG_CRYPTO_AUTHENC=m
|
|
|
++# CONFIG_CRYPTO_TEST is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Authenticated Encryption with Associated Data
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CCM=m
|
|
|
++CONFIG_CRYPTO_GCM=m
|
|
|
++CONFIG_CRYPTO_SEQIV=m
|
|
|
++
|
|
|
++#
|
|
|
++# Block modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CBC=m
|
|
|
++CONFIG_CRYPTO_CTR=m
|
|
|
++CONFIG_CRYPTO_CTS=m
|
|
|
++CONFIG_CRYPTO_ECB=m
|
|
|
++# CONFIG_CRYPTO_LRW is not set
|
|
|
++CONFIG_CRYPTO_PCBC=m
|
|
|
++CONFIG_CRYPTO_XTS=m
|
|
|
++
|
|
|
++#
|
|
|
++# Hash modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_HMAC=y
|
|
|
++# CONFIG_CRYPTO_XCBC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Digest
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_CRC32C is not set
|
|
|
++# CONFIG_CRYPTO_MD4 is not set
|
|
|
++CONFIG_CRYPTO_MD5=m
|
|
|
++# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
|
|
++CONFIG_CRYPTO_RMD128=m
|
|
|
++CONFIG_CRYPTO_RMD160=m
|
|
|
++CONFIG_CRYPTO_RMD256=m
|
|
|
++CONFIG_CRYPTO_RMD320=m
|
|
|
++CONFIG_CRYPTO_SHA1=m
|
|
|
++# CONFIG_CRYPTO_SHA256 is not set
|
|
|
++# CONFIG_CRYPTO_SHA512 is not set
|
|
|
++# CONFIG_CRYPTO_TGR192 is not set
|
|
|
++# CONFIG_CRYPTO_WP512 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Ciphers
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_AES=m
|
|
|
++# CONFIG_CRYPTO_ANUBIS is not set
|
|
|
++CONFIG_CRYPTO_ARC4=m
|
|
|
++# CONFIG_CRYPTO_BLOWFISH is not set
|
|
|
++# CONFIG_CRYPTO_CAMELLIA is not set
|
|
|
++# CONFIG_CRYPTO_CAST5 is not set
|
|
|
++# CONFIG_CRYPTO_CAST6 is not set
|
|
|
++CONFIG_CRYPTO_DES=m
|
|
|
++# CONFIG_CRYPTO_FCRYPT is not set
|
|
|
++# CONFIG_CRYPTO_KHAZAD is not set
|
|
|
++CONFIG_CRYPTO_SALSA20=m
|
|
|
++CONFIG_CRYPTO_SEED=m
|
|
|
++# CONFIG_CRYPTO_SERPENT is not set
|
|
|
++# CONFIG_CRYPTO_TEA is not set
|
|
|
++# CONFIG_CRYPTO_TWOFISH is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Compression
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_DEFLATE=m
|
|
|
++# CONFIG_CRYPTO_ZLIB is not set
|
|
|
++CONFIG_CRYPTO_LZO=m
|
|
|
++
|
|
|
++#
|
|
|
++# Random Number Generation
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_ANSI_CPRNG=m
|
|
|
++# CONFIG_CRYPTO_HW is not set
|
|
|
++CONFIG_BINARY_PRINTF=y
|
|
|
++
|
|
|
++#
|
|
|
++# Library routines
|
|
|
++#
|
|
|
++CONFIG_BITREVERSE=y
|
|
|
++CONFIG_GENERIC_FIND_LAST_BIT=y
|
|
|
++CONFIG_CRC_CCITT=y
|
|
|
++CONFIG_CRC16=m
|
|
|
++# CONFIG_CRC_T10DIF is not set
|
|
|
++CONFIG_CRC_ITU_T=m
|
|
|
++CONFIG_CRC32=y
|
|
|
++CONFIG_CRC7=m
|
|
|
++# CONFIG_LIBCRC32C is not set
|
|
|
++CONFIG_ZLIB_INFLATE=m
|
|
|
++CONFIG_ZLIB_DEFLATE=m
|
|
|
++CONFIG_LZO_COMPRESS=m
|
|
|
++CONFIG_LZO_DECOMPRESS=m
|
|
|
++CONFIG_TEXTSEARCH=y
|
|
|
++CONFIG_TEXTSEARCH_KMP=m
|
|
|
++CONFIG_TEXTSEARCH_BM=m
|
|
|
++CONFIG_TEXTSEARCH_FSM=m
|
|
|
++CONFIG_HAS_IOMEM=y
|
|
|
++CONFIG_HAS_IOPORT=y
|
|
|
++CONFIG_HAS_DMA=y
|
|
|
++CONFIG_NLATTR=y
|
|
|
+diff -Nur linux-2.6.30/arch/mips/configs/fuloong2f_defconfig rt4ls/arch/mips/configs/fuloong2f_defconfig
|
|
|
+--- linux-2.6.30/arch/mips/configs/fuloong2f_defconfig 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/configs/fuloong2f_defconfig 2009-06-12 16:27:08.246405134 +0200
|
|
|
+@@ -0,0 +1,2637 @@
|
|
|
++#
|
|
|
++# Automatically generated make config: don't edit
|
|
|
++# Linux kernel version: 2.6.30-rc8
|
|
|
++# Wed Jun 10 22:20:53 2009
|
|
|
++#
|
|
|
++CONFIG_MIPS=y
|
|
|
++
|
|
|
++#
|
|
|
++# Machine selection
|
|
|
++#
|
|
|
++# CONFIG_MACH_ALCHEMY is not set
|
|
|
++# CONFIG_BASLER_EXCITE is not set
|
|
|
++# CONFIG_BCM47XX is not set
|
|
|
++# CONFIG_MIPS_COBALT is not set
|
|
|
++# CONFIG_MACH_DECSTATION is not set
|
|
|
++# CONFIG_MACH_JAZZ is not set
|
|
|
++# CONFIG_LASAT is not set
|
|
|
++CONFIG_MACH_LOONGSON=y
|
|
|
++# CONFIG_MIPS_MALTA is not set
|
|
|
++# CONFIG_MIPS_SIM is not set
|
|
|
++# CONFIG_NEC_MARKEINS is not set
|
|
|
++# CONFIG_MACH_VR41XX is not set
|
|
|
++# CONFIG_NXP_STB220 is not set
|
|
|
++# CONFIG_NXP_STB225 is not set
|
|
|
++# CONFIG_PNX8550_JBS is not set
|
|
|
++# CONFIG_PNX8550_STB810 is not set
|
|
|
++# CONFIG_PMC_MSP is not set
|
|
|
++# CONFIG_PMC_YOSEMITE is not set
|
|
|
++# CONFIG_SGI_IP22 is not set
|
|
|
++# CONFIG_SGI_IP27 is not set
|
|
|
++# CONFIG_SGI_IP28 is not set
|
|
|
++# CONFIG_SGI_IP32 is not set
|
|
|
++# CONFIG_SIBYTE_CRHINE is not set
|
|
|
++# CONFIG_SIBYTE_CARMEL is not set
|
|
|
++# CONFIG_SIBYTE_CRHONE is not set
|
|
|
++# CONFIG_SIBYTE_RHONE is not set
|
|
|
++# CONFIG_SIBYTE_SWARM is not set
|
|
|
++# CONFIG_SIBYTE_LITTLESUR is not set
|
|
|
++# CONFIG_SIBYTE_SENTOSA is not set
|
|
|
++# CONFIG_SIBYTE_BIGSUR is not set
|
|
|
++# CONFIG_SNI_RM is not set
|
|
|
++# CONFIG_MACH_TX39XX is not set
|
|
|
++# CONFIG_MACH_TX49XX is not set
|
|
|
++# CONFIG_MIKROTIK_RB532 is not set
|
|
|
++# CONFIG_WR_PPMC is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
|
|
|
++CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
|
++# CONFIG_LEMOTE_FULOONG2E is not set
|
|
|
++CONFIG_LEMOTE_FULOONG2F=y
|
|
|
++# CONFIG_LEMOTE_YEELOONG2F is not set
|
|
|
++CONFIG_CS5536=y
|
|
|
++CONFIG_CS5536_MFGPT=y
|
|
|
++CONFIG_UCA_SIZE=0x2000000
|
|
|
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
|
|
++CONFIG_ARCH_SUPPORTS_OPROFILE=y
|
|
|
++CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|
|
++CONFIG_GENERIC_HWEIGHT=y
|
|
|
++CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS=y
|
|
|
++CONFIG_GENERIC_TIME=y
|
|
|
++CONFIG_GENERIC_CMOS_UPDATE=y
|
|
|
++CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
|
|
++CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
|
|
++CONFIG_DMA_NONCOHERENT=y
|
|
|
++CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
|
|
++CONFIG_EARLY_PRINTK=y
|
|
|
++CONFIG_SYS_HAS_EARLY_PRINTK=y
|
|
|
++# CONFIG_HOTPLUG_CPU is not set
|
|
|
++CONFIG_I8259=y
|
|
|
++# CONFIG_NO_IOPORT is not set
|
|
|
++CONFIG_GENERIC_ISA_DMA=y
|
|
|
++CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
|
|
|
++# CONFIG_CPU_BIG_ENDIAN is not set
|
|
|
++CONFIG_CPU_LITTLE_ENDIAN=y
|
|
|
++CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
|
|
++CONFIG_IRQ_CPU=y
|
|
|
++CONFIG_BOOT_ELF32=y
|
|
|
++CONFIG_MIPS_L1_CACHE_SHIFT=5
|
|
|
++
|
|
|
++#
|
|
|
++# CPU selection
|
|
|
++#
|
|
|
++# CONFIG_CPU_LOONGSON2E is not set
|
|
|
++CONFIG_CPU_LOONGSON2F=y
|
|
|
++# CONFIG_CPU_MIPS32_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS32_R2 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R2 is not set
|
|
|
++# CONFIG_CPU_R3000 is not set
|
|
|
++# CONFIG_CPU_TX39XX is not set
|
|
|
++# CONFIG_CPU_VR41XX is not set
|
|
|
++# CONFIG_CPU_R4300 is not set
|
|
|
++# CONFIG_CPU_R4X00 is not set
|
|
|
++# CONFIG_CPU_TX49XX is not set
|
|
|
++# CONFIG_CPU_R5000 is not set
|
|
|
++# CONFIG_CPU_R5432 is not set
|
|
|
++# CONFIG_CPU_R5500 is not set
|
|
|
++# CONFIG_CPU_R6000 is not set
|
|
|
++# CONFIG_CPU_NEVADA is not set
|
|
|
++# CONFIG_CPU_R8000 is not set
|
|
|
++# CONFIG_CPU_R10000 is not set
|
|
|
++# CONFIG_CPU_RM7000 is not set
|
|
|
++# CONFIG_CPU_RM9000 is not set
|
|
|
++# CONFIG_CPU_SB1 is not set
|
|
|
++# CONFIG_CPU_CAVIUM_OCTEON is not set
|
|
|
++CONFIG_CPU_LOONGSON2=y
|
|
|
++CONFIG_SYS_HAS_CPU_LOONGSON2F=y
|
|
|
++CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel type
|
|
|
++#
|
|
|
++# CONFIG_32BIT is not set
|
|
|
++CONFIG_64BIT=y
|
|
|
++# CONFIG_PAGE_SIZE_4KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_8KB is not set
|
|
|
++CONFIG_PAGE_SIZE_16KB=y
|
|
|
++# CONFIG_PAGE_SIZE_32KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_64KB is not set
|
|
|
++CONFIG_BOARD_SCACHE=y
|
|
|
++CONFIG_MIPS_MT_DISABLED=y
|
|
|
++# CONFIG_MIPS_MT_SMP is not set
|
|
|
++# CONFIG_MIPS_MT_SMTC is not set
|
|
|
++CONFIG_CPU_HAS_WB=y
|
|
|
++CONFIG_CPU_HAS_SYNC=y
|
|
|
++CONFIG_GENERIC_HARDIRQS=y
|
|
|
++CONFIG_GENERIC_IRQ_PROBE=y
|
|
|
++CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_SYS_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_ARCH_FLATMEM_ENABLE=y
|
|
|
++CONFIG_ARCH_POPULATES_NODE_MAP=y
|
|
|
++CONFIG_SELECT_MEMORY_MODEL=y
|
|
|
++# CONFIG_FLATMEM_MANUAL is not set
|
|
|
++# CONFIG_DISCONTIGMEM_MANUAL is not set
|
|
|
++CONFIG_SPARSEMEM_MANUAL=y
|
|
|
++CONFIG_SPARSEMEM=y
|
|
|
++CONFIG_HAVE_MEMORY_PRESENT=y
|
|
|
++CONFIG_SPARSEMEM_STATIC=y
|
|
|
++
|
|
|
++#
|
|
|
++# Memory hotplug is currently incompatible with Software Suspend
|
|
|
++#
|
|
|
++CONFIG_PAGEFLAGS_EXTENDED=y
|
|
|
++CONFIG_SPLIT_PTLOCK_CPUS=4
|
|
|
++CONFIG_PHYS_ADDR_T_64BIT=y
|
|
|
++CONFIG_ZONE_DMA_FLAG=0
|
|
|
++CONFIG_VIRT_TO_BUS=y
|
|
|
++CONFIG_UNEVICTABLE_LRU=y
|
|
|
++CONFIG_HAVE_MLOCK=y
|
|
|
++CONFIG_HAVE_MLOCKED_PAGE_BIT=y
|
|
|
++CONFIG_TICK_ONESHOT=y
|
|
|
++CONFIG_NO_HZ=y
|
|
|
++CONFIG_HIGH_RES_TIMERS=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
|
|
++# CONFIG_HZ_48 is not set
|
|
|
++# CONFIG_HZ_100 is not set
|
|
|
++# CONFIG_HZ_128 is not set
|
|
|
++CONFIG_HZ_250=y
|
|
|
++# CONFIG_HZ_256 is not set
|
|
|
++# CONFIG_HZ_1000 is not set
|
|
|
++# CONFIG_HZ_1024 is not set
|
|
|
++CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
|
|
++CONFIG_HZ=250
|
|
|
++# CONFIG_PREEMPT_NONE is not set
|
|
|
++CONFIG_PREEMPT_VOLUNTARY=y
|
|
|
++# CONFIG_PREEMPT is not set
|
|
|
++CONFIG_KEXEC=y
|
|
|
++# CONFIG_SECCOMP is not set
|
|
|
++CONFIG_LOCKDEP_SUPPORT=y
|
|
|
++CONFIG_STACKTRACE_SUPPORT=y
|
|
|
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
|
|
++
|
|
|
++#
|
|
|
++# General setup
|
|
|
++#
|
|
|
++CONFIG_EXPERIMENTAL=y
|
|
|
++CONFIG_BROKEN_ON_SMP=y
|
|
|
++CONFIG_INIT_ENV_ARG_LIMIT=32
|
|
|
++CONFIG_LOCALVERSION=""
|
|
|
++# CONFIG_LOCALVERSION_AUTO is not set
|
|
|
++CONFIG_SWAP=y
|
|
|
++CONFIG_SYSVIPC=y
|
|
|
++CONFIG_SYSVIPC_SYSCTL=y
|
|
|
++CONFIG_POSIX_MQUEUE=y
|
|
|
++CONFIG_POSIX_MQUEUE_SYSCTL=y
|
|
|
++CONFIG_BSD_PROCESS_ACCT=y
|
|
|
++CONFIG_BSD_PROCESS_ACCT_V3=y
|
|
|
++# CONFIG_TASKSTATS is not set
|
|
|
++CONFIG_AUDIT=y
|
|
|
++
|
|
|
++#
|
|
|
++# RCU Subsystem
|
|
|
++#
|
|
|
++CONFIG_CLASSIC_RCU=y
|
|
|
++# CONFIG_TREE_RCU is not set
|
|
|
++# CONFIG_PREEMPT_RCU is not set
|
|
|
++# CONFIG_TREE_RCU_TRACE is not set
|
|
|
++# CONFIG_PREEMPT_RCU_TRACE is not set
|
|
|
++CONFIG_IKCONFIG=y
|
|
|
++CONFIG_IKCONFIG_PROC=y
|
|
|
++CONFIG_LOG_BUF_SHIFT=15
|
|
|
++# CONFIG_GROUP_SCHED is not set
|
|
|
++# CONFIG_CGROUPS is not set
|
|
|
++CONFIG_SYSFS_DEPRECATED=y
|
|
|
++CONFIG_SYSFS_DEPRECATED_V2=y
|
|
|
++# CONFIG_RELAY is not set
|
|
|
++# CONFIG_NAMESPACES is not set
|
|
|
++CONFIG_BLK_DEV_INITRD=y
|
|
|
++CONFIG_INITRAMFS_SOURCE=""
|
|
|
++CONFIG_RD_GZIP=y
|
|
|
++# CONFIG_RD_BZIP2 is not set
|
|
|
++# CONFIG_RD_LZMA is not set
|
|
|
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
|
++CONFIG_SYSCTL=y
|
|
|
++CONFIG_ANON_INODES=y
|
|
|
++CONFIG_EMBEDDED=y
|
|
|
++CONFIG_SYSCTL_SYSCALL=y
|
|
|
++CONFIG_KALLSYMS=y
|
|
|
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
|
|
++# CONFIG_STRIP_ASM_SYMS is not set
|
|
|
++CONFIG_HOTPLUG=y
|
|
|
++CONFIG_PRINTK=y
|
|
|
++CONFIG_BUG=y
|
|
|
++CONFIG_ELF_CORE=y
|
|
|
++CONFIG_PCSPKR_PLATFORM=y
|
|
|
++CONFIG_BASE_FULL=y
|
|
|
++CONFIG_FUTEX=y
|
|
|
++CONFIG_EPOLL=y
|
|
|
++CONFIG_SIGNALFD=y
|
|
|
++CONFIG_TIMERFD=y
|
|
|
++CONFIG_EVENTFD=y
|
|
|
++CONFIG_SHMEM=y
|
|
|
++CONFIG_AIO=y
|
|
|
++CONFIG_VM_EVENT_COUNTERS=y
|
|
|
++CONFIG_PCI_QUIRKS=y
|
|
|
++CONFIG_COMPAT_BRK=y
|
|
|
++CONFIG_SLAB=y
|
|
|
++# CONFIG_SLUB is not set
|
|
|
++# CONFIG_SLOB is not set
|
|
|
++CONFIG_PROFILING=y
|
|
|
++# CONFIG_MARKERS is not set
|
|
|
++# CONFIG_OPROFILE is not set
|
|
|
++CONFIG_HAVE_OPROFILE=y
|
|
|
++CONFIG_HAVE_SYSCALL_WRAPPERS=y
|
|
|
++# CONFIG_SLOW_WORK is not set
|
|
|
++# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
|
|
++CONFIG_SLABINFO=y
|
|
|
++CONFIG_RT_MUTEXES=y
|
|
|
++CONFIG_BASE_SMALL=0
|
|
|
++CONFIG_MODULES=y
|
|
|
++# CONFIG_MODULE_FORCE_LOAD is not set
|
|
|
++CONFIG_MODULE_UNLOAD=y
|
|
|
++CONFIG_MODULE_FORCE_UNLOAD=y
|
|
|
++CONFIG_MODVERSIONS=y
|
|
|
++# CONFIG_MODULE_SRCVERSION_ALL is not set
|
|
|
++CONFIG_BLOCK=y
|
|
|
++# CONFIG_BLK_DEV_BSG is not set
|
|
|
++# CONFIG_BLK_DEV_INTEGRITY is not set
|
|
|
++CONFIG_BLOCK_COMPAT=y
|
|
|
++
|
|
|
++#
|
|
|
++# IO Schedulers
|
|
|
++#
|
|
|
++CONFIG_IOSCHED_NOOP=y
|
|
|
++CONFIG_IOSCHED_AS=y
|
|
|
++CONFIG_IOSCHED_DEADLINE=y
|
|
|
++CONFIG_IOSCHED_CFQ=y
|
|
|
++# CONFIG_DEFAULT_AS is not set
|
|
|
++# CONFIG_DEFAULT_DEADLINE is not set
|
|
|
++CONFIG_DEFAULT_CFQ=y
|
|
|
++# CONFIG_DEFAULT_NOOP is not set
|
|
|
++CONFIG_DEFAULT_IOSCHED="cfq"
|
|
|
++# CONFIG_PROBE_INITRD_HEADER is not set
|
|
|
++CONFIG_FREEZER=y
|
|
|
++
|
|
|
++#
|
|
|
++# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
|
|
++#
|
|
|
++CONFIG_HW_HAS_PCI=y
|
|
|
++CONFIG_PCI=y
|
|
|
++CONFIG_PCI_DOMAINS=y
|
|
|
++# CONFIG_ARCH_SUPPORTS_MSI is not set
|
|
|
++CONFIG_PCI_LEGACY=y
|
|
|
++# CONFIG_PCI_STUB is not set
|
|
|
++# CONFIG_PCI_IOV is not set
|
|
|
++CONFIG_ISA=y
|
|
|
++CONFIG_MMU=y
|
|
|
++CONFIG_PCCARD=m
|
|
|
++# CONFIG_PCMCIA_DEBUG is not set
|
|
|
++CONFIG_PCMCIA=m
|
|
|
++CONFIG_PCMCIA_LOAD_CIS=y
|
|
|
++CONFIG_PCMCIA_IOCTL=y
|
|
|
++CONFIG_CARDBUS=y
|
|
|
++
|
|
|
++#
|
|
|
++# PC-card bridges
|
|
|
++#
|
|
|
++CONFIG_YENTA=m
|
|
|
++CONFIG_YENTA_O2=y
|
|
|
++CONFIG_YENTA_RICOH=y
|
|
|
++CONFIG_YENTA_TI=y
|
|
|
++CONFIG_YENTA_ENE_TUNE=y
|
|
|
++CONFIG_YENTA_TOSHIBA=y
|
|
|
++CONFIG_PD6729=m
|
|
|
++CONFIG_I82092=m
|
|
|
++CONFIG_I82365=m
|
|
|
++CONFIG_TCIC=m
|
|
|
++CONFIG_PCMCIA_PROBE=y
|
|
|
++CONFIG_PCCARD_NONSTATIC=m
|
|
|
++CONFIG_HOTPLUG_PCI=m
|
|
|
++CONFIG_HOTPLUG_PCI_FAKE=m
|
|
|
++CONFIG_HOTPLUG_PCI_CPCI=y
|
|
|
++CONFIG_HOTPLUG_PCI_SHPC=m
|
|
|
++
|
|
|
++#
|
|
|
++# Executable file formats
|
|
|
++#
|
|
|
++CONFIG_BINFMT_ELF=y
|
|
|
++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
|
|
++# CONFIG_HAVE_AOUT is not set
|
|
|
++CONFIG_BINFMT_MISC=m
|
|
|
++CONFIG_MIPS32_COMPAT=y
|
|
|
++CONFIG_COMPAT=y
|
|
|
++CONFIG_SYSVIPC_COMPAT=y
|
|
|
++CONFIG_MIPS32_O32=y
|
|
|
++CONFIG_MIPS32_N32=y
|
|
|
++CONFIG_BINFMT_ELF32=y
|
|
|
++
|
|
|
++#
|
|
|
++# Power management options
|
|
|
++#
|
|
|
++CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
|
++CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
|
++CONFIG_PM=y
|
|
|
++# CONFIG_PM_DEBUG is not set
|
|
|
++CONFIG_PM_SLEEP=y
|
|
|
++CONFIG_SUSPEND=y
|
|
|
++CONFIG_SUSPEND_FREEZER=y
|
|
|
++CONFIG_HIBERNATION=y
|
|
|
++CONFIG_PM_STD_PARTITION="/dev/hda3"
|
|
|
++
|
|
|
++#
|
|
|
++# CPU Frequency scaling
|
|
|
++#
|
|
|
++CONFIG_CPU_FREQ=y
|
|
|
++CONFIG_CPU_FREQ_TABLE=y
|
|
|
++# CONFIG_CPU_FREQ_DEBUG is not set
|
|
|
++CONFIG_CPU_FREQ_STAT=y
|
|
|
++# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
|
|
|
++CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
|
|
|
++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
|
++CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
|
|
++CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
|
|
++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
|
++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
|
|
++CONFIG_LOONGSON2F_CPU_FREQ=y
|
|
|
++CONFIG_NET=y
|
|
|
++
|
|
|
++#
|
|
|
++# Networking options
|
|
|
++#
|
|
|
++CONFIG_PACKET=y
|
|
|
++CONFIG_PACKET_MMAP=y
|
|
|
++CONFIG_UNIX=y
|
|
|
++CONFIG_XFRM=y
|
|
|
++CONFIG_XFRM_USER=m
|
|
|
++# CONFIG_XFRM_SUB_POLICY is not set
|
|
|
++# CONFIG_XFRM_MIGRATE is not set
|
|
|
++# CONFIG_XFRM_STATISTICS is not set
|
|
|
++CONFIG_XFRM_IPCOMP=m
|
|
|
++CONFIG_NET_KEY=m
|
|
|
++# CONFIG_NET_KEY_MIGRATE is not set
|
|
|
++CONFIG_INET=y
|
|
|
++CONFIG_IP_MULTICAST=y
|
|
|
++CONFIG_IP_ADVANCED_ROUTER=y
|
|
|
++CONFIG_ASK_IP_FIB_HASH=y
|
|
|
++# CONFIG_IP_FIB_TRIE is not set
|
|
|
++CONFIG_IP_FIB_HASH=y
|
|
|
++CONFIG_IP_MULTIPLE_TABLES=y
|
|
|
++CONFIG_IP_ROUTE_MULTIPATH=y
|
|
|
++CONFIG_IP_ROUTE_VERBOSE=y
|
|
|
++# CONFIG_IP_PNP is not set
|
|
|
++CONFIG_NET_IPIP=m
|
|
|
++CONFIG_NET_IPGRE=m
|
|
|
++CONFIG_NET_IPGRE_BROADCAST=y
|
|
|
++CONFIG_IP_MROUTE=y
|
|
|
++CONFIG_IP_PIMSM_V1=y
|
|
|
++CONFIG_IP_PIMSM_V2=y
|
|
|
++# CONFIG_ARPD is not set
|
|
|
++CONFIG_SYN_COOKIES=y
|
|
|
++CONFIG_INET_AH=m
|
|
|
++CONFIG_INET_ESP=m
|
|
|
++CONFIG_INET_IPCOMP=m
|
|
|
++CONFIG_INET_XFRM_TUNNEL=m
|
|
|
++CONFIG_INET_TUNNEL=m
|
|
|
++CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
|
|
++CONFIG_INET_XFRM_MODE_TUNNEL=m
|
|
|
++CONFIG_INET_XFRM_MODE_BEET=y
|
|
|
++CONFIG_INET_LRO=y
|
|
|
++CONFIG_INET_DIAG=m
|
|
|
++CONFIG_INET_TCP_DIAG=m
|
|
|
++CONFIG_TCP_CONG_ADVANCED=y
|
|
|
++CONFIG_TCP_CONG_BIC=y
|
|
|
++CONFIG_TCP_CONG_CUBIC=m
|
|
|
++CONFIG_TCP_CONG_WESTWOOD=m
|
|
|
++CONFIG_TCP_CONG_HTCP=m
|
|
|
++CONFIG_TCP_CONG_HSTCP=m
|
|
|
++CONFIG_TCP_CONG_HYBLA=m
|
|
|
++CONFIG_TCP_CONG_VEGAS=m
|
|
|
++CONFIG_TCP_CONG_SCALABLE=m
|
|
|
++CONFIG_TCP_CONG_LP=m
|
|
|
++CONFIG_TCP_CONG_VENO=m
|
|
|
++# CONFIG_TCP_CONG_YEAH is not set
|
|
|
++# CONFIG_TCP_CONG_ILLINOIS is not set
|
|
|
++CONFIG_DEFAULT_BIC=y
|
|
|
++# CONFIG_DEFAULT_CUBIC is not set
|
|
|
++# CONFIG_DEFAULT_HTCP is not set
|
|
|
++# CONFIG_DEFAULT_VEGAS is not set
|
|
|
++# CONFIG_DEFAULT_WESTWOOD is not set
|
|
|
++# CONFIG_DEFAULT_RENO is not set
|
|
|
++CONFIG_DEFAULT_TCP_CONG="bic"
|
|
|
++# CONFIG_TCP_MD5SIG is not set
|
|
|
++CONFIG_IPV6=m
|
|
|
++CONFIG_IPV6_PRIVACY=y
|
|
|
++# CONFIG_IPV6_ROUTER_PREF is not set
|
|
|
++# CONFIG_IPV6_OPTIMISTIC_DAD is not set
|
|
|
++CONFIG_INET6_AH=m
|
|
|
++CONFIG_INET6_ESP=m
|
|
|
++CONFIG_INET6_IPCOMP=m
|
|
|
++# CONFIG_IPV6_MIP6 is not set
|
|
|
++CONFIG_INET6_XFRM_TUNNEL=m
|
|
|
++CONFIG_INET6_TUNNEL=m
|
|
|
++CONFIG_INET6_XFRM_MODE_TRANSPORT=m
|
|
|
++CONFIG_INET6_XFRM_MODE_TUNNEL=m
|
|
|
++CONFIG_INET6_XFRM_MODE_BEET=m
|
|
|
++# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
|
|
|
++CONFIG_IPV6_SIT=m
|
|
|
++CONFIG_IPV6_NDISC_NODETYPE=y
|
|
|
++CONFIG_IPV6_TUNNEL=m
|
|
|
++# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
|
|
++# CONFIG_IPV6_MROUTE is not set
|
|
|
++# CONFIG_NETLABEL is not set
|
|
|
++CONFIG_NETWORK_SECMARK=y
|
|
|
++CONFIG_NETFILTER=y
|
|
|
++# CONFIG_NETFILTER_DEBUG is not set
|
|
|
++CONFIG_NETFILTER_ADVANCED=y
|
|
|
++CONFIG_BRIDGE_NETFILTER=y
|
|
|
++
|
|
|
++#
|
|
|
++# Core Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_NETFILTER_NETLINK=m
|
|
|
++CONFIG_NETFILTER_NETLINK_QUEUE=m
|
|
|
++CONFIG_NETFILTER_NETLINK_LOG=m
|
|
|
++# CONFIG_NF_CONNTRACK is not set
|
|
|
++# CONFIG_NETFILTER_TPROXY is not set
|
|
|
++CONFIG_NETFILTER_XTABLES=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_HL=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_MARK=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_SECMARK=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_HL=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MARK=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_POLICY=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_REALM=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_SCTP=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_TIME is not set
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_U32 is not set
|
|
|
++CONFIG_IP_VS=m
|
|
|
++# CONFIG_IP_VS_IPV6 is not set
|
|
|
++# CONFIG_IP_VS_DEBUG is not set
|
|
|
++CONFIG_IP_VS_TAB_BITS=12
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS transport protocol load balancing support
|
|
|
++#
|
|
|
++CONFIG_IP_VS_PROTO_TCP=y
|
|
|
++CONFIG_IP_VS_PROTO_UDP=y
|
|
|
++CONFIG_IP_VS_PROTO_AH_ESP=y
|
|
|
++CONFIG_IP_VS_PROTO_ESP=y
|
|
|
++CONFIG_IP_VS_PROTO_AH=y
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS scheduler
|
|
|
++#
|
|
|
++CONFIG_IP_VS_RR=m
|
|
|
++CONFIG_IP_VS_WRR=m
|
|
|
++CONFIG_IP_VS_LC=m
|
|
|
++CONFIG_IP_VS_WLC=m
|
|
|
++CONFIG_IP_VS_LBLC=m
|
|
|
++CONFIG_IP_VS_LBLCR=m
|
|
|
++CONFIG_IP_VS_DH=m
|
|
|
++CONFIG_IP_VS_SH=m
|
|
|
++CONFIG_IP_VS_SED=m
|
|
|
++CONFIG_IP_VS_NQ=m
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS application helper
|
|
|
++#
|
|
|
++CONFIG_IP_VS_FTP=m
|
|
|
++
|
|
|
++#
|
|
|
++# IP: Netfilter Configuration
|
|
|
++#
|
|
|
++# CONFIG_NF_DEFRAG_IPV4 is not set
|
|
|
++CONFIG_IP_NF_QUEUE=m
|
|
|
++CONFIG_IP_NF_IPTABLES=m
|
|
|
++CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
|
|
++CONFIG_IP_NF_MATCH_AH=m
|
|
|
++CONFIG_IP_NF_MATCH_ECN=m
|
|
|
++CONFIG_IP_NF_MATCH_TTL=m
|
|
|
++CONFIG_IP_NF_FILTER=m
|
|
|
++CONFIG_IP_NF_TARGET_REJECT=m
|
|
|
++CONFIG_IP_NF_TARGET_LOG=m
|
|
|
++CONFIG_IP_NF_TARGET_ULOG=m
|
|
|
++CONFIG_IP_NF_MANGLE=m
|
|
|
++CONFIG_IP_NF_TARGET_ECN=m
|
|
|
++CONFIG_IP_NF_TARGET_TTL=m
|
|
|
++CONFIG_IP_NF_RAW=m
|
|
|
++# CONFIG_IP_NF_SECURITY is not set
|
|
|
++CONFIG_IP_NF_ARPTABLES=m
|
|
|
++CONFIG_IP_NF_ARPFILTER=m
|
|
|
++CONFIG_IP_NF_ARP_MANGLE=m
|
|
|
++
|
|
|
++#
|
|
|
++# IPv6: Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_IP6_NF_QUEUE=m
|
|
|
++CONFIG_IP6_NF_IPTABLES=m
|
|
|
++CONFIG_IP6_NF_MATCH_AH=m
|
|
|
++CONFIG_IP6_NF_MATCH_EUI64=m
|
|
|
++CONFIG_IP6_NF_MATCH_FRAG=m
|
|
|
++CONFIG_IP6_NF_MATCH_OPTS=m
|
|
|
++CONFIG_IP6_NF_MATCH_HL=m
|
|
|
++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
|
|
++# CONFIG_IP6_NF_MATCH_MH is not set
|
|
|
++CONFIG_IP6_NF_MATCH_RT=m
|
|
|
++CONFIG_IP6_NF_TARGET_HL=m
|
|
|
++CONFIG_IP6_NF_TARGET_LOG=m
|
|
|
++CONFIG_IP6_NF_FILTER=m
|
|
|
++CONFIG_IP6_NF_TARGET_REJECT=m
|
|
|
++CONFIG_IP6_NF_MANGLE=m
|
|
|
++CONFIG_IP6_NF_RAW=m
|
|
|
++# CONFIG_IP6_NF_SECURITY is not set
|
|
|
++
|
|
|
++#
|
|
|
++# DECnet: Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_DECNET_NF_GRABULATOR=m
|
|
|
++CONFIG_BRIDGE_NF_EBTABLES=m
|
|
|
++CONFIG_BRIDGE_EBT_BROUTE=m
|
|
|
++CONFIG_BRIDGE_EBT_T_FILTER=m
|
|
|
++CONFIG_BRIDGE_EBT_T_NAT=m
|
|
|
++CONFIG_BRIDGE_EBT_802_3=m
|
|
|
++CONFIG_BRIDGE_EBT_AMONG=m
|
|
|
++CONFIG_BRIDGE_EBT_ARP=m
|
|
|
++CONFIG_BRIDGE_EBT_IP=m
|
|
|
++# CONFIG_BRIDGE_EBT_IP6 is not set
|
|
|
++CONFIG_BRIDGE_EBT_LIMIT=m
|
|
|
++CONFIG_BRIDGE_EBT_MARK=m
|
|
|
++CONFIG_BRIDGE_EBT_PKTTYPE=m
|
|
|
++CONFIG_BRIDGE_EBT_STP=m
|
|
|
++CONFIG_BRIDGE_EBT_VLAN=m
|
|
|
++CONFIG_BRIDGE_EBT_ARPREPLY=m
|
|
|
++CONFIG_BRIDGE_EBT_DNAT=m
|
|
|
++CONFIG_BRIDGE_EBT_MARK_T=m
|
|
|
++CONFIG_BRIDGE_EBT_REDIRECT=m
|
|
|
++CONFIG_BRIDGE_EBT_SNAT=m
|
|
|
++CONFIG_BRIDGE_EBT_LOG=m
|
|
|
++CONFIG_BRIDGE_EBT_ULOG=m
|
|
|
++# CONFIG_BRIDGE_EBT_NFLOG is not set
|
|
|
++CONFIG_IP_DCCP=m
|
|
|
++CONFIG_INET_DCCP_DIAG=m
|
|
|
++
|
|
|
++#
|
|
|
++# DCCP CCIDs Configuration (EXPERIMENTAL)
|
|
|
++#
|
|
|
++# CONFIG_IP_DCCP_CCID2_DEBUG is not set
|
|
|
++CONFIG_IP_DCCP_CCID3=y
|
|
|
++# CONFIG_IP_DCCP_CCID3_DEBUG is not set
|
|
|
++CONFIG_IP_DCCP_CCID3_RTO=100
|
|
|
++CONFIG_IP_DCCP_TFRC_LIB=y
|
|
|
++CONFIG_IP_SCTP=m
|
|
|
++# CONFIG_SCTP_DBG_MSG is not set
|
|
|
++# CONFIG_SCTP_DBG_OBJCNT is not set
|
|
|
++# CONFIG_SCTP_HMAC_NONE is not set
|
|
|
++# CONFIG_SCTP_HMAC_SHA1 is not set
|
|
|
++CONFIG_SCTP_HMAC_MD5=y
|
|
|
++CONFIG_TIPC=m
|
|
|
++CONFIG_TIPC_ADVANCED=y
|
|
|
++CONFIG_TIPC_ZONES=3
|
|
|
++CONFIG_TIPC_CLUSTERS=1
|
|
|
++CONFIG_TIPC_NODES=255
|
|
|
++CONFIG_TIPC_SLAVE_NODES=0
|
|
|
++CONFIG_TIPC_PORTS=8191
|
|
|
++CONFIG_TIPC_LOG=0
|
|
|
++# CONFIG_TIPC_DEBUG is not set
|
|
|
++CONFIG_ATM=y
|
|
|
++CONFIG_ATM_CLIP=y
|
|
|
++# CONFIG_ATM_CLIP_NO_ICMP is not set
|
|
|
++CONFIG_ATM_LANE=m
|
|
|
++CONFIG_ATM_MPOA=m
|
|
|
++CONFIG_ATM_BR2684=m
|
|
|
++# CONFIG_ATM_BR2684_IPFILTER is not set
|
|
|
++CONFIG_STP=m
|
|
|
++CONFIG_BRIDGE=m
|
|
|
++# CONFIG_NET_DSA is not set
|
|
|
++CONFIG_VLAN_8021Q=m
|
|
|
++# CONFIG_VLAN_8021Q_GVRP is not set
|
|
|
++CONFIG_DECNET=m
|
|
|
++# CONFIG_DECNET_ROUTER is not set
|
|
|
++CONFIG_LLC=m
|
|
|
++CONFIG_LLC2=m
|
|
|
++CONFIG_IPX=m
|
|
|
++# CONFIG_IPX_INTERN is not set
|
|
|
++CONFIG_ATALK=m
|
|
|
++CONFIG_DEV_APPLETALK=m
|
|
|
++# CONFIG_COPS is not set
|
|
|
++CONFIG_IPDDP=m
|
|
|
++CONFIG_IPDDP_ENCAP=y
|
|
|
++CONFIG_IPDDP_DECAP=y
|
|
|
++CONFIG_X25=m
|
|
|
++CONFIG_LAPB=m
|
|
|
++CONFIG_ECONET=m
|
|
|
++CONFIG_ECONET_AUNUDP=y
|
|
|
++CONFIG_ECONET_NATIVE=y
|
|
|
++CONFIG_WAN_ROUTER=m
|
|
|
++# CONFIG_PHONET is not set
|
|
|
++CONFIG_NET_SCHED=y
|
|
|
++
|
|
|
++#
|
|
|
++# Queueing/Scheduling
|
|
|
++#
|
|
|
++CONFIG_NET_SCH_CBQ=m
|
|
|
++CONFIG_NET_SCH_HTB=m
|
|
|
++CONFIG_NET_SCH_HFSC=m
|
|
|
++CONFIG_NET_SCH_ATM=m
|
|
|
++CONFIG_NET_SCH_PRIO=m
|
|
|
++# CONFIG_NET_SCH_MULTIQ is not set
|
|
|
++CONFIG_NET_SCH_RED=m
|
|
|
++CONFIG_NET_SCH_SFQ=m
|
|
|
++CONFIG_NET_SCH_TEQL=m
|
|
|
++CONFIG_NET_SCH_TBF=m
|
|
|
++CONFIG_NET_SCH_GRED=m
|
|
|
++CONFIG_NET_SCH_DSMARK=m
|
|
|
++CONFIG_NET_SCH_NETEM=m
|
|
|
++# CONFIG_NET_SCH_DRR is not set
|
|
|
++CONFIG_NET_SCH_INGRESS=m
|
|
|
++
|
|
|
++#
|
|
|
++# Classification
|
|
|
++#
|
|
|
++CONFIG_NET_CLS=y
|
|
|
++CONFIG_NET_CLS_BASIC=m
|
|
|
++CONFIG_NET_CLS_TCINDEX=m
|
|
|
++CONFIG_NET_CLS_ROUTE4=m
|
|
|
++CONFIG_NET_CLS_ROUTE=y
|
|
|
++CONFIG_NET_CLS_FW=m
|
|
|
++CONFIG_NET_CLS_U32=m
|
|
|
++CONFIG_CLS_U32_PERF=y
|
|
|
++CONFIG_CLS_U32_MARK=y
|
|
|
++CONFIG_NET_CLS_RSVP=m
|
|
|
++CONFIG_NET_CLS_RSVP6=m
|
|
|
++# CONFIG_NET_CLS_FLOW is not set
|
|
|
++CONFIG_NET_EMATCH=y
|
|
|
++CONFIG_NET_EMATCH_STACK=32
|
|
|
++CONFIG_NET_EMATCH_CMP=m
|
|
|
++CONFIG_NET_EMATCH_NBYTE=m
|
|
|
++CONFIG_NET_EMATCH_U32=m
|
|
|
++CONFIG_NET_EMATCH_META=m
|
|
|
++CONFIG_NET_EMATCH_TEXT=m
|
|
|
++CONFIG_NET_CLS_ACT=y
|
|
|
++CONFIG_NET_ACT_POLICE=m
|
|
|
++CONFIG_NET_ACT_GACT=m
|
|
|
++CONFIG_GACT_PROB=y
|
|
|
++CONFIG_NET_ACT_MIRRED=m
|
|
|
++CONFIG_NET_ACT_IPT=m
|
|
|
++# CONFIG_NET_ACT_NAT is not set
|
|
|
++CONFIG_NET_ACT_PEDIT=m
|
|
|
++CONFIG_NET_ACT_SIMP=m
|
|
|
++# CONFIG_NET_ACT_SKBEDIT is not set
|
|
|
++CONFIG_NET_CLS_IND=y
|
|
|
++CONFIG_NET_SCH_FIFO=y
|
|
|
++# CONFIG_DCB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Network testing
|
|
|
++#
|
|
|
++CONFIG_NET_PKTGEN=m
|
|
|
++CONFIG_HAMRADIO=y
|
|
|
++
|
|
|
++#
|
|
|
++# Packet Radio protocols
|
|
|
++#
|
|
|
++CONFIG_AX25=m
|
|
|
++# CONFIG_AX25_DAMA_SLAVE is not set
|
|
|
++CONFIG_NETROM=m
|
|
|
++CONFIG_ROSE=m
|
|
|
++
|
|
|
++#
|
|
|
++# AX.25 network device drivers
|
|
|
++#
|
|
|
++CONFIG_MKISS=m
|
|
|
++CONFIG_6PACK=m
|
|
|
++CONFIG_BPQETHER=m
|
|
|
++CONFIG_BAYCOM_SER_FDX=m
|
|
|
++CONFIG_BAYCOM_SER_HDX=m
|
|
|
++CONFIG_YAM=m
|
|
|
++# CONFIG_CAN is not set
|
|
|
++# CONFIG_IRDA is not set
|
|
|
++# CONFIG_BT is not set
|
|
|
++CONFIG_AF_RXRPC=y
|
|
|
++# CONFIG_AF_RXRPC_DEBUG is not set
|
|
|
++# CONFIG_RXKAD is not set
|
|
|
++CONFIG_FIB_RULES=y
|
|
|
++# CONFIG_WIRELESS is not set
|
|
|
++# CONFIG_WIMAX is not set
|
|
|
++# CONFIG_RFKILL is not set
|
|
|
++# CONFIG_NET_9P is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Device Drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Generic Driver Options
|
|
|
++#
|
|
|
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
|
++CONFIG_STANDALONE=y
|
|
|
++CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|
|
++CONFIG_FW_LOADER=m
|
|
|
++CONFIG_FIRMWARE_IN_KERNEL=y
|
|
|
++CONFIG_EXTRA_FIRMWARE=""
|
|
|
++# CONFIG_SYS_HYPERVISOR is not set
|
|
|
++CONFIG_CONNECTOR=m
|
|
|
++# CONFIG_MTD is not set
|
|
|
++# CONFIG_PARPORT is not set
|
|
|
++CONFIG_PNP=y
|
|
|
++CONFIG_PNP_DEBUG_MESSAGES=y
|
|
|
++
|
|
|
++#
|
|
|
++# Protocols
|
|
|
++#
|
|
|
++CONFIG_ISAPNP=y
|
|
|
++# CONFIG_PNPACPI is not set
|
|
|
++CONFIG_BLK_DEV=y
|
|
|
++# CONFIG_BLK_CPQ_DA is not set
|
|
|
++# CONFIG_BLK_CPQ_CISS_DA is not set
|
|
|
++# CONFIG_BLK_DEV_DAC960 is not set
|
|
|
++# CONFIG_BLK_DEV_UMEM is not set
|
|
|
++# CONFIG_BLK_DEV_COW_COMMON is not set
|
|
|
++CONFIG_BLK_DEV_LOOP=y
|
|
|
++CONFIG_BLK_DEV_CRYPTOLOOP=y
|
|
|
++CONFIG_BLK_DEV_NBD=m
|
|
|
++# CONFIG_BLK_DEV_SX8 is not set
|
|
|
++# CONFIG_BLK_DEV_UB is not set
|
|
|
++CONFIG_BLK_DEV_RAM=y
|
|
|
++CONFIG_BLK_DEV_RAM_COUNT=16
|
|
|
++CONFIG_BLK_DEV_RAM_SIZE=8192
|
|
|
++# CONFIG_BLK_DEV_XIP is not set
|
|
|
++CONFIG_CDROM_PKTCDVD=m
|
|
|
++CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
|
|
++# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
|
|
++CONFIG_ATA_OVER_ETH=m
|
|
|
++# CONFIG_BLK_DEV_HD is not set
|
|
|
++CONFIG_MISC_DEVICES=y
|
|
|
++# CONFIG_PHANTOM is not set
|
|
|
++# CONFIG_SGI_IOC4 is not set
|
|
|
++# CONFIG_TIFM_CORE is not set
|
|
|
++# CONFIG_ICS932S401 is not set
|
|
|
++# CONFIG_ENCLOSURE_SERVICES is not set
|
|
|
++# CONFIG_HP_ILO is not set
|
|
|
++# CONFIG_ISL29003 is not set
|
|
|
++# CONFIG_C2PORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# EEPROM support
|
|
|
++#
|
|
|
++# CONFIG_EEPROM_AT24 is not set
|
|
|
++# CONFIG_EEPROM_LEGACY is not set
|
|
|
++# CONFIG_EEPROM_93CX6 is not set
|
|
|
++CONFIG_HAVE_IDE=y
|
|
|
++CONFIG_IDE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Please see Documentation/ide/ide.txt for help/info on IDE drives
|
|
|
++#
|
|
|
++CONFIG_IDE_XFER_MODE=y
|
|
|
++CONFIG_IDE_TIMINGS=y
|
|
|
++CONFIG_IDE_ATAPI=y
|
|
|
++# CONFIG_BLK_DEV_IDE_SATA is not set
|
|
|
++CONFIG_IDE_GD=y
|
|
|
++CONFIG_IDE_GD_ATA=y
|
|
|
++# CONFIG_IDE_GD_ATAPI is not set
|
|
|
++# CONFIG_BLK_DEV_IDECS is not set
|
|
|
++# CONFIG_BLK_DEV_DELKIN is not set
|
|
|
++CONFIG_BLK_DEV_IDECD=m
|
|
|
++CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
|
|
|
++# CONFIG_BLK_DEV_IDETAPE is not set
|
|
|
++CONFIG_IDE_TASK_IOCTL=y
|
|
|
++CONFIG_IDE_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# IDE chipset support/bugfixes
|
|
|
++#
|
|
|
++# CONFIG_IDE_GENERIC is not set
|
|
|
++# CONFIG_BLK_DEV_PLATFORM is not set
|
|
|
++# CONFIG_BLK_DEV_IDEPNP is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_SFF=y
|
|
|
++
|
|
|
++#
|
|
|
++# PCI IDE chipsets support
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_IDEPCI=y
|
|
|
++# CONFIG_IDEPCI_PCIBUS_ORDER is not set
|
|
|
++# CONFIG_BLK_DEV_OFFBOARD is not set
|
|
|
++CONFIG_BLK_DEV_GENERIC=y
|
|
|
++# CONFIG_BLK_DEV_OPTI621 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_PCI=y
|
|
|
++# CONFIG_BLK_DEV_AEC62XX is not set
|
|
|
++# CONFIG_BLK_DEV_ALI15X3 is not set
|
|
|
++CONFIG_BLK_DEV_AMD74XX=y
|
|
|
++# CONFIG_BLK_DEV_CMD64X is not set
|
|
|
++# CONFIG_BLK_DEV_TRIFLEX is not set
|
|
|
++# CONFIG_BLK_DEV_CS5520 is not set
|
|
|
++# CONFIG_BLK_DEV_CS5530 is not set
|
|
|
++# CONFIG_BLK_DEV_HPT366 is not set
|
|
|
++# CONFIG_BLK_DEV_JMICRON is not set
|
|
|
++# CONFIG_BLK_DEV_SC1200 is not set
|
|
|
++# CONFIG_BLK_DEV_PIIX is not set
|
|
|
++# CONFIG_BLK_DEV_IT8172 is not set
|
|
|
++# CONFIG_BLK_DEV_IT8213 is not set
|
|
|
++# CONFIG_BLK_DEV_IT821X is not set
|
|
|
++# CONFIG_BLK_DEV_NS87415 is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
|
|
++# CONFIG_BLK_DEV_SVWKS is not set
|
|
|
++# CONFIG_BLK_DEV_SIIMAGE is not set
|
|
|
++# CONFIG_BLK_DEV_SLC90E66 is not set
|
|
|
++# CONFIG_BLK_DEV_TRM290 is not set
|
|
|
++# CONFIG_BLK_DEV_VIA82CXXX is not set
|
|
|
++# CONFIG_BLK_DEV_TC86C001 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Other IDE chipsets support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Note: most of these also require special kernel boot parameters
|
|
|
++#
|
|
|
++# CONFIG_BLK_DEV_4DRIVES is not set
|
|
|
++# CONFIG_BLK_DEV_ALI14XX is not set
|
|
|
++# CONFIG_BLK_DEV_DTC2278 is not set
|
|
|
++# CONFIG_BLK_DEV_HT6560B is not set
|
|
|
++# CONFIG_BLK_DEV_QD65XX is not set
|
|
|
++# CONFIG_BLK_DEV_UMC8672 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI device support
|
|
|
++#
|
|
|
++# CONFIG_RAID_ATTRS is not set
|
|
|
++CONFIG_SCSI=y
|
|
|
++CONFIG_SCSI_DMA=y
|
|
|
++# CONFIG_SCSI_TGT is not set
|
|
|
++CONFIG_SCSI_NETLINK=y
|
|
|
++CONFIG_SCSI_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI support type (disk, tape, CD-ROM)
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_SD=y
|
|
|
++# CONFIG_CHR_DEV_ST is not set
|
|
|
++# CONFIG_CHR_DEV_OSST is not set
|
|
|
++CONFIG_BLK_DEV_SR=m
|
|
|
++CONFIG_BLK_DEV_SR_VENDOR=y
|
|
|
++CONFIG_CHR_DEV_SG=m
|
|
|
++CONFIG_CHR_DEV_SCH=m
|
|
|
++
|
|
|
++#
|
|
|
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
|
|
++#
|
|
|
++CONFIG_SCSI_MULTI_LUN=y
|
|
|
++CONFIG_SCSI_CONSTANTS=y
|
|
|
++CONFIG_SCSI_LOGGING=y
|
|
|
++# CONFIG_SCSI_SCAN_ASYNC is not set
|
|
|
++CONFIG_SCSI_WAIT_SCAN=m
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI Transports
|
|
|
++#
|
|
|
++CONFIG_SCSI_SPI_ATTRS=m
|
|
|
++CONFIG_SCSI_FC_ATTRS=m
|
|
|
++CONFIG_SCSI_ISCSI_ATTRS=m
|
|
|
++CONFIG_SCSI_SAS_ATTRS=m
|
|
|
++# CONFIG_SCSI_SAS_LIBSAS is not set
|
|
|
++CONFIG_SCSI_SRP_ATTRS=m
|
|
|
++CONFIG_SCSI_LOWLEVEL=y
|
|
|
++CONFIG_ISCSI_TCP=m
|
|
|
++# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
|
|
++# CONFIG_SCSI_3W_9XXX is not set
|
|
|
++# CONFIG_SCSI_ACARD is not set
|
|
|
++# CONFIG_SCSI_AACRAID is not set
|
|
|
++# CONFIG_SCSI_AIC7XXX is not set
|
|
|
++# CONFIG_SCSI_AIC7XXX_OLD is not set
|
|
|
++# CONFIG_SCSI_AIC79XX is not set
|
|
|
++# CONFIG_SCSI_AIC94XX is not set
|
|
|
++# CONFIG_SCSI_DPT_I2O is not set
|
|
|
++# CONFIG_SCSI_ADVANSYS is not set
|
|
|
++# CONFIG_SCSI_IN2000 is not set
|
|
|
++# CONFIG_SCSI_ARCMSR is not set
|
|
|
++# CONFIG_MEGARAID_NEWGEN is not set
|
|
|
++# CONFIG_MEGARAID_LEGACY is not set
|
|
|
++# CONFIG_MEGARAID_SAS is not set
|
|
|
++# CONFIG_SCSI_MPT2SAS is not set
|
|
|
++# CONFIG_SCSI_HPTIOP is not set
|
|
|
++# CONFIG_LIBFC is not set
|
|
|
++# CONFIG_LIBFCOE is not set
|
|
|
++# CONFIG_FCOE is not set
|
|
|
++# CONFIG_SCSI_DMX3191D is not set
|
|
|
++# CONFIG_SCSI_DTC3280 is not set
|
|
|
++# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
|
|
++# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
|
|
++# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
|
|
|
++# CONFIG_SCSI_IPS is not set
|
|
|
++# CONFIG_SCSI_INITIO is not set
|
|
|
++# CONFIG_SCSI_INIA100 is not set
|
|
|
++# CONFIG_SCSI_MVSAS is not set
|
|
|
++# CONFIG_SCSI_NCR53C406A is not set
|
|
|
++# CONFIG_SCSI_STEX is not set
|
|
|
++# CONFIG_SCSI_SYM53C8XX_2 is not set
|
|
|
++# CONFIG_SCSI_PAS16 is not set
|
|
|
++# CONFIG_SCSI_QLOGIC_FAS is not set
|
|
|
++# CONFIG_SCSI_QLOGIC_1280 is not set
|
|
|
++# CONFIG_SCSI_QLA_FC is not set
|
|
|
++# CONFIG_SCSI_QLA_ISCSI is not set
|
|
|
++# CONFIG_SCSI_LPFC is not set
|
|
|
++# CONFIG_SCSI_SYM53C416 is not set
|
|
|
++# CONFIG_SCSI_DC395x is not set
|
|
|
++# CONFIG_SCSI_DC390T is not set
|
|
|
++# CONFIG_SCSI_T128 is not set
|
|
|
++# CONFIG_SCSI_DEBUG is not set
|
|
|
++# CONFIG_SCSI_SRP is not set
|
|
|
++# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
|
|
|
++# CONFIG_SCSI_DH is not set
|
|
|
++# CONFIG_SCSI_OSD_INITIATOR is not set
|
|
|
++# CONFIG_ATA is not set
|
|
|
++CONFIG_MD=y
|
|
|
++CONFIG_BLK_DEV_MD=m
|
|
|
++CONFIG_MD_LINEAR=m
|
|
|
++CONFIG_MD_RAID0=m
|
|
|
++CONFIG_MD_RAID1=m
|
|
|
++CONFIG_MD_RAID10=m
|
|
|
++CONFIG_MD_RAID456=m
|
|
|
++CONFIG_MD_RAID6_PQ=m
|
|
|
++CONFIG_MD_MULTIPATH=m
|
|
|
++CONFIG_MD_FAULTY=m
|
|
|
++CONFIG_BLK_DEV_DM=m
|
|
|
++# CONFIG_DM_DEBUG is not set
|
|
|
++CONFIG_DM_CRYPT=m
|
|
|
++CONFIG_DM_SNAPSHOT=m
|
|
|
++CONFIG_DM_MIRROR=m
|
|
|
++CONFIG_DM_ZERO=m
|
|
|
++CONFIG_DM_MULTIPATH=m
|
|
|
++# CONFIG_DM_DELAY is not set
|
|
|
++# CONFIG_DM_UEVENT is not set
|
|
|
++CONFIG_FUSION=y
|
|
|
++CONFIG_FUSION_SPI=m
|
|
|
++CONFIG_FUSION_FC=m
|
|
|
++CONFIG_FUSION_SAS=m
|
|
|
++CONFIG_FUSION_MAX_SGE=40
|
|
|
++CONFIG_FUSION_CTL=m
|
|
|
++# CONFIG_FUSION_LOGGING is not set
|
|
|
++
|
|
|
++#
|
|
|
++# IEEE 1394 (FireWire) support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Enable only one of the two stacks, unless you know what you are doing
|
|
|
++#
|
|
|
++# CONFIG_FIREWIRE is not set
|
|
|
++# CONFIG_IEEE1394 is not set
|
|
|
++# CONFIG_I2O is not set
|
|
|
++CONFIG_NETDEVICES=y
|
|
|
++CONFIG_COMPAT_NET_DEV_OPS=y
|
|
|
++# CONFIG_IFB is not set
|
|
|
++# CONFIG_DUMMY is not set
|
|
|
++# CONFIG_BONDING is not set
|
|
|
++# CONFIG_MACVLAN is not set
|
|
|
++# CONFIG_EQUALIZER is not set
|
|
|
++CONFIG_TUN=m
|
|
|
++CONFIG_VETH=m
|
|
|
++CONFIG_NET_SB1000=m
|
|
|
++# CONFIG_ARCNET is not set
|
|
|
++CONFIG_PHYLIB=y
|
|
|
++
|
|
|
++#
|
|
|
++# MII PHY device drivers
|
|
|
++#
|
|
|
++CONFIG_MARVELL_PHY=m
|
|
|
++CONFIG_DAVICOM_PHY=m
|
|
|
++CONFIG_QSEMI_PHY=m
|
|
|
++CONFIG_LXT_PHY=m
|
|
|
++CONFIG_CICADA_PHY=m
|
|
|
++CONFIG_VITESSE_PHY=m
|
|
|
++CONFIG_SMSC_PHY=m
|
|
|
++# CONFIG_BROADCOM_PHY is not set
|
|
|
++# CONFIG_ICPLUS_PHY is not set
|
|
|
++CONFIG_REALTEK_PHY=m
|
|
|
++# CONFIG_NATIONAL_PHY is not set
|
|
|
++# CONFIG_STE10XP is not set
|
|
|
++# CONFIG_LSI_ET1011C_PHY is not set
|
|
|
++# CONFIG_FIXED_PHY is not set
|
|
|
++# CONFIG_MDIO_BITBANG is not set
|
|
|
++CONFIG_NET_ETHERNET=y
|
|
|
++CONFIG_MII=y
|
|
|
++# CONFIG_AX88796 is not set
|
|
|
++# CONFIG_HAPPYMEAL is not set
|
|
|
++# CONFIG_SUNGEM is not set
|
|
|
++# CONFIG_CASSINI is not set
|
|
|
++# CONFIG_NET_VENDOR_3COM is not set
|
|
|
++# CONFIG_NET_VENDOR_SMC is not set
|
|
|
++# CONFIG_SMC91X is not set
|
|
|
++# CONFIG_DM9000 is not set
|
|
|
++# CONFIG_ETHOC is not set
|
|
|
++# CONFIG_NET_VENDOR_RACAL is not set
|
|
|
++# CONFIG_DNET is not set
|
|
|
++# CONFIG_NET_TULIP is not set
|
|
|
++# CONFIG_AT1700 is not set
|
|
|
++# CONFIG_DEPCA is not set
|
|
|
++# CONFIG_HP100 is not set
|
|
|
++# CONFIG_NET_ISA is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_TAH is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
|
|
++# CONFIG_NET_PCI is not set
|
|
|
++# CONFIG_B44 is not set
|
|
|
++# CONFIG_CS89x0 is not set
|
|
|
++# CONFIG_ATL2 is not set
|
|
|
++CONFIG_NETDEV_1000=y
|
|
|
++# CONFIG_ACENIC is not set
|
|
|
++# CONFIG_DL2K is not set
|
|
|
++# CONFIG_E1000 is not set
|
|
|
++# CONFIG_E1000E is not set
|
|
|
++# CONFIG_IP1000 is not set
|
|
|
++# CONFIG_IGB is not set
|
|
|
++# CONFIG_IGBVF is not set
|
|
|
++# CONFIG_NS83820 is not set
|
|
|
++# CONFIG_HAMACHI is not set
|
|
|
++# CONFIG_YELLOWFIN is not set
|
|
|
++CONFIG_R8169=y
|
|
|
++CONFIG_R8169_VLAN=y
|
|
|
++# CONFIG_SIS190 is not set
|
|
|
++# CONFIG_SKGE is not set
|
|
|
++# CONFIG_SKY2 is not set
|
|
|
++# CONFIG_VIA_VELOCITY is not set
|
|
|
++# CONFIG_TIGON3 is not set
|
|
|
++# CONFIG_BNX2 is not set
|
|
|
++# CONFIG_QLA3XXX is not set
|
|
|
++# CONFIG_ATL1 is not set
|
|
|
++# CONFIG_ATL1E is not set
|
|
|
++# CONFIG_ATL1C is not set
|
|
|
++# CONFIG_JME is not set
|
|
|
++# CONFIG_NETDEV_10000 is not set
|
|
|
++# CONFIG_TR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Wireless LAN
|
|
|
++#
|
|
|
++# CONFIG_WLAN_PRE80211 is not set
|
|
|
++# CONFIG_WLAN_80211 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Enable WiMAX (Networking options) to see the WiMAX drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# USB Network Adapters
|
|
|
++#
|
|
|
++# CONFIG_USB_CATC is not set
|
|
|
++# CONFIG_USB_KAWETH is not set
|
|
|
++# CONFIG_USB_PEGASUS is not set
|
|
|
++# CONFIG_USB_RTL8150 is not set
|
|
|
++# CONFIG_USB_USBNET is not set
|
|
|
++# CONFIG_NET_PCMCIA is not set
|
|
|
++# CONFIG_WAN is not set
|
|
|
++# CONFIG_ATM_DRIVERS is not set
|
|
|
++# CONFIG_FDDI is not set
|
|
|
++# CONFIG_HIPPI is not set
|
|
|
++CONFIG_PPP=m
|
|
|
++CONFIG_PPP_MULTILINK=y
|
|
|
++CONFIG_PPP_FILTER=y
|
|
|
++CONFIG_PPP_ASYNC=m
|
|
|
++CONFIG_PPP_SYNC_TTY=m
|
|
|
++CONFIG_PPP_DEFLATE=m
|
|
|
++CONFIG_PPP_BSDCOMP=m
|
|
|
++CONFIG_PPP_MPPE=m
|
|
|
++CONFIG_PPPOE=m
|
|
|
++CONFIG_PPPOATM=m
|
|
|
++# CONFIG_PPPOL2TP is not set
|
|
|
++# CONFIG_SLIP is not set
|
|
|
++CONFIG_SLHC=m
|
|
|
++# CONFIG_NET_FC is not set
|
|
|
++# CONFIG_NETCONSOLE is not set
|
|
|
++# CONFIG_NETPOLL is not set
|
|
|
++# CONFIG_NET_POLL_CONTROLLER is not set
|
|
|
++# CONFIG_ISDN is not set
|
|
|
++# CONFIG_PHONE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input device support
|
|
|
++#
|
|
|
++CONFIG_INPUT=y
|
|
|
++# CONFIG_INPUT_FF_MEMLESS is not set
|
|
|
++# CONFIG_INPUT_POLLDEV is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Userland interfaces
|
|
|
++#
|
|
|
++CONFIG_INPUT_MOUSEDEV=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|
|
++CONFIG_INPUT_JOYDEV=m
|
|
|
++CONFIG_INPUT_EVDEV=m
|
|
|
++# CONFIG_INPUT_EVBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input Device Drivers
|
|
|
++#
|
|
|
++CONFIG_INPUT_KEYBOARD=y
|
|
|
++CONFIG_KEYBOARD_ATKBD=y
|
|
|
++CONFIG_KEYBOARD_SUNKBD=m
|
|
|
++CONFIG_KEYBOARD_LKKBD=m
|
|
|
++CONFIG_KEYBOARD_XTKBD=m
|
|
|
++CONFIG_KEYBOARD_NEWTON=m
|
|
|
++# CONFIG_KEYBOARD_STOWAWAY is not set
|
|
|
++CONFIG_INPUT_MOUSE=y
|
|
|
++CONFIG_MOUSE_PS2=y
|
|
|
++CONFIG_MOUSE_PS2_ALPS=y
|
|
|
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
|
|
++CONFIG_MOUSE_PS2_SYNAPTICS=y
|
|
|
++CONFIG_MOUSE_PS2_TRACKPOINT=y
|
|
|
++# CONFIG_MOUSE_PS2_ELANTECH is not set
|
|
|
++# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
|
|
++CONFIG_MOUSE_SERIAL=m
|
|
|
++# CONFIG_MOUSE_APPLETOUCH is not set
|
|
|
++# CONFIG_MOUSE_BCM5974 is not set
|
|
|
++CONFIG_MOUSE_INPORT=m
|
|
|
++# CONFIG_MOUSE_ATIXL is not set
|
|
|
++CONFIG_MOUSE_LOGIBM=m
|
|
|
++CONFIG_MOUSE_PC110PAD=m
|
|
|
++CONFIG_MOUSE_VSXXXAA=m
|
|
|
++CONFIG_INPUT_JOYSTICK=y
|
|
|
++CONFIG_JOYSTICK_ANALOG=m
|
|
|
++CONFIG_JOYSTICK_A3D=m
|
|
|
++CONFIG_JOYSTICK_ADI=m
|
|
|
++CONFIG_JOYSTICK_COBRA=m
|
|
|
++CONFIG_JOYSTICK_GF2K=m
|
|
|
++CONFIG_JOYSTICK_GRIP=m
|
|
|
++CONFIG_JOYSTICK_GRIP_MP=m
|
|
|
++CONFIG_JOYSTICK_GUILLEMOT=m
|
|
|
++CONFIG_JOYSTICK_INTERACT=m
|
|
|
++CONFIG_JOYSTICK_SIDEWINDER=m
|
|
|
++CONFIG_JOYSTICK_TMDC=m
|
|
|
++CONFIG_JOYSTICK_IFORCE=m
|
|
|
++CONFIG_JOYSTICK_IFORCE_USB=y
|
|
|
++CONFIG_JOYSTICK_IFORCE_232=y
|
|
|
++CONFIG_JOYSTICK_WARRIOR=m
|
|
|
++CONFIG_JOYSTICK_MAGELLAN=m
|
|
|
++CONFIG_JOYSTICK_SPACEORB=m
|
|
|
++CONFIG_JOYSTICK_SPACEBALL=m
|
|
|
++CONFIG_JOYSTICK_STINGER=m
|
|
|
++CONFIG_JOYSTICK_TWIDJOY=m
|
|
|
++# CONFIG_JOYSTICK_ZHENHUA is not set
|
|
|
++CONFIG_JOYSTICK_JOYDUMP=m
|
|
|
++# CONFIG_JOYSTICK_XPAD is not set
|
|
|
++# CONFIG_INPUT_TABLET is not set
|
|
|
++CONFIG_INPUT_TOUCHSCREEN=y
|
|
|
++# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
|
|
|
++# CONFIG_TOUCHSCREEN_AD7879 is not set
|
|
|
++# CONFIG_TOUCHSCREEN_FUJITSU is not set
|
|
|
++CONFIG_TOUCHSCREEN_GUNZE=m
|
|
|
++CONFIG_TOUCHSCREEN_ELO=m
|
|
|
++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
|
|
|
++CONFIG_TOUCHSCREEN_MTOUCH=m
|
|
|
++# CONFIG_TOUCHSCREEN_INEXIO is not set
|
|
|
++CONFIG_TOUCHSCREEN_MK712=m
|
|
|
++# CONFIG_TOUCHSCREEN_HTCPEN is not set
|
|
|
++# CONFIG_TOUCHSCREEN_PENMOUNT is not set
|
|
|
++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
|
|
|
++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
|
|
|
++# CONFIG_TOUCHSCREEN_WM97XX is not set
|
|
|
++# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
|
|
|
++# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
|
|
|
++# CONFIG_TOUCHSCREEN_TSC2007 is not set
|
|
|
++CONFIG_INPUT_MISC=y
|
|
|
++CONFIG_INPUT_PCSPKR=m
|
|
|
++# CONFIG_INPUT_ATI_REMOTE is not set
|
|
|
++# CONFIG_INPUT_ATI_REMOTE2 is not set
|
|
|
++# CONFIG_INPUT_KEYSPAN_REMOTE is not set
|
|
|
++# CONFIG_INPUT_POWERMATE is not set
|
|
|
++# CONFIG_INPUT_YEALINK is not set
|
|
|
++# CONFIG_INPUT_CM109 is not set
|
|
|
++CONFIG_INPUT_UINPUT=m
|
|
|
++
|
|
|
++#
|
|
|
++# Hardware I/O ports
|
|
|
++#
|
|
|
++CONFIG_SERIO=y
|
|
|
++# CONFIG_SERIO_I8042 is not set
|
|
|
++CONFIG_SERIO_SERPORT=m
|
|
|
++CONFIG_SERIO_PCIPS2=m
|
|
|
++CONFIG_SERIO_LIBPS2=y
|
|
|
++CONFIG_SERIO_RAW=m
|
|
|
++CONFIG_GAMEPORT=m
|
|
|
++CONFIG_GAMEPORT_NS558=m
|
|
|
++CONFIG_GAMEPORT_L4=m
|
|
|
++CONFIG_GAMEPORT_EMU10K1=m
|
|
|
++CONFIG_GAMEPORT_FM801=m
|
|
|
++
|
|
|
++#
|
|
|
++# Character devices
|
|
|
++#
|
|
|
++CONFIG_VT=y
|
|
|
++CONFIG_CONSOLE_TRANSLATIONS=y
|
|
|
++CONFIG_VT_CONSOLE=y
|
|
|
++CONFIG_HW_CONSOLE=y
|
|
|
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
|
|
++CONFIG_DEVKMEM=y
|
|
|
++CONFIG_SERIAL_NONSTANDARD=y
|
|
|
++# CONFIG_COMPUTONE is not set
|
|
|
++# CONFIG_ROCKETPORT is not set
|
|
|
++# CONFIG_CYCLADES is not set
|
|
|
++# CONFIG_DIGIEPCA is not set
|
|
|
++# CONFIG_MOXA_INTELLIO is not set
|
|
|
++# CONFIG_MOXA_SMARTIO is not set
|
|
|
++# CONFIG_ISI is not set
|
|
|
++# CONFIG_SYNCLINKMP is not set
|
|
|
++# CONFIG_SYNCLINK_GT is not set
|
|
|
++# CONFIG_N_HDLC is not set
|
|
|
++# CONFIG_RISCOM8 is not set
|
|
|
++# CONFIG_SPECIALIX is not set
|
|
|
++# CONFIG_SX is not set
|
|
|
++# CONFIG_RIO is not set
|
|
|
++# CONFIG_STALDRV is not set
|
|
|
++# CONFIG_NOZOMI is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Serial drivers
|
|
|
++#
|
|
|
++CONFIG_SERIAL_8250=y
|
|
|
++CONFIG_SERIAL_8250_CONSOLE=y
|
|
|
++# CONFIG_SERIAL_8250_PCI is not set
|
|
|
++# CONFIG_SERIAL_8250_PNP is not set
|
|
|
++CONFIG_SERIAL_8250_CS=m
|
|
|
++CONFIG_SERIAL_8250_NR_UARTS=16
|
|
|
++CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
|
|
++CONFIG_SERIAL_8250_EXTENDED=y
|
|
|
++CONFIG_SERIAL_8250_MANY_PORTS=y
|
|
|
++CONFIG_SERIAL_8250_FOURPORT=y
|
|
|
++# CONFIG_SERIAL_8250_ACCENT is not set
|
|
|
++# CONFIG_SERIAL_8250_BOCA is not set
|
|
|
++# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
|
|
|
++CONFIG_SERIAL_8250_HUB6=m
|
|
|
++CONFIG_SERIAL_8250_SHARE_IRQ=y
|
|
|
++# CONFIG_SERIAL_8250_DETECT_IRQ is not set
|
|
|
++CONFIG_SERIAL_8250_RSA=y
|
|
|
++
|
|
|
++#
|
|
|
++# Non-8250 serial port support
|
|
|
++#
|
|
|
++CONFIG_SERIAL_CORE=y
|
|
|
++CONFIG_SERIAL_CORE_CONSOLE=y
|
|
|
++# CONFIG_SERIAL_JSM is not set
|
|
|
++CONFIG_UNIX98_PTYS=y
|
|
|
++CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
|
|
|
++CONFIG_LEGACY_PTYS=y
|
|
|
++CONFIG_LEGACY_PTY_COUNT=16
|
|
|
++# CONFIG_IPMI_HANDLER is not set
|
|
|
++CONFIG_HW_RANDOM=y
|
|
|
++# CONFIG_HW_RANDOM_TIMERIOMEM is not set
|
|
|
++# CONFIG_DTLK is not set
|
|
|
++# CONFIG_R3964 is not set
|
|
|
++# CONFIG_APPLICOM is not set
|
|
|
++
|
|
|
++#
|
|
|
++# PCMCIA character devices
|
|
|
++#
|
|
|
++# CONFIG_SYNCLINK_CS is not set
|
|
|
++# CONFIG_CARDMAN_4000 is not set
|
|
|
++# CONFIG_CARDMAN_4040 is not set
|
|
|
++# CONFIG_IPWIRELESS is not set
|
|
|
++# CONFIG_RAW_DRIVER is not set
|
|
|
++# CONFIG_TCG_TPM is not set
|
|
|
++CONFIG_DEVPORT=y
|
|
|
++CONFIG_I2C=m
|
|
|
++CONFIG_I2C_BOARDINFO=y
|
|
|
++CONFIG_I2C_CHARDEV=m
|
|
|
++CONFIG_I2C_HELPER_AUTO=y
|
|
|
++CONFIG_I2C_ALGOBIT=m
|
|
|
++CONFIG_I2C_ALGOPCA=m
|
|
|
++
|
|
|
++#
|
|
|
++# I2C Hardware Bus support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# PC SMBus host controller drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_ALI1535=m
|
|
|
++CONFIG_I2C_ALI1563=m
|
|
|
++CONFIG_I2C_ALI15X3=m
|
|
|
++CONFIG_I2C_AMD756=m
|
|
|
++CONFIG_I2C_AMD8111=m
|
|
|
++CONFIG_I2C_I801=m
|
|
|
++# CONFIG_I2C_ISCH is not set
|
|
|
++CONFIG_I2C_PIIX4=m
|
|
|
++CONFIG_I2C_NFORCE2=m
|
|
|
++CONFIG_I2C_SIS5595=m
|
|
|
++CONFIG_I2C_SIS630=m
|
|
|
++CONFIG_I2C_SIS96X=m
|
|
|
++CONFIG_I2C_VIA=m
|
|
|
++CONFIG_I2C_VIAPRO=m
|
|
|
++
|
|
|
++#
|
|
|
++# I2C system bus drivers (mostly embedded / system-on-chip)
|
|
|
++#
|
|
|
++CONFIG_I2C_OCORES=m
|
|
|
++# CONFIG_I2C_SIMTEC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# External I2C/SMBus adapter drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_PARPORT_LIGHT=m
|
|
|
++# CONFIG_I2C_TAOS_EVM is not set
|
|
|
++# CONFIG_I2C_TINY_USB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics adapter I2C/DDC channel drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_VOODOO3=m
|
|
|
++
|
|
|
++#
|
|
|
++# Other I2C/SMBus bus drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_ELEKTOR is not set
|
|
|
++CONFIG_I2C_PCA_ISA=m
|
|
|
++# CONFIG_I2C_PCA_PLATFORM is not set
|
|
|
++CONFIG_I2C_STUB=m
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous I2C Chip support
|
|
|
++#
|
|
|
++# CONFIG_DS1682 is not set
|
|
|
++CONFIG_SENSORS_PCF8574=m
|
|
|
++# CONFIG_PCF8575 is not set
|
|
|
++# CONFIG_SENSORS_PCA9539 is not set
|
|
|
++CONFIG_SENSORS_MAX6875=m
|
|
|
++# CONFIG_SENSORS_TSL2550 is not set
|
|
|
++# CONFIG_I2C_DEBUG_CORE is not set
|
|
|
++# CONFIG_I2C_DEBUG_ALGO is not set
|
|
|
++# CONFIG_I2C_DEBUG_BUS is not set
|
|
|
++# CONFIG_I2C_DEBUG_CHIP is not set
|
|
|
++# CONFIG_SPI is not set
|
|
|
++# CONFIG_W1 is not set
|
|
|
++# CONFIG_POWER_SUPPLY is not set
|
|
|
++# CONFIG_HWMON is not set
|
|
|
++# CONFIG_THERMAL is not set
|
|
|
++# CONFIG_THERMAL_HWMON is not set
|
|
|
++CONFIG_WATCHDOG=y
|
|
|
++# CONFIG_WATCHDOG_NOWAYOUT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Watchdog Device Drivers
|
|
|
++#
|
|
|
++CONFIG_SOFT_WATCHDOG=m
|
|
|
++# CONFIG_ALIM7101_WDT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# ISA-based Watchdog Cards
|
|
|
++#
|
|
|
++CONFIG_PCWATCHDOG=m
|
|
|
++CONFIG_MIXCOMWD=m
|
|
|
++CONFIG_WDT=m
|
|
|
++
|
|
|
++#
|
|
|
++# PCI-based Watchdog Cards
|
|
|
++#
|
|
|
++CONFIG_PCIPCWATCHDOG=m
|
|
|
++CONFIG_WDTPCI=m
|
|
|
++CONFIG_WDT_501_PCI=y
|
|
|
++
|
|
|
++#
|
|
|
++# USB-based Watchdog Cards
|
|
|
++#
|
|
|
++CONFIG_USBPCWATCHDOG=m
|
|
|
++CONFIG_SSB_POSSIBLE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Sonics Silicon Backplane
|
|
|
++#
|
|
|
++CONFIG_SSB=m
|
|
|
++CONFIG_SSB_SPROM=y
|
|
|
++CONFIG_SSB_PCIHOST_POSSIBLE=y
|
|
|
++CONFIG_SSB_PCIHOST=y
|
|
|
++# CONFIG_SSB_B43_PCI_BRIDGE is not set
|
|
|
++CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
|
|
|
++# CONFIG_SSB_PCMCIAHOST is not set
|
|
|
++# CONFIG_SSB_SILENT is not set
|
|
|
++# CONFIG_SSB_DEBUG is not set
|
|
|
++CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
|
|
|
++CONFIG_SSB_DRIVER_PCICORE=y
|
|
|
++# CONFIG_SSB_DRIVER_MIPS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multifunction device drivers
|
|
|
++#
|
|
|
++# CONFIG_MFD_CORE is not set
|
|
|
++# CONFIG_MFD_SM501 is not set
|
|
|
++# CONFIG_HTC_PASIC3 is not set
|
|
|
++# CONFIG_MFD_TMIO is not set
|
|
|
++# CONFIG_MFD_WM8400 is not set
|
|
|
++# CONFIG_MFD_WM8350_I2C is not set
|
|
|
++# CONFIG_MFD_PCF50633 is not set
|
|
|
++# CONFIG_REGULATOR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia devices
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia core support
|
|
|
++#
|
|
|
++CONFIG_VIDEO_DEV=m
|
|
|
++CONFIG_VIDEO_V4L2_COMMON=m
|
|
|
++CONFIG_VIDEO_ALLOW_V4L1=y
|
|
|
++CONFIG_VIDEO_V4L1_COMPAT=y
|
|
|
++CONFIG_DVB_CORE=m
|
|
|
++CONFIG_VIDEO_MEDIA=m
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia drivers
|
|
|
++#
|
|
|
++CONFIG_VIDEO_SAA7146=m
|
|
|
++CONFIG_VIDEO_SAA7146_VV=m
|
|
|
++# CONFIG_MEDIA_ATTACH is not set
|
|
|
++CONFIG_MEDIA_TUNER=m
|
|
|
++# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
|
|
|
++CONFIG_MEDIA_TUNER_SIMPLE=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA8290=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA827X=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA18271=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA9887=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5761=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5767=m
|
|
|
++CONFIG_MEDIA_TUNER_MT20XX=m
|
|
|
++CONFIG_MEDIA_TUNER_MT2060=m
|
|
|
++CONFIG_MEDIA_TUNER_XC2028=m
|
|
|
++CONFIG_MEDIA_TUNER_XC5000=m
|
|
|
++CONFIG_MEDIA_TUNER_MXL5005S=m
|
|
|
++CONFIG_MEDIA_TUNER_MC44S803=m
|
|
|
++CONFIG_VIDEO_V4L2=m
|
|
|
++CONFIG_VIDEO_V4L1=m
|
|
|
++CONFIG_VIDEOBUF_GEN=m
|
|
|
++CONFIG_VIDEOBUF_DMA_SG=m
|
|
|
++CONFIG_VIDEOBUF_VMALLOC=m
|
|
|
++CONFIG_VIDEOBUF_DVB=m
|
|
|
++CONFIG_VIDEO_BTCX=m
|
|
|
++CONFIG_VIDEO_IR=m
|
|
|
++CONFIG_VIDEO_TVEEPROM=m
|
|
|
++CONFIG_VIDEO_TUNER=m
|
|
|
++CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
|
|
++# CONFIG_VIDEO_ADV_DEBUG is not set
|
|
|
++# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
|
|
++CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
|
|
|
++CONFIG_VIDEO_IR_I2C=m
|
|
|
++CONFIG_VIDEO_TVAUDIO=m
|
|
|
++CONFIG_VIDEO_TDA7432=m
|
|
|
++CONFIG_VIDEO_TDA9840=m
|
|
|
++CONFIG_VIDEO_TEA6415C=m
|
|
|
++CONFIG_VIDEO_TEA6420=m
|
|
|
++CONFIG_VIDEO_MSP3400=m
|
|
|
++CONFIG_VIDEO_CS53L32A=m
|
|
|
++CONFIG_VIDEO_WM8775=m
|
|
|
++CONFIG_VIDEO_SAA6588=m
|
|
|
++CONFIG_VIDEO_BT819=m
|
|
|
++CONFIG_VIDEO_BT856=m
|
|
|
++CONFIG_VIDEO_BT866=m
|
|
|
++CONFIG_VIDEO_KS0127=m
|
|
|
++CONFIG_VIDEO_SAA7110=m
|
|
|
++CONFIG_VIDEO_SAA711X=m
|
|
|
++CONFIG_VIDEO_TVP5150=m
|
|
|
++CONFIG_VIDEO_VPX3220=m
|
|
|
++CONFIG_VIDEO_CX25840=m
|
|
|
++CONFIG_VIDEO_CX2341X=m
|
|
|
++CONFIG_VIDEO_SAA7185=m
|
|
|
++CONFIG_VIDEO_ADV7170=m
|
|
|
++CONFIG_VIDEO_ADV7175=m
|
|
|
++CONFIG_VIDEO_VIVI=m
|
|
|
++CONFIG_VIDEO_BT848=m
|
|
|
++CONFIG_VIDEO_BT848_DVB=y
|
|
|
++CONFIG_VIDEO_PMS=m
|
|
|
++CONFIG_VIDEO_CPIA=m
|
|
|
++CONFIG_VIDEO_CPIA_USB=m
|
|
|
++CONFIG_VIDEO_CPIA2=m
|
|
|
++CONFIG_VIDEO_SAA5246A=m
|
|
|
++CONFIG_VIDEO_SAA5249=m
|
|
|
++CONFIG_VIDEO_STRADIS=m
|
|
|
++CONFIG_VIDEO_ZORAN=m
|
|
|
++CONFIG_VIDEO_ZORAN_DC30=m
|
|
|
++CONFIG_VIDEO_ZORAN_ZR36060=m
|
|
|
++CONFIG_VIDEO_ZORAN_BUZ=m
|
|
|
++CONFIG_VIDEO_ZORAN_DC10=m
|
|
|
++CONFIG_VIDEO_ZORAN_LML33=m
|
|
|
++CONFIG_VIDEO_ZORAN_LML33R10=m
|
|
|
++CONFIG_VIDEO_ZORAN_AVS6EYES=m
|
|
|
++CONFIG_VIDEO_SAA7134=m
|
|
|
++CONFIG_VIDEO_SAA7134_ALSA=m
|
|
|
++CONFIG_VIDEO_SAA7134_DVB=m
|
|
|
++CONFIG_VIDEO_MXB=m
|
|
|
++CONFIG_VIDEO_HEXIUM_ORION=m
|
|
|
++CONFIG_VIDEO_HEXIUM_GEMINI=m
|
|
|
++CONFIG_VIDEO_CX88=m
|
|
|
++CONFIG_VIDEO_CX88_ALSA=m
|
|
|
++CONFIG_VIDEO_CX88_BLACKBIRD=m
|
|
|
++CONFIG_VIDEO_CX88_DVB=m
|
|
|
++CONFIG_VIDEO_CX88_MPEG=m
|
|
|
++CONFIG_VIDEO_CX88_VP3054=m
|
|
|
++# CONFIG_VIDEO_CX23885 is not set
|
|
|
++# CONFIG_VIDEO_AU0828 is not set
|
|
|
++# CONFIG_VIDEO_IVTV is not set
|
|
|
++# CONFIG_VIDEO_CX18 is not set
|
|
|
++# CONFIG_VIDEO_CAFE_CCIC is not set
|
|
|
++# CONFIG_SOC_CAMERA is not set
|
|
|
++CONFIG_V4L_USB_DRIVERS=y
|
|
|
++# CONFIG_USB_VIDEO_CLASS is not set
|
|
|
++CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
|
|
|
++# CONFIG_USB_GSPCA is not set
|
|
|
++CONFIG_VIDEO_PVRUSB2=m
|
|
|
++CONFIG_VIDEO_PVRUSB2_SYSFS=y
|
|
|
++CONFIG_VIDEO_PVRUSB2_DVB=y
|
|
|
++# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
|
|
|
++# CONFIG_VIDEO_HDPVR is not set
|
|
|
++CONFIG_VIDEO_EM28XX=m
|
|
|
++# CONFIG_VIDEO_EM28XX_ALSA is not set
|
|
|
++# CONFIG_VIDEO_EM28XX_DVB is not set
|
|
|
++# CONFIG_VIDEO_CX231XX is not set
|
|
|
++# CONFIG_VIDEO_USBVISION is not set
|
|
|
++CONFIG_VIDEO_USBVIDEO=m
|
|
|
++CONFIG_USB_VICAM=m
|
|
|
++CONFIG_USB_IBMCAM=m
|
|
|
++CONFIG_USB_KONICAWC=m
|
|
|
++CONFIG_USB_QUICKCAM_MESSENGER=m
|
|
|
++CONFIG_USB_ET61X251=m
|
|
|
++CONFIG_VIDEO_OVCAMCHIP=m
|
|
|
++# CONFIG_USB_W9968CF is not set
|
|
|
++CONFIG_USB_OV511=m
|
|
|
++CONFIG_USB_SE401=m
|
|
|
++CONFIG_USB_SN9C102=m
|
|
|
++CONFIG_USB_STV680=m
|
|
|
++CONFIG_USB_ZC0301=m
|
|
|
++CONFIG_USB_PWC=m
|
|
|
++# CONFIG_USB_PWC_DEBUG is not set
|
|
|
++CONFIG_USB_PWC_INPUT_EVDEV=y
|
|
|
++# CONFIG_USB_ZR364XX is not set
|
|
|
++# CONFIG_USB_STKWEBCAM is not set
|
|
|
++# CONFIG_USB_S2255 is not set
|
|
|
++CONFIG_RADIO_ADAPTERS=y
|
|
|
++CONFIG_RADIO_CADET=m
|
|
|
++CONFIG_RADIO_RTRACK=m
|
|
|
++CONFIG_RADIO_RTRACK2=m
|
|
|
++CONFIG_RADIO_AZTECH=m
|
|
|
++CONFIG_RADIO_GEMTEK=m
|
|
|
++CONFIG_RADIO_GEMTEK_PCI=m
|
|
|
++CONFIG_RADIO_MAXIRADIO=m
|
|
|
++CONFIG_RADIO_MAESTRO=m
|
|
|
++CONFIG_RADIO_SF16FMI=m
|
|
|
++CONFIG_RADIO_SF16FMR2=m
|
|
|
++CONFIG_RADIO_TERRATEC=m
|
|
|
++CONFIG_RADIO_TRUST=m
|
|
|
++CONFIG_RADIO_TYPHOON=m
|
|
|
++CONFIG_RADIO_TYPHOON_PROC_FS=y
|
|
|
++CONFIG_RADIO_ZOLTRIX=m
|
|
|
++CONFIG_USB_DSBR=m
|
|
|
++# CONFIG_USB_SI470X is not set
|
|
|
++# CONFIG_USB_MR800 is not set
|
|
|
++# CONFIG_RADIO_TEA5764 is not set
|
|
|
++# CONFIG_DVB_DYNAMIC_MINORS is not set
|
|
|
++CONFIG_DVB_CAPTURE_DRIVERS=y
|
|
|
++
|
|
|
++#
|
|
|
++# Supported SAA7146 based PCI Adapters
|
|
|
++#
|
|
|
++CONFIG_TTPCI_EEPROM=m
|
|
|
++CONFIG_DVB_AV7110=m
|
|
|
++CONFIG_DVB_AV7110_OSD=y
|
|
|
++# CONFIG_DVB_BUDGET_CORE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Supported USB Adapters
|
|
|
++#
|
|
|
++CONFIG_DVB_USB=m
|
|
|
++# CONFIG_DVB_USB_DEBUG is not set
|
|
|
++CONFIG_DVB_USB_A800=m
|
|
|
++CONFIG_DVB_USB_DIBUSB_MB=m
|
|
|
++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
|
|
|
++CONFIG_DVB_USB_DIBUSB_MC=m
|
|
|
++# CONFIG_DVB_USB_DIB0700 is not set
|
|
|
++CONFIG_DVB_USB_UMT_010=m
|
|
|
++CONFIG_DVB_USB_CXUSB=m
|
|
|
++# CONFIG_DVB_USB_M920X is not set
|
|
|
++# CONFIG_DVB_USB_GL861 is not set
|
|
|
++# CONFIG_DVB_USB_AU6610 is not set
|
|
|
++CONFIG_DVB_USB_DIGITV=m
|
|
|
++CONFIG_DVB_USB_VP7045=m
|
|
|
++CONFIG_DVB_USB_VP702X=m
|
|
|
++CONFIG_DVB_USB_GP8PSK=m
|
|
|
++CONFIG_DVB_USB_NOVA_T_USB2=m
|
|
|
++# CONFIG_DVB_USB_TTUSB2 is not set
|
|
|
++CONFIG_DVB_USB_DTT200U=m
|
|
|
++# CONFIG_DVB_USB_OPERA1 is not set
|
|
|
++# CONFIG_DVB_USB_AF9005 is not set
|
|
|
++# CONFIG_DVB_USB_DW2102 is not set
|
|
|
++# CONFIG_DVB_USB_CINERGY_T2 is not set
|
|
|
++# CONFIG_DVB_USB_ANYSEE is not set
|
|
|
++# CONFIG_DVB_USB_DTV5100 is not set
|
|
|
++# CONFIG_DVB_USB_AF9015 is not set
|
|
|
++# CONFIG_DVB_USB_CE6230 is not set
|
|
|
++CONFIG_DVB_TTUSB_BUDGET=m
|
|
|
++CONFIG_DVB_TTUSB_DEC=m
|
|
|
++# CONFIG_DVB_SIANO_SMS1XXX is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Supported FlexCopII (B2C2) Adapters
|
|
|
++#
|
|
|
++CONFIG_DVB_B2C2_FLEXCOP=m
|
|
|
++CONFIG_DVB_B2C2_FLEXCOP_PCI=m
|
|
|
++CONFIG_DVB_B2C2_FLEXCOP_USB=m
|
|
|
++# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Supported BT878 Adapters
|
|
|
++#
|
|
|
++CONFIG_DVB_BT8XX=m
|
|
|
++
|
|
|
++#
|
|
|
++# Supported Pluto2 Adapters
|
|
|
++#
|
|
|
++CONFIG_DVB_PLUTO2=m
|
|
|
++
|
|
|
++#
|
|
|
++# Supported SDMC DM1105 Adapters
|
|
|
++#
|
|
|
++# CONFIG_DVB_DM1105 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Supported DVB Frontends
|
|
|
++#
|
|
|
++# CONFIG_DVB_FE_CUSTOMISE is not set
|
|
|
++CONFIG_DVB_CX24110=m
|
|
|
++CONFIG_DVB_CX24123=m
|
|
|
++CONFIG_DVB_MT312=m
|
|
|
++CONFIG_DVB_ZL10036=m
|
|
|
++CONFIG_DVB_S5H1420=m
|
|
|
++CONFIG_DVB_STV0288=m
|
|
|
++CONFIG_DVB_STB6000=m
|
|
|
++CONFIG_DVB_STV0299=m
|
|
|
++CONFIG_DVB_TDA8083=m
|
|
|
++CONFIG_DVB_TDA10086=m
|
|
|
++CONFIG_DVB_VES1X93=m
|
|
|
++CONFIG_DVB_TUNER_ITD1000=m
|
|
|
++CONFIG_DVB_TUNER_CX24113=m
|
|
|
++CONFIG_DVB_TDA826X=m
|
|
|
++CONFIG_DVB_CX24116=m
|
|
|
++CONFIG_DVB_SP8870=m
|
|
|
++CONFIG_DVB_SP887X=m
|
|
|
++CONFIG_DVB_CX22700=m
|
|
|
++CONFIG_DVB_CX22702=m
|
|
|
++CONFIG_DVB_L64781=m
|
|
|
++CONFIG_DVB_TDA1004X=m
|
|
|
++CONFIG_DVB_NXT6000=m
|
|
|
++CONFIG_DVB_MT352=m
|
|
|
++CONFIG_DVB_ZL10353=m
|
|
|
++CONFIG_DVB_DIB3000MB=m
|
|
|
++CONFIG_DVB_DIB3000MC=m
|
|
|
++CONFIG_DVB_DIB7000P=m
|
|
|
++CONFIG_DVB_TDA10048=m
|
|
|
++CONFIG_DVB_VES1820=m
|
|
|
++CONFIG_DVB_STV0297=m
|
|
|
++CONFIG_DVB_NXT200X=m
|
|
|
++CONFIG_DVB_OR51211=m
|
|
|
++CONFIG_DVB_OR51132=m
|
|
|
++CONFIG_DVB_BCM3510=m
|
|
|
++CONFIG_DVB_LGDT330X=m
|
|
|
++CONFIG_DVB_LGDT3305=m
|
|
|
++CONFIG_DVB_S5H1409=m
|
|
|
++CONFIG_DVB_S5H1411=m
|
|
|
++CONFIG_DVB_PLL=m
|
|
|
++CONFIG_DVB_TUNER_DIB0070=m
|
|
|
++CONFIG_DVB_LNBP21=m
|
|
|
++CONFIG_DVB_ISL6405=m
|
|
|
++CONFIG_DVB_ISL6421=m
|
|
|
++CONFIG_DVB_LGS8GL5=m
|
|
|
++# CONFIG_DAB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics support
|
|
|
++#
|
|
|
++CONFIG_DRM=m
|
|
|
++CONFIG_DRM_TDFX=m
|
|
|
++CONFIG_DRM_R128=m
|
|
|
++CONFIG_DRM_RADEON=m
|
|
|
++CONFIG_DRM_MGA=m
|
|
|
++CONFIG_DRM_VIA=m
|
|
|
++CONFIG_DRM_SAVAGE=m
|
|
|
++CONFIG_VGASTATE=m
|
|
|
++# CONFIG_VIDEO_OUTPUT_CONTROL is not set
|
|
|
++CONFIG_FB=y
|
|
|
++CONFIG_FIRMWARE_EDID=y
|
|
|
++CONFIG_FB_DDC=m
|
|
|
++CONFIG_FB_BOOT_VESA_SUPPORT=y
|
|
|
++CONFIG_FB_CFB_FILLRECT=y
|
|
|
++CONFIG_FB_CFB_COPYAREA=y
|
|
|
++CONFIG_FB_CFB_IMAGEBLIT=y
|
|
|
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
|
|
++CONFIG_FB_SYS_FILLRECT=m
|
|
|
++CONFIG_FB_SYS_COPYAREA=m
|
|
|
++CONFIG_FB_SYS_IMAGEBLIT=m
|
|
|
++# CONFIG_FB_FOREIGN_ENDIAN is not set
|
|
|
++CONFIG_FB_SYS_FOPS=m
|
|
|
++# CONFIG_FB_SVGALIB is not set
|
|
|
++# CONFIG_FB_MACMODES is not set
|
|
|
++CONFIG_FB_BACKLIGHT=y
|
|
|
++CONFIG_FB_MODE_HELPERS=y
|
|
|
++CONFIG_FB_TILEBLITTING=y
|
|
|
++
|
|
|
++#
|
|
|
++# Frame buffer hardware drivers
|
|
|
++#
|
|
|
++CONFIG_FB_CIRRUS=m
|
|
|
++CONFIG_FB_PM2=m
|
|
|
++CONFIG_FB_PM2_FIFO_DISCONNECT=y
|
|
|
++CONFIG_FB_CYBER2000=m
|
|
|
++# CONFIG_FB_ASILIANT is not set
|
|
|
++# CONFIG_FB_IMSTT is not set
|
|
|
++# CONFIG_FB_UVESA is not set
|
|
|
++CONFIG_FB_S1D13XXX=m
|
|
|
++CONFIG_FB_NVIDIA=m
|
|
|
++CONFIG_FB_NVIDIA_I2C=y
|
|
|
++# CONFIG_FB_NVIDIA_DEBUG is not set
|
|
|
++CONFIG_FB_NVIDIA_BACKLIGHT=y
|
|
|
++# CONFIG_FB_RIVA is not set
|
|
|
++CONFIG_FB_MATROX=m
|
|
|
++CONFIG_FB_MATROX_MILLENIUM=y
|
|
|
++CONFIG_FB_MATROX_MYSTIQUE=y
|
|
|
++CONFIG_FB_MATROX_G=y
|
|
|
++CONFIG_FB_MATROX_I2C=m
|
|
|
++CONFIG_FB_MATROX_MAVEN=m
|
|
|
++CONFIG_FB_MATROX_MULTIHEAD=y
|
|
|
++CONFIG_FB_RADEON=m
|
|
|
++CONFIG_FB_RADEON_I2C=y
|
|
|
++CONFIG_FB_RADEON_BACKLIGHT=y
|
|
|
++# CONFIG_FB_RADEON_DEBUG is not set
|
|
|
++CONFIG_FB_ATY128=m
|
|
|
++CONFIG_FB_ATY128_BACKLIGHT=y
|
|
|
++CONFIG_FB_ATY=m
|
|
|
++CONFIG_FB_ATY_CT=y
|
|
|
++CONFIG_FB_ATY_GENERIC_LCD=y
|
|
|
++CONFIG_FB_ATY_GX=y
|
|
|
++CONFIG_FB_ATY_BACKLIGHT=y
|
|
|
++# CONFIG_FB_S3 is not set
|
|
|
++CONFIG_FB_SAVAGE=m
|
|
|
++CONFIG_FB_SAVAGE_I2C=y
|
|
|
++# CONFIG_FB_SAVAGE_ACCEL is not set
|
|
|
++CONFIG_FB_SIS=y
|
|
|
++CONFIG_FB_SIS_300=y
|
|
|
++CONFIG_FB_SIS_315=y
|
|
|
++# CONFIG_FB_VIA is not set
|
|
|
++CONFIG_FB_NEOMAGIC=m
|
|
|
++CONFIG_FB_KYRO=m
|
|
|
++CONFIG_FB_3DFX=m
|
|
|
++# CONFIG_FB_3DFX_ACCEL is not set
|
|
|
++CONFIG_FB_3DFX_I2C=y
|
|
|
++CONFIG_FB_VOODOO1=m
|
|
|
++# CONFIG_FB_VT8623 is not set
|
|
|
++CONFIG_FB_TRIDENT=m
|
|
|
++# CONFIG_FB_ARK is not set
|
|
|
++# CONFIG_FB_PM3 is not set
|
|
|
++# CONFIG_FB_CARMINE is not set
|
|
|
++# CONFIG_FB_SM7XX is not set
|
|
|
++CONFIG_FB_VIRTUAL=m
|
|
|
++# CONFIG_FB_METRONOME is not set
|
|
|
++# CONFIG_FB_MB862XX is not set
|
|
|
++# CONFIG_FB_BROADSHEET is not set
|
|
|
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
|
++# CONFIG_LCD_CLASS_DEVICE is not set
|
|
|
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|
|
++CONFIG_BACKLIGHT_GENERIC=y
|
|
|
++
|
|
|
++#
|
|
|
++# Display device support
|
|
|
++#
|
|
|
++# CONFIG_DISPLAY_SUPPORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Console display driver support
|
|
|
++#
|
|
|
++# CONFIG_VGA_CONSOLE is not set
|
|
|
++# CONFIG_MDA_CONSOLE is not set
|
|
|
++CONFIG_DUMMY_CONSOLE=y
|
|
|
++CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
|
++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
|
|
++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
|
|
++# CONFIG_FONTS is not set
|
|
|
++CONFIG_FONT_8x8=y
|
|
|
++CONFIG_FONT_8x16=y
|
|
|
++# CONFIG_LOGO is not set
|
|
|
++CONFIG_SOUND=m
|
|
|
++CONFIG_SOUND_OSS_CORE=y
|
|
|
++CONFIG_SND=m
|
|
|
++CONFIG_SND_TIMER=m
|
|
|
++CONFIG_SND_PCM=m
|
|
|
++CONFIG_SND_SEQUENCER=m
|
|
|
++CONFIG_SND_SEQ_DUMMY=m
|
|
|
++CONFIG_SND_OSSEMUL=y
|
|
|
++CONFIG_SND_MIXER_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS_PLUGINS=y
|
|
|
++CONFIG_SND_SEQUENCER_OSS=y
|
|
|
++# CONFIG_SND_HRTIMER is not set
|
|
|
++# CONFIG_SND_DYNAMIC_MINORS is not set
|
|
|
++CONFIG_SND_SUPPORT_OLD_API=y
|
|
|
++CONFIG_SND_VERBOSE_PROCFS=y
|
|
|
++# CONFIG_SND_VERBOSE_PRINTK is not set
|
|
|
++# CONFIG_SND_DEBUG is not set
|
|
|
++CONFIG_SND_VMASTER=y
|
|
|
++CONFIG_SND_AC97_CODEC=m
|
|
|
++# CONFIG_SND_DRIVERS is not set
|
|
|
++CONFIG_SND_PCI=y
|
|
|
++# CONFIG_SND_AD1889 is not set
|
|
|
++# CONFIG_SND_ALS300 is not set
|
|
|
++# CONFIG_SND_ALI5451 is not set
|
|
|
++# CONFIG_SND_ATIIXP is not set
|
|
|
++# CONFIG_SND_ATIIXP_MODEM is not set
|
|
|
++# CONFIG_SND_AU8810 is not set
|
|
|
++# CONFIG_SND_AU8820 is not set
|
|
|
++# CONFIG_SND_AU8830 is not set
|
|
|
++# CONFIG_SND_AW2 is not set
|
|
|
++# CONFIG_SND_AZT3328 is not set
|
|
|
++# CONFIG_SND_BT87X is not set
|
|
|
++# CONFIG_SND_CA0106 is not set
|
|
|
++# CONFIG_SND_CMIPCI is not set
|
|
|
++# CONFIG_SND_OXYGEN is not set
|
|
|
++# CONFIG_SND_CS4281 is not set
|
|
|
++# CONFIG_SND_CS46XX is not set
|
|
|
++CONFIG_SND_CS5535AUDIO=m
|
|
|
++# CONFIG_SND_DARLA20 is not set
|
|
|
++# CONFIG_SND_GINA20 is not set
|
|
|
++# CONFIG_SND_LAYLA20 is not set
|
|
|
++# CONFIG_SND_DARLA24 is not set
|
|
|
++# CONFIG_SND_GINA24 is not set
|
|
|
++# CONFIG_SND_LAYLA24 is not set
|
|
|
++# CONFIG_SND_MONA is not set
|
|
|
++# CONFIG_SND_MIA is not set
|
|
|
++# CONFIG_SND_ECHO3G is not set
|
|
|
++# CONFIG_SND_INDIGO is not set
|
|
|
++# CONFIG_SND_INDIGOIO is not set
|
|
|
++# CONFIG_SND_INDIGODJ is not set
|
|
|
++# CONFIG_SND_INDIGOIOX is not set
|
|
|
++# CONFIG_SND_INDIGODJX is not set
|
|
|
++# CONFIG_SND_EMU10K1 is not set
|
|
|
++# CONFIG_SND_EMU10K1X is not set
|
|
|
++# CONFIG_SND_ENS1370 is not set
|
|
|
++# CONFIG_SND_ENS1371 is not set
|
|
|
++# CONFIG_SND_ES1938 is not set
|
|
|
++# CONFIG_SND_ES1968 is not set
|
|
|
++# CONFIG_SND_FM801 is not set
|
|
|
++# CONFIG_SND_HDA_INTEL is not set
|
|
|
++# CONFIG_SND_HDSP is not set
|
|
|
++# CONFIG_SND_HDSPM is not set
|
|
|
++# CONFIG_SND_HIFIER is not set
|
|
|
++# CONFIG_SND_ICE1712 is not set
|
|
|
++# CONFIG_SND_ICE1724 is not set
|
|
|
++# CONFIG_SND_INTEL8X0 is not set
|
|
|
++# CONFIG_SND_INTEL8X0M is not set
|
|
|
++# CONFIG_SND_KORG1212 is not set
|
|
|
++# CONFIG_SND_MAESTRO3 is not set
|
|
|
++# CONFIG_SND_MIXART is not set
|
|
|
++# CONFIG_SND_NM256 is not set
|
|
|
++# CONFIG_SND_PCXHR is not set
|
|
|
++# CONFIG_SND_RIPTIDE is not set
|
|
|
++# CONFIG_SND_RME32 is not set
|
|
|
++# CONFIG_SND_RME96 is not set
|
|
|
++# CONFIG_SND_RME9652 is not set
|
|
|
++# CONFIG_SND_SONICVIBES is not set
|
|
|
++# CONFIG_SND_TRIDENT is not set
|
|
|
++# CONFIG_SND_VIA82XX is not set
|
|
|
++# CONFIG_SND_VIA82XX_MODEM is not set
|
|
|
++# CONFIG_SND_VIRTUOSO is not set
|
|
|
++# CONFIG_SND_VX222 is not set
|
|
|
++# CONFIG_SND_YMFPCI is not set
|
|
|
++# CONFIG_SND_MIPS is not set
|
|
|
++# CONFIG_SND_USB is not set
|
|
|
++# CONFIG_SND_PCMCIA is not set
|
|
|
++# CONFIG_SND_SOC is not set
|
|
|
++# CONFIG_SOUND_PRIME is not set
|
|
|
++CONFIG_AC97_BUS=m
|
|
|
++CONFIG_HID_SUPPORT=y
|
|
|
++CONFIG_HID=y
|
|
|
++# CONFIG_HID_DEBUG is not set
|
|
|
++# CONFIG_HIDRAW is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Input Devices
|
|
|
++#
|
|
|
++CONFIG_USB_HID=y
|
|
|
++# CONFIG_HID_PID is not set
|
|
|
++CONFIG_USB_HIDDEV=y
|
|
|
++
|
|
|
++#
|
|
|
++# Special HID drivers
|
|
|
++#
|
|
|
++# CONFIG_HID_A4TECH is not set
|
|
|
++# CONFIG_HID_APPLE is not set
|
|
|
++# CONFIG_HID_BELKIN is not set
|
|
|
++# CONFIG_HID_CHERRY is not set
|
|
|
++# CONFIG_HID_CHICONY is not set
|
|
|
++# CONFIG_HID_CYPRESS is not set
|
|
|
++# CONFIG_DRAGONRISE_FF is not set
|
|
|
++# CONFIG_HID_EZKEY is not set
|
|
|
++# CONFIG_HID_KYE is not set
|
|
|
++# CONFIG_HID_GYRATION is not set
|
|
|
++# CONFIG_HID_KENSINGTON is not set
|
|
|
++# CONFIG_HID_LOGITECH is not set
|
|
|
++# CONFIG_HID_MICROSOFT is not set
|
|
|
++# CONFIG_HID_MONTEREY is not set
|
|
|
++# CONFIG_HID_NTRIG is not set
|
|
|
++# CONFIG_HID_PANTHERLORD is not set
|
|
|
++# CONFIG_HID_PETALYNX is not set
|
|
|
++# CONFIG_HID_SAMSUNG is not set
|
|
|
++# CONFIG_HID_SONY is not set
|
|
|
++# CONFIG_HID_SUNPLUS is not set
|
|
|
++# CONFIG_GREENASIA_FF is not set
|
|
|
++# CONFIG_HID_TOPSEED is not set
|
|
|
++# CONFIG_THRUSTMASTER_FF is not set
|
|
|
++# CONFIG_ZEROPLUS_FF is not set
|
|
|
++CONFIG_USB_SUPPORT=y
|
|
|
++CONFIG_USB_ARCH_HAS_HCD=y
|
|
|
++CONFIG_USB_ARCH_HAS_OHCI=y
|
|
|
++CONFIG_USB_ARCH_HAS_EHCI=y
|
|
|
++CONFIG_USB=y
|
|
|
++# CONFIG_USB_DEBUG is not set
|
|
|
++# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous USB options
|
|
|
++#
|
|
|
++CONFIG_USB_DEVICEFS=y
|
|
|
++# CONFIG_USB_DEVICE_CLASS is not set
|
|
|
++# CONFIG_USB_DYNAMIC_MINORS is not set
|
|
|
++# CONFIG_USB_SUSPEND is not set
|
|
|
++# CONFIG_USB_OTG is not set
|
|
|
++# CONFIG_USB_OTG_WHITELIST is not set
|
|
|
++# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
|
|
++CONFIG_USB_MON=y
|
|
|
++# CONFIG_USB_WUSB is not set
|
|
|
++# CONFIG_USB_WUSB_CBAF is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Host Controller Drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_C67X00_HCD is not set
|
|
|
++CONFIG_USB_EHCI_HCD=y
|
|
|
++CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
|
|
++# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
|
|
++# CONFIG_USB_OXU210HP_HCD is not set
|
|
|
++# CONFIG_USB_ISP116X_HCD is not set
|
|
|
++# CONFIG_USB_ISP1760_HCD is not set
|
|
|
++CONFIG_USB_OHCI_HCD=y
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
|
|
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
|
++CONFIG_USB_UHCI_HCD=m
|
|
|
++# CONFIG_USB_SL811_HCD is not set
|
|
|
++# CONFIG_USB_R8A66597_HCD is not set
|
|
|
++# CONFIG_USB_WHCI_HCD is not set
|
|
|
++# CONFIG_USB_HWA_HCD is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Device Class drivers
|
|
|
++#
|
|
|
++CONFIG_USB_ACM=m
|
|
|
++CONFIG_USB_PRINTER=m
|
|
|
++# CONFIG_USB_WDM is not set
|
|
|
++# CONFIG_USB_TMC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# also be needed; see USB_STORAGE Help for more info
|
|
|
++#
|
|
|
++CONFIG_USB_STORAGE=y
|
|
|
++# CONFIG_USB_STORAGE_DEBUG is not set
|
|
|
++CONFIG_USB_STORAGE_DATAFAB=y
|
|
|
++CONFIG_USB_STORAGE_FREECOM=y
|
|
|
++CONFIG_USB_STORAGE_ISD200=y
|
|
|
++CONFIG_USB_STORAGE_USBAT=y
|
|
|
++CONFIG_USB_STORAGE_SDDR09=y
|
|
|
++CONFIG_USB_STORAGE_SDDR55=y
|
|
|
++CONFIG_USB_STORAGE_JUMPSHOT=y
|
|
|
++CONFIG_USB_STORAGE_ALAUDA=y
|
|
|
++# CONFIG_USB_STORAGE_ONETOUCH is not set
|
|
|
++# CONFIG_USB_STORAGE_KARMA is not set
|
|
|
++# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
|
|
|
++# CONFIG_USB_LIBUSUAL is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Imaging devices
|
|
|
++#
|
|
|
++CONFIG_USB_MDC800=m
|
|
|
++# CONFIG_USB_MICROTEK is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB port drivers
|
|
|
++#
|
|
|
++CONFIG_USB_SERIAL=m
|
|
|
++CONFIG_USB_EZUSB=y
|
|
|
++CONFIG_USB_SERIAL_GENERIC=y
|
|
|
++# CONFIG_USB_SERIAL_AIRCABLE is not set
|
|
|
++CONFIG_USB_SERIAL_ARK3116=m
|
|
|
++CONFIG_USB_SERIAL_BELKIN=m
|
|
|
++# CONFIG_USB_SERIAL_CH341 is not set
|
|
|
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
|
|
++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
|
|
++# CONFIG_USB_SERIAL_CP210X is not set
|
|
|
++CONFIG_USB_SERIAL_CYPRESS_M8=m
|
|
|
++CONFIG_USB_SERIAL_EMPEG=m
|
|
|
++CONFIG_USB_SERIAL_FTDI_SIO=m
|
|
|
++CONFIG_USB_SERIAL_FUNSOFT=m
|
|
|
++CONFIG_USB_SERIAL_VISOR=m
|
|
|
++CONFIG_USB_SERIAL_IPAQ=m
|
|
|
++CONFIG_USB_SERIAL_IR=m
|
|
|
++CONFIG_USB_SERIAL_EDGEPORT=m
|
|
|
++CONFIG_USB_SERIAL_EDGEPORT_TI=m
|
|
|
++CONFIG_USB_SERIAL_GARMIN=m
|
|
|
++CONFIG_USB_SERIAL_IPW=m
|
|
|
++# CONFIG_USB_SERIAL_IUU is not set
|
|
|
++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
|
|
++# CONFIG_USB_SERIAL_KEYSPAN is not set
|
|
|
++CONFIG_USB_SERIAL_KLSI=m
|
|
|
++CONFIG_USB_SERIAL_KOBIL_SCT=m
|
|
|
++CONFIG_USB_SERIAL_MCT_U232=m
|
|
|
++# CONFIG_USB_SERIAL_MOS7720 is not set
|
|
|
++# CONFIG_USB_SERIAL_MOS7840 is not set
|
|
|
++# CONFIG_USB_SERIAL_MOTOROLA is not set
|
|
|
++CONFIG_USB_SERIAL_NAVMAN=m
|
|
|
++CONFIG_USB_SERIAL_PL2303=m
|
|
|
++# CONFIG_USB_SERIAL_OTI6858 is not set
|
|
|
++# CONFIG_USB_SERIAL_QUALCOMM is not set
|
|
|
++# CONFIG_USB_SERIAL_SPCP8X5 is not set
|
|
|
++CONFIG_USB_SERIAL_HP4X=m
|
|
|
++CONFIG_USB_SERIAL_SAFE=m
|
|
|
++# CONFIG_USB_SERIAL_SAFE_PADDED is not set
|
|
|
++# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
|
|
|
++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
|
|
|
++# CONFIG_USB_SERIAL_SYMBOL is not set
|
|
|
++CONFIG_USB_SERIAL_TI=m
|
|
|
++CONFIG_USB_SERIAL_CYBERJACK=m
|
|
|
++CONFIG_USB_SERIAL_XIRCOM=m
|
|
|
++CONFIG_USB_SERIAL_OPTION=m
|
|
|
++CONFIG_USB_SERIAL_OMNINET=m
|
|
|
++# CONFIG_USB_SERIAL_OPTICON is not set
|
|
|
++# CONFIG_USB_SERIAL_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Miscellaneous drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_EMI62 is not set
|
|
|
++# CONFIG_USB_EMI26 is not set
|
|
|
++# CONFIG_USB_ADUTUX is not set
|
|
|
++# CONFIG_USB_SEVSEG is not set
|
|
|
++# CONFIG_USB_RIO500 is not set
|
|
|
++# CONFIG_USB_LEGOTOWER is not set
|
|
|
++# CONFIG_USB_LCD is not set
|
|
|
++# CONFIG_USB_BERRY_CHARGE is not set
|
|
|
++# CONFIG_USB_LED is not set
|
|
|
++# CONFIG_USB_CYPRESS_CY7C63 is not set
|
|
|
++# CONFIG_USB_CYTHERM is not set
|
|
|
++# CONFIG_USB_IDMOUSE is not set
|
|
|
++# CONFIG_USB_FTDI_ELAN is not set
|
|
|
++# CONFIG_USB_APPLEDISPLAY is not set
|
|
|
++# CONFIG_USB_SISUSBVGA is not set
|
|
|
++# CONFIG_USB_LD is not set
|
|
|
++# CONFIG_USB_TRANCEVIBRATOR is not set
|
|
|
++# CONFIG_USB_IOWARRIOR is not set
|
|
|
++# CONFIG_USB_TEST is not set
|
|
|
++# CONFIG_USB_ISIGHTFW is not set
|
|
|
++# CONFIG_USB_VST is not set
|
|
|
++# CONFIG_USB_ATM is not set
|
|
|
++# CONFIG_USB_GADGET is not set
|
|
|
++
|
|
|
++#
|
|
|
++# OTG and related infrastructure
|
|
|
++#
|
|
|
++# CONFIG_NOP_USB_XCEIV is not set
|
|
|
++# CONFIG_UWB is not set
|
|
|
++# CONFIG_MMC is not set
|
|
|
++# CONFIG_MEMSTICK is not set
|
|
|
++# CONFIG_NEW_LEDS is not set
|
|
|
++# CONFIG_ACCESSIBILITY is not set
|
|
|
++# CONFIG_INFINIBAND is not set
|
|
|
++CONFIG_RTC_LIB=y
|
|
|
++CONFIG_RTC_CLASS=y
|
|
|
++CONFIG_RTC_HCTOSYS=y
|
|
|
++CONFIG_RTC_HCTOSYS_DEVICE="rtc"
|
|
|
++# CONFIG_RTC_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RTC interfaces
|
|
|
++#
|
|
|
++CONFIG_RTC_INTF_SYSFS=y
|
|
|
++CONFIG_RTC_INTF_PROC=y
|
|
|
++CONFIG_RTC_INTF_DEV=y
|
|
|
++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
|
|
++# CONFIG_RTC_DRV_TEST is not set
|
|
|
++
|
|
|
++#
|
|
|
++# I2C RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_RTC_DRV_DS1307 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1374 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1672 is not set
|
|
|
++# CONFIG_RTC_DRV_MAX6900 is not set
|
|
|
++# CONFIG_RTC_DRV_RS5C372 is not set
|
|
|
++# CONFIG_RTC_DRV_ISL1208 is not set
|
|
|
++# CONFIG_RTC_DRV_X1205 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8563 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8583 is not set
|
|
|
++# CONFIG_RTC_DRV_M41T80 is not set
|
|
|
++# CONFIG_RTC_DRV_S35390A is not set
|
|
|
++# CONFIG_RTC_DRV_FM3130 is not set
|
|
|
++# CONFIG_RTC_DRV_RX8581 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# SPI RTC drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Platform RTC drivers
|
|
|
++#
|
|
|
++CONFIG_RTC_DRV_CMOS=y
|
|
|
++# CONFIG_RTC_DRV_DS1286 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1511 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1553 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1742 is not set
|
|
|
++# CONFIG_RTC_DRV_STK17TA8 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T86 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T35 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T59 is not set
|
|
|
++# CONFIG_RTC_DRV_BQ4802 is not set
|
|
|
++# CONFIG_RTC_DRV_V3020 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# on-CPU RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_DMADEVICES is not set
|
|
|
++# CONFIG_AUXDISPLAY is not set
|
|
|
++# CONFIG_UIO is not set
|
|
|
++# CONFIG_STAGING is not set
|
|
|
++
|
|
|
++#
|
|
|
++# File systems
|
|
|
++#
|
|
|
++CONFIG_EXT2_FS=y
|
|
|
++CONFIG_EXT2_FS_XATTR=y
|
|
|
++CONFIG_EXT2_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT2_FS_SECURITY=y
|
|
|
++# CONFIG_EXT2_FS_XIP is not set
|
|
|
++CONFIG_EXT3_FS=y
|
|
|
++# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
|
|
++CONFIG_EXT3_FS_XATTR=y
|
|
|
++CONFIG_EXT3_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT3_FS_SECURITY=y
|
|
|
++# CONFIG_EXT4_FS is not set
|
|
|
++CONFIG_JBD=y
|
|
|
++# CONFIG_JBD_DEBUG is not set
|
|
|
++CONFIG_JBD2=m
|
|
|
++# CONFIG_JBD2_DEBUG is not set
|
|
|
++CONFIG_FS_MBCACHE=y
|
|
|
++CONFIG_REISERFS_FS=m
|
|
|
++# CONFIG_REISERFS_CHECK is not set
|
|
|
++# CONFIG_REISERFS_PROC_INFO is not set
|
|
|
++CONFIG_REISERFS_FS_XATTR=y
|
|
|
++CONFIG_REISERFS_FS_POSIX_ACL=y
|
|
|
++CONFIG_REISERFS_FS_SECURITY=y
|
|
|
++CONFIG_JFS_FS=m
|
|
|
++CONFIG_JFS_POSIX_ACL=y
|
|
|
++CONFIG_JFS_SECURITY=y
|
|
|
++# CONFIG_JFS_DEBUG is not set
|
|
|
++# CONFIG_JFS_STATISTICS is not set
|
|
|
++CONFIG_FS_POSIX_ACL=y
|
|
|
++CONFIG_FILE_LOCKING=y
|
|
|
++CONFIG_XFS_FS=m
|
|
|
++CONFIG_XFS_QUOTA=y
|
|
|
++CONFIG_XFS_POSIX_ACL=y
|
|
|
++CONFIG_XFS_RT=y
|
|
|
++# CONFIG_XFS_DEBUG is not set
|
|
|
++# CONFIG_GFS2_FS is not set
|
|
|
++CONFIG_OCFS2_FS=m
|
|
|
++CONFIG_OCFS2_FS_O2CB=m
|
|
|
++CONFIG_OCFS2_FS_STATS=y
|
|
|
++CONFIG_OCFS2_DEBUG_MASKLOG=y
|
|
|
++# CONFIG_OCFS2_DEBUG_FS is not set
|
|
|
++# CONFIG_OCFS2_FS_POSIX_ACL is not set
|
|
|
++# CONFIG_BTRFS_FS is not set
|
|
|
++CONFIG_DNOTIFY=y
|
|
|
++CONFIG_INOTIFY=y
|
|
|
++CONFIG_INOTIFY_USER=y
|
|
|
++CONFIG_QUOTA=y
|
|
|
++# CONFIG_QUOTA_NETLINK_INTERFACE is not set
|
|
|
++CONFIG_PRINT_QUOTA_WARNING=y
|
|
|
++CONFIG_QUOTA_TREE=m
|
|
|
++CONFIG_QFMT_V1=m
|
|
|
++CONFIG_QFMT_V2=m
|
|
|
++CONFIG_QUOTACTL=y
|
|
|
++CONFIG_AUTOFS_FS=m
|
|
|
++CONFIG_AUTOFS4_FS=m
|
|
|
++CONFIG_FUSE_FS=m
|
|
|
++
|
|
|
++#
|
|
|
++# Caches
|
|
|
++#
|
|
|
++# CONFIG_FSCACHE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# CD-ROM/DVD Filesystems
|
|
|
++#
|
|
|
++CONFIG_ISO9660_FS=m
|
|
|
++CONFIG_JOLIET=y
|
|
|
++CONFIG_ZISOFS=y
|
|
|
++CONFIG_UDF_FS=m
|
|
|
++CONFIG_UDF_NLS=y
|
|
|
++
|
|
|
++#
|
|
|
++# DOS/FAT/NT Filesystems
|
|
|
++#
|
|
|
++CONFIG_FAT_FS=m
|
|
|
++CONFIG_MSDOS_FS=m
|
|
|
++CONFIG_VFAT_FS=m
|
|
|
++CONFIG_FAT_DEFAULT_CODEPAGE=437
|
|
|
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|
|
++CONFIG_NTFS_FS=m
|
|
|
++# CONFIG_NTFS_DEBUG is not set
|
|
|
++CONFIG_NTFS_RW=y
|
|
|
++
|
|
|
++#
|
|
|
++# Pseudo filesystems
|
|
|
++#
|
|
|
++CONFIG_PROC_FS=y
|
|
|
++CONFIG_PROC_KCORE=y
|
|
|
++CONFIG_PROC_SYSCTL=y
|
|
|
++CONFIG_PROC_PAGE_MONITOR=y
|
|
|
++CONFIG_SYSFS=y
|
|
|
++CONFIG_TMPFS=y
|
|
|
++# CONFIG_TMPFS_POSIX_ACL is not set
|
|
|
++# CONFIG_HUGETLB_PAGE is not set
|
|
|
++CONFIG_CONFIGFS_FS=m
|
|
|
++CONFIG_MISC_FILESYSTEMS=y
|
|
|
++CONFIG_ADFS_FS=m
|
|
|
++# CONFIG_ADFS_FS_RW is not set
|
|
|
++CONFIG_AFFS_FS=m
|
|
|
++# CONFIG_ECRYPT_FS is not set
|
|
|
++CONFIG_HFS_FS=m
|
|
|
++CONFIG_HFSPLUS_FS=m
|
|
|
++CONFIG_BEFS_FS=m
|
|
|
++# CONFIG_BEFS_DEBUG is not set
|
|
|
++CONFIG_BFS_FS=m
|
|
|
++CONFIG_EFS_FS=m
|
|
|
++CONFIG_CRAMFS=y
|
|
|
++# CONFIG_SQUASHFS is not set
|
|
|
++CONFIG_VXFS_FS=m
|
|
|
++CONFIG_MINIX_FS=m
|
|
|
++# CONFIG_OMFS_FS is not set
|
|
|
++CONFIG_HPFS_FS=m
|
|
|
++CONFIG_QNX4FS_FS=m
|
|
|
++CONFIG_ROMFS_FS=m
|
|
|
++CONFIG_ROMFS_BACKED_BY_BLOCK=y
|
|
|
++# CONFIG_ROMFS_BACKED_BY_MTD is not set
|
|
|
++# CONFIG_ROMFS_BACKED_BY_BOTH is not set
|
|
|
++CONFIG_ROMFS_ON_BLOCK=y
|
|
|
++CONFIG_SYSV_FS=m
|
|
|
++CONFIG_UFS_FS=m
|
|
|
++# CONFIG_UFS_FS_WRITE is not set
|
|
|
++# CONFIG_UFS_DEBUG is not set
|
|
|
++# CONFIG_NILFS2_FS is not set
|
|
|
++CONFIG_NETWORK_FILESYSTEMS=y
|
|
|
++CONFIG_NFS_FS=m
|
|
|
++CONFIG_NFS_V3=y
|
|
|
++CONFIG_NFS_V3_ACL=y
|
|
|
++CONFIG_NFS_V4=y
|
|
|
++CONFIG_NFSD=m
|
|
|
++CONFIG_NFSD_V2_ACL=y
|
|
|
++CONFIG_NFSD_V3=y
|
|
|
++CONFIG_NFSD_V3_ACL=y
|
|
|
++CONFIG_NFSD_V4=y
|
|
|
++CONFIG_LOCKD=m
|
|
|
++CONFIG_LOCKD_V4=y
|
|
|
++CONFIG_EXPORTFS=m
|
|
|
++CONFIG_NFS_ACL_SUPPORT=m
|
|
|
++CONFIG_NFS_COMMON=y
|
|
|
++CONFIG_SUNRPC=m
|
|
|
++CONFIG_SUNRPC_GSS=m
|
|
|
++CONFIG_RPCSEC_GSS_KRB5=m
|
|
|
++CONFIG_RPCSEC_GSS_SPKM3=m
|
|
|
++CONFIG_SMB_FS=m
|
|
|
++# CONFIG_SMB_NLS_DEFAULT is not set
|
|
|
++CONFIG_CIFS=m
|
|
|
++# CONFIG_CIFS_STATS is not set
|
|
|
++# CONFIG_CIFS_WEAK_PW_HASH is not set
|
|
|
++# CONFIG_CIFS_UPCALL is not set
|
|
|
++# CONFIG_CIFS_XATTR is not set
|
|
|
++# CONFIG_CIFS_DEBUG2 is not set
|
|
|
++# CONFIG_CIFS_DFS_UPCALL is not set
|
|
|
++# CONFIG_CIFS_EXPERIMENTAL is not set
|
|
|
++CONFIG_NCP_FS=m
|
|
|
++CONFIG_NCPFS_PACKET_SIGNING=y
|
|
|
++CONFIG_NCPFS_IOCTL_LOCKING=y
|
|
|
++CONFIG_NCPFS_STRONG=y
|
|
|
++CONFIG_NCPFS_NFS_NS=y
|
|
|
++CONFIG_NCPFS_OS2_NS=y
|
|
|
++# CONFIG_NCPFS_SMALLDOS is not set
|
|
|
++CONFIG_NCPFS_NLS=y
|
|
|
++CONFIG_NCPFS_EXTRAS=y
|
|
|
++CONFIG_CODA_FS=m
|
|
|
++CONFIG_AFS_FS=m
|
|
|
++# CONFIG_AFS_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Partition Types
|
|
|
++#
|
|
|
++CONFIG_PARTITION_ADVANCED=y
|
|
|
++CONFIG_ACORN_PARTITION=y
|
|
|
++# CONFIG_ACORN_PARTITION_CUMANA is not set
|
|
|
++# CONFIG_ACORN_PARTITION_EESOX is not set
|
|
|
++CONFIG_ACORN_PARTITION_ICS=y
|
|
|
++# CONFIG_ACORN_PARTITION_ADFS is not set
|
|
|
++# CONFIG_ACORN_PARTITION_POWERTEC is not set
|
|
|
++CONFIG_ACORN_PARTITION_RISCIX=y
|
|
|
++CONFIG_OSF_PARTITION=y
|
|
|
++CONFIG_AMIGA_PARTITION=y
|
|
|
++CONFIG_ATARI_PARTITION=y
|
|
|
++CONFIG_MAC_PARTITION=y
|
|
|
++CONFIG_MSDOS_PARTITION=y
|
|
|
++CONFIG_BSD_DISKLABEL=y
|
|
|
++CONFIG_MINIX_SUBPARTITION=y
|
|
|
++CONFIG_SOLARIS_X86_PARTITION=y
|
|
|
++CONFIG_UNIXWARE_DISKLABEL=y
|
|
|
++CONFIG_LDM_PARTITION=y
|
|
|
++# CONFIG_LDM_DEBUG is not set
|
|
|
++CONFIG_SGI_PARTITION=y
|
|
|
++CONFIG_ULTRIX_PARTITION=y
|
|
|
++CONFIG_SUN_PARTITION=y
|
|
|
++CONFIG_KARMA_PARTITION=y
|
|
|
++CONFIG_EFI_PARTITION=y
|
|
|
++# CONFIG_SYSV68_PARTITION is not set
|
|
|
++CONFIG_NLS=y
|
|
|
++CONFIG_NLS_DEFAULT="iso8859-1"
|
|
|
++CONFIG_NLS_CODEPAGE_437=m
|
|
|
++CONFIG_NLS_CODEPAGE_737=m
|
|
|
++CONFIG_NLS_CODEPAGE_775=m
|
|
|
++CONFIG_NLS_CODEPAGE_850=m
|
|
|
++CONFIG_NLS_CODEPAGE_852=m
|
|
|
++CONFIG_NLS_CODEPAGE_855=m
|
|
|
++CONFIG_NLS_CODEPAGE_857=m
|
|
|
++CONFIG_NLS_CODEPAGE_860=m
|
|
|
++CONFIG_NLS_CODEPAGE_861=m
|
|
|
++CONFIG_NLS_CODEPAGE_862=m
|
|
|
++CONFIG_NLS_CODEPAGE_863=m
|
|
|
++CONFIG_NLS_CODEPAGE_864=m
|
|
|
++CONFIG_NLS_CODEPAGE_865=m
|
|
|
++CONFIG_NLS_CODEPAGE_866=m
|
|
|
++CONFIG_NLS_CODEPAGE_869=m
|
|
|
++CONFIG_NLS_CODEPAGE_936=m
|
|
|
++CONFIG_NLS_CODEPAGE_950=m
|
|
|
++CONFIG_NLS_CODEPAGE_932=m
|
|
|
++CONFIG_NLS_CODEPAGE_949=m
|
|
|
++CONFIG_NLS_CODEPAGE_874=m
|
|
|
++CONFIG_NLS_ISO8859_8=m
|
|
|
++CONFIG_NLS_CODEPAGE_1250=m
|
|
|
++CONFIG_NLS_CODEPAGE_1251=m
|
|
|
++CONFIG_NLS_ASCII=m
|
|
|
++CONFIG_NLS_ISO8859_1=m
|
|
|
++CONFIG_NLS_ISO8859_2=m
|
|
|
++CONFIG_NLS_ISO8859_3=m
|
|
|
++CONFIG_NLS_ISO8859_4=m
|
|
|
++CONFIG_NLS_ISO8859_5=m
|
|
|
++CONFIG_NLS_ISO8859_6=m
|
|
|
++CONFIG_NLS_ISO8859_7=m
|
|
|
++CONFIG_NLS_ISO8859_9=m
|
|
|
++CONFIG_NLS_ISO8859_13=m
|
|
|
++CONFIG_NLS_ISO8859_14=m
|
|
|
++CONFIG_NLS_ISO8859_15=m
|
|
|
++CONFIG_NLS_KOI8_R=m
|
|
|
++CONFIG_NLS_KOI8_U=m
|
|
|
++CONFIG_NLS_UTF8=m
|
|
|
++# CONFIG_DLM is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel hacking
|
|
|
++#
|
|
|
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
|
|
++# CONFIG_PRINTK_TIME is not set
|
|
|
++CONFIG_ENABLE_WARN_DEPRECATED=y
|
|
|
++CONFIG_ENABLE_MUST_CHECK=y
|
|
|
++CONFIG_FRAME_WARN=1024
|
|
|
++CONFIG_MAGIC_SYSRQ=y
|
|
|
++CONFIG_UNUSED_SYMBOLS=y
|
|
|
++CONFIG_DEBUG_FS=y
|
|
|
++# CONFIG_HEADERS_CHECK is not set
|
|
|
++# CONFIG_DEBUG_KERNEL is not set
|
|
|
++# CONFIG_DEBUG_MEMORY_INIT is not set
|
|
|
++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
|
++CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
|
++CONFIG_TRACING_SUPPORT=y
|
|
|
++
|
|
|
++#
|
|
|
++# Tracers
|
|
|
++#
|
|
|
++# CONFIG_IRQSOFF_TRACER is not set
|
|
|
++# CONFIG_SCHED_TRACER is not set
|
|
|
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
|
|
++# CONFIG_EVENT_TRACER is not set
|
|
|
++# CONFIG_BOOT_TRACER is not set
|
|
|
++# CONFIG_TRACE_BRANCH_PROFILING is not set
|
|
|
++# CONFIG_KMEMTRACE is not set
|
|
|
++# CONFIG_WORKQUEUE_TRACER is not set
|
|
|
++# CONFIG_BLK_DEV_IO_TRACE is not set
|
|
|
++# CONFIG_DYNAMIC_DEBUG is not set
|
|
|
++# CONFIG_SAMPLES is not set
|
|
|
++CONFIG_HAVE_ARCH_KGDB=y
|
|
|
++CONFIG_CMDLINE=""
|
|
|
++
|
|
|
++#
|
|
|
++# Security options
|
|
|
++#
|
|
|
++CONFIG_KEYS=y
|
|
|
++# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
|
|
++CONFIG_SECURITY=y
|
|
|
++# CONFIG_SECURITYFS is not set
|
|
|
++CONFIG_SECURITY_NETWORK=y
|
|
|
++CONFIG_SECURITY_NETWORK_XFRM=y
|
|
|
++# CONFIG_SECURITY_PATH is not set
|
|
|
++# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
|
|
++# CONFIG_SECURITY_ROOTPLUG is not set
|
|
|
++CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
|
|
|
++CONFIG_SECURITY_SELINUX=y
|
|
|
++CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
|
|
++CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
|
|
++CONFIG_SECURITY_SELINUX_DISABLE=y
|
|
|
++CONFIG_SECURITY_SELINUX_DEVELOP=y
|
|
|
++CONFIG_SECURITY_SELINUX_AVC_STATS=y
|
|
|
++CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
|
|
|
++# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
|
|
|
++# CONFIG_SECURITY_TOMOYO is not set
|
|
|
++CONFIG_XOR_BLOCKS=m
|
|
|
++CONFIG_ASYNC_CORE=m
|
|
|
++CONFIG_ASYNC_MEMCPY=m
|
|
|
++CONFIG_ASYNC_XOR=m
|
|
|
++CONFIG_CRYPTO=y
|
|
|
++
|
|
|
++#
|
|
|
++# Crypto core or helper
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_FIPS is not set
|
|
|
++CONFIG_CRYPTO_ALGAPI=y
|
|
|
++CONFIG_CRYPTO_ALGAPI2=y
|
|
|
++CONFIG_CRYPTO_AEAD=m
|
|
|
++CONFIG_CRYPTO_AEAD2=y
|
|
|
++CONFIG_CRYPTO_BLKCIPHER=y
|
|
|
++CONFIG_CRYPTO_BLKCIPHER2=y
|
|
|
++CONFIG_CRYPTO_HASH=y
|
|
|
++CONFIG_CRYPTO_HASH2=y
|
|
|
++CONFIG_CRYPTO_RNG2=y
|
|
|
++CONFIG_CRYPTO_PCOMP=y
|
|
|
++CONFIG_CRYPTO_MANAGER=y
|
|
|
++CONFIG_CRYPTO_MANAGER2=y
|
|
|
++# CONFIG_CRYPTO_GF128MUL is not set
|
|
|
++CONFIG_CRYPTO_NULL=m
|
|
|
++CONFIG_CRYPTO_WORKQUEUE=y
|
|
|
++# CONFIG_CRYPTO_CRYPTD is not set
|
|
|
++CONFIG_CRYPTO_AUTHENC=m
|
|
|
++CONFIG_CRYPTO_TEST=m
|
|
|
++
|
|
|
++#
|
|
|
++# Authenticated Encryption with Associated Data
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_CCM is not set
|
|
|
++# CONFIG_CRYPTO_GCM is not set
|
|
|
++# CONFIG_CRYPTO_SEQIV is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Block modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CBC=y
|
|
|
++# CONFIG_CRYPTO_CTR is not set
|
|
|
++# CONFIG_CRYPTO_CTS is not set
|
|
|
++CONFIG_CRYPTO_ECB=m
|
|
|
++# CONFIG_CRYPTO_LRW is not set
|
|
|
++# CONFIG_CRYPTO_PCBC is not set
|
|
|
++# CONFIG_CRYPTO_XTS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Hash modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_HMAC=y
|
|
|
++# CONFIG_CRYPTO_XCBC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Digest
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CRC32C=m
|
|
|
++CONFIG_CRYPTO_MD4=m
|
|
|
++CONFIG_CRYPTO_MD5=y
|
|
|
++CONFIG_CRYPTO_MICHAEL_MIC=m
|
|
|
++# CONFIG_CRYPTO_RMD128 is not set
|
|
|
++# CONFIG_CRYPTO_RMD160 is not set
|
|
|
++# CONFIG_CRYPTO_RMD256 is not set
|
|
|
++# CONFIG_CRYPTO_RMD320 is not set
|
|
|
++CONFIG_CRYPTO_SHA1=m
|
|
|
++CONFIG_CRYPTO_SHA256=m
|
|
|
++CONFIG_CRYPTO_SHA512=m
|
|
|
++CONFIG_CRYPTO_TGR192=m
|
|
|
++CONFIG_CRYPTO_WP512=m
|
|
|
++
|
|
|
++#
|
|
|
++# Ciphers
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_AES=m
|
|
|
++CONFIG_CRYPTO_ANUBIS=m
|
|
|
++CONFIG_CRYPTO_ARC4=m
|
|
|
++CONFIG_CRYPTO_BLOWFISH=m
|
|
|
++# CONFIG_CRYPTO_CAMELLIA is not set
|
|
|
++CONFIG_CRYPTO_CAST5=m
|
|
|
++CONFIG_CRYPTO_CAST6=m
|
|
|
++CONFIG_CRYPTO_DES=m
|
|
|
++# CONFIG_CRYPTO_FCRYPT is not set
|
|
|
++CONFIG_CRYPTO_KHAZAD=m
|
|
|
++# CONFIG_CRYPTO_SALSA20 is not set
|
|
|
++# CONFIG_CRYPTO_SEED is not set
|
|
|
++CONFIG_CRYPTO_SERPENT=m
|
|
|
++CONFIG_CRYPTO_TEA=m
|
|
|
++CONFIG_CRYPTO_TWOFISH=m
|
|
|
++CONFIG_CRYPTO_TWOFISH_COMMON=m
|
|
|
++
|
|
|
++#
|
|
|
++# Compression
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_DEFLATE=m
|
|
|
++# CONFIG_CRYPTO_ZLIB is not set
|
|
|
++# CONFIG_CRYPTO_LZO is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Random Number Generation
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
|
|
++CONFIG_CRYPTO_HW=y
|
|
|
++# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
|
|
++# CONFIG_BINARY_PRINTF is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Library routines
|
|
|
++#
|
|
|
++CONFIG_BITREVERSE=y
|
|
|
++CONFIG_GENERIC_FIND_LAST_BIT=y
|
|
|
++CONFIG_CRC_CCITT=m
|
|
|
++CONFIG_CRC16=m
|
|
|
++# CONFIG_CRC_T10DIF is not set
|
|
|
++CONFIG_CRC_ITU_T=m
|
|
|
++CONFIG_CRC32=y
|
|
|
++# CONFIG_CRC7 is not set
|
|
|
++CONFIG_LIBCRC32C=m
|
|
|
++CONFIG_AUDIT_GENERIC=y
|
|
|
++CONFIG_ZLIB_INFLATE=y
|
|
|
++CONFIG_ZLIB_DEFLATE=m
|
|
|
++CONFIG_DECOMPRESS_GZIP=y
|
|
|
++CONFIG_TEXTSEARCH=y
|
|
|
++CONFIG_TEXTSEARCH_KMP=m
|
|
|
++CONFIG_TEXTSEARCH_BM=m
|
|
|
++CONFIG_TEXTSEARCH_FSM=m
|
|
|
++CONFIG_HAS_IOMEM=y
|
|
|
++CONFIG_HAS_IOPORT=y
|
|
|
++CONFIG_HAS_DMA=y
|
|
|
++CONFIG_NLATTR=y
|
|
|
+diff -Nur linux-2.6.30/arch/mips/configs/yeeloong2f_defconfig rt4ls/arch/mips/configs/yeeloong2f_defconfig
|
|
|
+--- linux-2.6.30/arch/mips/configs/yeeloong2f_defconfig 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/configs/yeeloong2f_defconfig 2009-06-12 16:27:08.290407950 +0200
|
|
|
+@@ -0,0 +1,2711 @@
|
|
|
++#
|
|
|
++# Automatically generated make config: don't edit
|
|
|
++# Linux kernel version: 2.6.30-rc8
|
|
|
++# Wed Jun 10 22:18:32 2009
|
|
|
++#
|
|
|
++CONFIG_MIPS=y
|
|
|
++
|
|
|
++#
|
|
|
++# Machine selection
|
|
|
++#
|
|
|
++# CONFIG_MACH_ALCHEMY is not set
|
|
|
++# CONFIG_BASLER_EXCITE is not set
|
|
|
++# CONFIG_BCM47XX is not set
|
|
|
++# CONFIG_MIPS_COBALT is not set
|
|
|
++# CONFIG_MACH_DECSTATION is not set
|
|
|
++# CONFIG_MACH_JAZZ is not set
|
|
|
++# CONFIG_LASAT is not set
|
|
|
++CONFIG_MACH_LOONGSON=y
|
|
|
++# CONFIG_MIPS_MALTA is not set
|
|
|
++# CONFIG_MIPS_SIM is not set
|
|
|
++# CONFIG_NEC_MARKEINS is not set
|
|
|
++# CONFIG_MACH_VR41XX is not set
|
|
|
++# CONFIG_NXP_STB220 is not set
|
|
|
++# CONFIG_NXP_STB225 is not set
|
|
|
++# CONFIG_PNX8550_JBS is not set
|
|
|
++# CONFIG_PNX8550_STB810 is not set
|
|
|
++# CONFIG_PMC_MSP is not set
|
|
|
++# CONFIG_PMC_YOSEMITE is not set
|
|
|
++# CONFIG_SGI_IP22 is not set
|
|
|
++# CONFIG_SGI_IP27 is not set
|
|
|
++# CONFIG_SGI_IP28 is not set
|
|
|
++# CONFIG_SGI_IP32 is not set
|
|
|
++# CONFIG_SIBYTE_CRHINE is not set
|
|
|
++# CONFIG_SIBYTE_CARMEL is not set
|
|
|
++# CONFIG_SIBYTE_CRHONE is not set
|
|
|
++# CONFIG_SIBYTE_RHONE is not set
|
|
|
++# CONFIG_SIBYTE_SWARM is not set
|
|
|
++# CONFIG_SIBYTE_LITTLESUR is not set
|
|
|
++# CONFIG_SIBYTE_SENTOSA is not set
|
|
|
++# CONFIG_SIBYTE_BIGSUR is not set
|
|
|
++# CONFIG_SNI_RM is not set
|
|
|
++# CONFIG_MACH_TX39XX is not set
|
|
|
++# CONFIG_MACH_TX49XX is not set
|
|
|
++# CONFIG_MIKROTIK_RB532 is not set
|
|
|
++# CONFIG_WR_PPMC is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
|
|
|
++# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
|
|
|
++CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
|
++# CONFIG_LEMOTE_FULOONG2E is not set
|
|
|
++# CONFIG_LEMOTE_FULOONG2F is not set
|
|
|
++CONFIG_LEMOTE_YEELOONG2F=y
|
|
|
++CONFIG_CS5536=y
|
|
|
++CONFIG_SYS_HAS_MACH_PROM_INIT_CMDLINE=y
|
|
|
++CONFIG_CS5536_MFGPT=y
|
|
|
++CONFIG_UCA_SIZE=0x400000
|
|
|
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
|
|
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
|
|
++CONFIG_ARCH_SUPPORTS_OPROFILE=y
|
|
|
++CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|
|
++CONFIG_GENERIC_HWEIGHT=y
|
|
|
++CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS=y
|
|
|
++CONFIG_GENERIC_TIME=y
|
|
|
++CONFIG_GENERIC_CMOS_UPDATE=y
|
|
|
++CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
|
|
++CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
|
|
++CONFIG_DMA_NONCOHERENT=y
|
|
|
++CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
|
|
++CONFIG_EARLY_PRINTK=y
|
|
|
++CONFIG_SYS_HAS_EARLY_PRINTK=y
|
|
|
++# CONFIG_HOTPLUG_CPU is not set
|
|
|
++CONFIG_I8259=y
|
|
|
++# CONFIG_NO_IOPORT is not set
|
|
|
++CONFIG_GENERIC_ISA_DMA=y
|
|
|
++CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
|
|
|
++# CONFIG_CPU_BIG_ENDIAN is not set
|
|
|
++CONFIG_CPU_LITTLE_ENDIAN=y
|
|
|
++CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
|
|
++CONFIG_IRQ_CPU=y
|
|
|
++CONFIG_BOOT_ELF32=y
|
|
|
++CONFIG_MIPS_L1_CACHE_SHIFT=5
|
|
|
++
|
|
|
++#
|
|
|
++# CPU selection
|
|
|
++#
|
|
|
++# CONFIG_CPU_LOONGSON2E is not set
|
|
|
++CONFIG_CPU_LOONGSON2F=y
|
|
|
++# CONFIG_CPU_MIPS32_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS32_R2 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R1 is not set
|
|
|
++# CONFIG_CPU_MIPS64_R2 is not set
|
|
|
++# CONFIG_CPU_R3000 is not set
|
|
|
++# CONFIG_CPU_TX39XX is not set
|
|
|
++# CONFIG_CPU_VR41XX is not set
|
|
|
++# CONFIG_CPU_R4300 is not set
|
|
|
++# CONFIG_CPU_R4X00 is not set
|
|
|
++# CONFIG_CPU_TX49XX is not set
|
|
|
++# CONFIG_CPU_R5000 is not set
|
|
|
++# CONFIG_CPU_R5432 is not set
|
|
|
++# CONFIG_CPU_R5500 is not set
|
|
|
++# CONFIG_CPU_R6000 is not set
|
|
|
++# CONFIG_CPU_NEVADA is not set
|
|
|
++# CONFIG_CPU_R8000 is not set
|
|
|
++# CONFIG_CPU_R10000 is not set
|
|
|
++# CONFIG_CPU_RM7000 is not set
|
|
|
++# CONFIG_CPU_RM9000 is not set
|
|
|
++# CONFIG_CPU_SB1 is not set
|
|
|
++# CONFIG_CPU_CAVIUM_OCTEON is not set
|
|
|
++CONFIG_CPU_LOONGSON2=y
|
|
|
++CONFIG_SYS_HAS_CPU_LOONGSON2F=y
|
|
|
++CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
|
|
++CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel type
|
|
|
++#
|
|
|
++# CONFIG_32BIT is not set
|
|
|
++CONFIG_64BIT=y
|
|
|
++# CONFIG_PAGE_SIZE_4KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_8KB is not set
|
|
|
++CONFIG_PAGE_SIZE_16KB=y
|
|
|
++# CONFIG_PAGE_SIZE_32KB is not set
|
|
|
++# CONFIG_PAGE_SIZE_64KB is not set
|
|
|
++CONFIG_BOARD_SCACHE=y
|
|
|
++CONFIG_MIPS_MT_DISABLED=y
|
|
|
++# CONFIG_MIPS_MT_SMP is not set
|
|
|
++# CONFIG_MIPS_MT_SMTC is not set
|
|
|
++CONFIG_CPU_HAS_WB=y
|
|
|
++CONFIG_CPU_HAS_SYNC=y
|
|
|
++CONFIG_GENERIC_HARDIRQS=y
|
|
|
++CONFIG_GENERIC_IRQ_PROBE=y
|
|
|
++CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_SYS_SUPPORTS_HIGHMEM=y
|
|
|
++CONFIG_ARCH_FLATMEM_ENABLE=y
|
|
|
++CONFIG_ARCH_POPULATES_NODE_MAP=y
|
|
|
++CONFIG_SELECT_MEMORY_MODEL=y
|
|
|
++# CONFIG_FLATMEM_MANUAL is not set
|
|
|
++# CONFIG_DISCONTIGMEM_MANUAL is not set
|
|
|
++CONFIG_SPARSEMEM_MANUAL=y
|
|
|
++CONFIG_SPARSEMEM=y
|
|
|
++CONFIG_HAVE_MEMORY_PRESENT=y
|
|
|
++CONFIG_SPARSEMEM_STATIC=y
|
|
|
++
|
|
|
++#
|
|
|
++# Memory hotplug is currently incompatible with Software Suspend
|
|
|
++#
|
|
|
++CONFIG_PAGEFLAGS_EXTENDED=y
|
|
|
++CONFIG_SPLIT_PTLOCK_CPUS=4
|
|
|
++CONFIG_PHYS_ADDR_T_64BIT=y
|
|
|
++CONFIG_ZONE_DMA_FLAG=0
|
|
|
++CONFIG_VIRT_TO_BUS=y
|
|
|
++CONFIG_UNEVICTABLE_LRU=y
|
|
|
++CONFIG_HAVE_MLOCK=y
|
|
|
++CONFIG_HAVE_MLOCKED_PAGE_BIT=y
|
|
|
++CONFIG_TICK_ONESHOT=y
|
|
|
++CONFIG_NO_HZ=y
|
|
|
++CONFIG_HIGH_RES_TIMERS=y
|
|
|
++CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
|
|
++# CONFIG_HZ_48 is not set
|
|
|
++# CONFIG_HZ_100 is not set
|
|
|
++# CONFIG_HZ_128 is not set
|
|
|
++CONFIG_HZ_250=y
|
|
|
++# CONFIG_HZ_256 is not set
|
|
|
++# CONFIG_HZ_1000 is not set
|
|
|
++# CONFIG_HZ_1024 is not set
|
|
|
++CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
|
|
++CONFIG_HZ=250
|
|
|
++# CONFIG_PREEMPT_NONE is not set
|
|
|
++CONFIG_PREEMPT_VOLUNTARY=y
|
|
|
++# CONFIG_PREEMPT is not set
|
|
|
++CONFIG_KEXEC=y
|
|
|
++# CONFIG_SECCOMP is not set
|
|
|
++CONFIG_LOCKDEP_SUPPORT=y
|
|
|
++CONFIG_STACKTRACE_SUPPORT=y
|
|
|
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
|
|
++
|
|
|
++#
|
|
|
++# General setup
|
|
|
++#
|
|
|
++CONFIG_EXPERIMENTAL=y
|
|
|
++CONFIG_BROKEN_ON_SMP=y
|
|
|
++CONFIG_INIT_ENV_ARG_LIMIT=32
|
|
|
++CONFIG_LOCALVERSION=""
|
|
|
++# CONFIG_LOCALVERSION_AUTO is not set
|
|
|
++CONFIG_SWAP=y
|
|
|
++CONFIG_SYSVIPC=y
|
|
|
++CONFIG_SYSVIPC_SYSCTL=y
|
|
|
++CONFIG_POSIX_MQUEUE=y
|
|
|
++CONFIG_POSIX_MQUEUE_SYSCTL=y
|
|
|
++CONFIG_BSD_PROCESS_ACCT=y
|
|
|
++CONFIG_BSD_PROCESS_ACCT_V3=y
|
|
|
++# CONFIG_TASKSTATS is not set
|
|
|
++CONFIG_AUDIT=y
|
|
|
++
|
|
|
++#
|
|
|
++# RCU Subsystem
|
|
|
++#
|
|
|
++CONFIG_CLASSIC_RCU=y
|
|
|
++# CONFIG_TREE_RCU is not set
|
|
|
++# CONFIG_PREEMPT_RCU is not set
|
|
|
++# CONFIG_TREE_RCU_TRACE is not set
|
|
|
++# CONFIG_PREEMPT_RCU_TRACE is not set
|
|
|
++CONFIG_IKCONFIG=y
|
|
|
++CONFIG_IKCONFIG_PROC=y
|
|
|
++CONFIG_LOG_BUF_SHIFT=15
|
|
|
++# CONFIG_GROUP_SCHED is not set
|
|
|
++# CONFIG_CGROUPS is not set
|
|
|
++CONFIG_SYSFS_DEPRECATED=y
|
|
|
++CONFIG_SYSFS_DEPRECATED_V2=y
|
|
|
++# CONFIG_RELAY is not set
|
|
|
++# CONFIG_NAMESPACES is not set
|
|
|
++CONFIG_BLK_DEV_INITRD=y
|
|
|
++CONFIG_INITRAMFS_SOURCE=""
|
|
|
++CONFIG_RD_GZIP=y
|
|
|
++# CONFIG_RD_BZIP2 is not set
|
|
|
++# CONFIG_RD_LZMA is not set
|
|
|
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
|
++CONFIG_SYSCTL=y
|
|
|
++CONFIG_ANON_INODES=y
|
|
|
++CONFIG_EMBEDDED=y
|
|
|
++CONFIG_SYSCTL_SYSCALL=y
|
|
|
++CONFIG_KALLSYMS=y
|
|
|
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
|
|
++# CONFIG_STRIP_ASM_SYMS is not set
|
|
|
++CONFIG_HOTPLUG=y
|
|
|
++CONFIG_PRINTK=y
|
|
|
++CONFIG_BUG=y
|
|
|
++CONFIG_ELF_CORE=y
|
|
|
++CONFIG_PCSPKR_PLATFORM=y
|
|
|
++CONFIG_BASE_FULL=y
|
|
|
++CONFIG_FUTEX=y
|
|
|
++CONFIG_EPOLL=y
|
|
|
++CONFIG_SIGNALFD=y
|
|
|
++CONFIG_TIMERFD=y
|
|
|
++CONFIG_EVENTFD=y
|
|
|
++CONFIG_SHMEM=y
|
|
|
++CONFIG_AIO=y
|
|
|
++CONFIG_VM_EVENT_COUNTERS=y
|
|
|
++CONFIG_PCI_QUIRKS=y
|
|
|
++CONFIG_COMPAT_BRK=y
|
|
|
++CONFIG_SLAB=y
|
|
|
++# CONFIG_SLUB is not set
|
|
|
++# CONFIG_SLOB is not set
|
|
|
++CONFIG_PROFILING=y
|
|
|
++CONFIG_TRACEPOINTS=y
|
|
|
++# CONFIG_MARKERS is not set
|
|
|
++CONFIG_OPROFILE=m
|
|
|
++CONFIG_HAVE_OPROFILE=y
|
|
|
++CONFIG_HAVE_SYSCALL_WRAPPERS=y
|
|
|
++# CONFIG_SLOW_WORK is not set
|
|
|
++# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
|
|
++CONFIG_SLABINFO=y
|
|
|
++CONFIG_RT_MUTEXES=y
|
|
|
++CONFIG_BASE_SMALL=0
|
|
|
++CONFIG_MODULES=y
|
|
|
++# CONFIG_MODULE_FORCE_LOAD is not set
|
|
|
++CONFIG_MODULE_UNLOAD=y
|
|
|
++CONFIG_MODULE_FORCE_UNLOAD=y
|
|
|
++CONFIG_MODVERSIONS=y
|
|
|
++# CONFIG_MODULE_SRCVERSION_ALL is not set
|
|
|
++CONFIG_BLOCK=y
|
|
|
++# CONFIG_BLK_DEV_BSG is not set
|
|
|
++# CONFIG_BLK_DEV_INTEGRITY is not set
|
|
|
++CONFIG_BLOCK_COMPAT=y
|
|
|
++
|
|
|
++#
|
|
|
++# IO Schedulers
|
|
|
++#
|
|
|
++CONFIG_IOSCHED_NOOP=y
|
|
|
++CONFIG_IOSCHED_AS=y
|
|
|
++CONFIG_IOSCHED_DEADLINE=y
|
|
|
++CONFIG_IOSCHED_CFQ=y
|
|
|
++# CONFIG_DEFAULT_AS is not set
|
|
|
++# CONFIG_DEFAULT_DEADLINE is not set
|
|
|
++CONFIG_DEFAULT_CFQ=y
|
|
|
++# CONFIG_DEFAULT_NOOP is not set
|
|
|
++CONFIG_DEFAULT_IOSCHED="cfq"
|
|
|
++# CONFIG_PROBE_INITRD_HEADER is not set
|
|
|
++CONFIG_FREEZER=y
|
|
|
++
|
|
|
++#
|
|
|
++# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
|
|
++#
|
|
|
++CONFIG_HW_HAS_PCI=y
|
|
|
++CONFIG_PCI=y
|
|
|
++CONFIG_PCI_DOMAINS=y
|
|
|
++# CONFIG_ARCH_SUPPORTS_MSI is not set
|
|
|
++CONFIG_PCI_LEGACY=y
|
|
|
++# CONFIG_PCI_STUB is not set
|
|
|
++# CONFIG_PCI_IOV is not set
|
|
|
++CONFIG_ISA=y
|
|
|
++CONFIG_MMU=y
|
|
|
++# CONFIG_PCCARD is not set
|
|
|
++CONFIG_HOTPLUG_PCI=m
|
|
|
++CONFIG_HOTPLUG_PCI_FAKE=m
|
|
|
++CONFIG_HOTPLUG_PCI_CPCI=y
|
|
|
++CONFIG_HOTPLUG_PCI_SHPC=m
|
|
|
++
|
|
|
++#
|
|
|
++# Executable file formats
|
|
|
++#
|
|
|
++CONFIG_BINFMT_ELF=y
|
|
|
++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
|
|
++# CONFIG_HAVE_AOUT is not set
|
|
|
++CONFIG_BINFMT_MISC=m
|
|
|
++CONFIG_MIPS32_COMPAT=y
|
|
|
++CONFIG_COMPAT=y
|
|
|
++CONFIG_SYSVIPC_COMPAT=y
|
|
|
++CONFIG_MIPS32_O32=y
|
|
|
++CONFIG_MIPS32_N32=y
|
|
|
++CONFIG_BINFMT_ELF32=y
|
|
|
++
|
|
|
++#
|
|
|
++# Power management options
|
|
|
++#
|
|
|
++CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
|
++CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
|
++CONFIG_PM=y
|
|
|
++# CONFIG_PM_DEBUG is not set
|
|
|
++CONFIG_PM_SLEEP=y
|
|
|
++CONFIG_SUSPEND=y
|
|
|
++CONFIG_SUSPEND_FREEZER=y
|
|
|
++CONFIG_HIBERNATION=y
|
|
|
++CONFIG_PM_STD_PARTITION=""
|
|
|
++
|
|
|
++#
|
|
|
++# CPU Frequency scaling
|
|
|
++#
|
|
|
++CONFIG_CPU_FREQ=y
|
|
|
++CONFIG_CPU_FREQ_TABLE=y
|
|
|
++# CONFIG_CPU_FREQ_DEBUG is not set
|
|
|
++CONFIG_CPU_FREQ_STAT=y
|
|
|
++# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
|
|
++# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
|
|
|
++CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
|
|
|
++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
|
++# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
|
++# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
|
++# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
|
|
++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
|
|
++CONFIG_LOONGSON2F_CPU_FREQ=y
|
|
|
++CONFIG_NET=y
|
|
|
++
|
|
|
++#
|
|
|
++# Networking options
|
|
|
++#
|
|
|
++CONFIG_PACKET=y
|
|
|
++CONFIG_PACKET_MMAP=y
|
|
|
++CONFIG_UNIX=y
|
|
|
++CONFIG_XFRM=y
|
|
|
++CONFIG_XFRM_USER=m
|
|
|
++# CONFIG_XFRM_SUB_POLICY is not set
|
|
|
++# CONFIG_XFRM_MIGRATE is not set
|
|
|
++# CONFIG_XFRM_STATISTICS is not set
|
|
|
++CONFIG_XFRM_IPCOMP=m
|
|
|
++CONFIG_NET_KEY=m
|
|
|
++# CONFIG_NET_KEY_MIGRATE is not set
|
|
|
++CONFIG_INET=y
|
|
|
++CONFIG_IP_MULTICAST=y
|
|
|
++CONFIG_IP_ADVANCED_ROUTER=y
|
|
|
++CONFIG_ASK_IP_FIB_HASH=y
|
|
|
++# CONFIG_IP_FIB_TRIE is not set
|
|
|
++CONFIG_IP_FIB_HASH=y
|
|
|
++CONFIG_IP_MULTIPLE_TABLES=y
|
|
|
++CONFIG_IP_ROUTE_MULTIPATH=y
|
|
|
++CONFIG_IP_ROUTE_VERBOSE=y
|
|
|
++# CONFIG_IP_PNP is not set
|
|
|
++CONFIG_NET_IPIP=m
|
|
|
++CONFIG_NET_IPGRE=m
|
|
|
++CONFIG_NET_IPGRE_BROADCAST=y
|
|
|
++CONFIG_IP_MROUTE=y
|
|
|
++CONFIG_IP_PIMSM_V1=y
|
|
|
++CONFIG_IP_PIMSM_V2=y
|
|
|
++# CONFIG_ARPD is not set
|
|
|
++CONFIG_SYN_COOKIES=y
|
|
|
++CONFIG_INET_AH=m
|
|
|
++CONFIG_INET_ESP=m
|
|
|
++CONFIG_INET_IPCOMP=m
|
|
|
++CONFIG_INET_XFRM_TUNNEL=m
|
|
|
++CONFIG_INET_TUNNEL=m
|
|
|
++CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
|
|
++CONFIG_INET_XFRM_MODE_TUNNEL=m
|
|
|
++CONFIG_INET_XFRM_MODE_BEET=y
|
|
|
++CONFIG_INET_LRO=y
|
|
|
++CONFIG_INET_DIAG=m
|
|
|
++CONFIG_INET_TCP_DIAG=m
|
|
|
++CONFIG_TCP_CONG_ADVANCED=y
|
|
|
++CONFIG_TCP_CONG_BIC=y
|
|
|
++CONFIG_TCP_CONG_CUBIC=m
|
|
|
++CONFIG_TCP_CONG_WESTWOOD=m
|
|
|
++CONFIG_TCP_CONG_HTCP=m
|
|
|
++CONFIG_TCP_CONG_HSTCP=m
|
|
|
++CONFIG_TCP_CONG_HYBLA=m
|
|
|
++CONFIG_TCP_CONG_VEGAS=m
|
|
|
++CONFIG_TCP_CONG_SCALABLE=m
|
|
|
++CONFIG_TCP_CONG_LP=m
|
|
|
++CONFIG_TCP_CONG_VENO=m
|
|
|
++# CONFIG_TCP_CONG_YEAH is not set
|
|
|
++# CONFIG_TCP_CONG_ILLINOIS is not set
|
|
|
++CONFIG_DEFAULT_BIC=y
|
|
|
++# CONFIG_DEFAULT_CUBIC is not set
|
|
|
++# CONFIG_DEFAULT_HTCP is not set
|
|
|
++# CONFIG_DEFAULT_VEGAS is not set
|
|
|
++# CONFIG_DEFAULT_WESTWOOD is not set
|
|
|
++# CONFIG_DEFAULT_RENO is not set
|
|
|
++CONFIG_DEFAULT_TCP_CONG="bic"
|
|
|
++# CONFIG_TCP_MD5SIG is not set
|
|
|
++CONFIG_IPV6=m
|
|
|
++CONFIG_IPV6_PRIVACY=y
|
|
|
++# CONFIG_IPV6_ROUTER_PREF is not set
|
|
|
++# CONFIG_IPV6_OPTIMISTIC_DAD is not set
|
|
|
++CONFIG_INET6_AH=m
|
|
|
++CONFIG_INET6_ESP=m
|
|
|
++CONFIG_INET6_IPCOMP=m
|
|
|
++# CONFIG_IPV6_MIP6 is not set
|
|
|
++CONFIG_INET6_XFRM_TUNNEL=m
|
|
|
++CONFIG_INET6_TUNNEL=m
|
|
|
++CONFIG_INET6_XFRM_MODE_TRANSPORT=m
|
|
|
++CONFIG_INET6_XFRM_MODE_TUNNEL=m
|
|
|
++CONFIG_INET6_XFRM_MODE_BEET=m
|
|
|
++# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
|
|
|
++CONFIG_IPV6_SIT=m
|
|
|
++CONFIG_IPV6_NDISC_NODETYPE=y
|
|
|
++CONFIG_IPV6_TUNNEL=m
|
|
|
++# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
|
|
++# CONFIG_IPV6_MROUTE is not set
|
|
|
++# CONFIG_NETLABEL is not set
|
|
|
++CONFIG_NETWORK_SECMARK=y
|
|
|
++CONFIG_NETFILTER=y
|
|
|
++# CONFIG_NETFILTER_DEBUG is not set
|
|
|
++CONFIG_NETFILTER_ADVANCED=y
|
|
|
++CONFIG_BRIDGE_NETFILTER=y
|
|
|
++
|
|
|
++#
|
|
|
++# Core Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_NETFILTER_NETLINK=m
|
|
|
++CONFIG_NETFILTER_NETLINK_QUEUE=m
|
|
|
++CONFIG_NETFILTER_NETLINK_LOG=m
|
|
|
++# CONFIG_NF_CONNTRACK is not set
|
|
|
++# CONFIG_NETFILTER_TPROXY is not set
|
|
|
++CONFIG_NETFILTER_XTABLES=m
|
|
|
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_HL=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_LED is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_MARK=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
|
|
|
++CONFIG_NETFILTER_XT_TARGET_SECMARK=m
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
|
|
|
++# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_HL=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MARK=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_POLICY=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_REALM=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
|
|
|
++CONFIG_NETFILTER_XT_MATCH_SCTP=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|
|
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_TIME is not set
|
|
|
++# CONFIG_NETFILTER_XT_MATCH_U32 is not set
|
|
|
++CONFIG_IP_VS=m
|
|
|
++# CONFIG_IP_VS_IPV6 is not set
|
|
|
++# CONFIG_IP_VS_DEBUG is not set
|
|
|
++CONFIG_IP_VS_TAB_BITS=12
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS transport protocol load balancing support
|
|
|
++#
|
|
|
++CONFIG_IP_VS_PROTO_TCP=y
|
|
|
++CONFIG_IP_VS_PROTO_UDP=y
|
|
|
++CONFIG_IP_VS_PROTO_AH_ESP=y
|
|
|
++CONFIG_IP_VS_PROTO_ESP=y
|
|
|
++CONFIG_IP_VS_PROTO_AH=y
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS scheduler
|
|
|
++#
|
|
|
++CONFIG_IP_VS_RR=m
|
|
|
++CONFIG_IP_VS_WRR=m
|
|
|
++CONFIG_IP_VS_LC=m
|
|
|
++CONFIG_IP_VS_WLC=m
|
|
|
++CONFIG_IP_VS_LBLC=m
|
|
|
++CONFIG_IP_VS_LBLCR=m
|
|
|
++CONFIG_IP_VS_DH=m
|
|
|
++CONFIG_IP_VS_SH=m
|
|
|
++CONFIG_IP_VS_SED=m
|
|
|
++CONFIG_IP_VS_NQ=m
|
|
|
++
|
|
|
++#
|
|
|
++# IPVS application helper
|
|
|
++#
|
|
|
++CONFIG_IP_VS_FTP=m
|
|
|
++
|
|
|
++#
|
|
|
++# IP: Netfilter Configuration
|
|
|
++#
|
|
|
++# CONFIG_NF_DEFRAG_IPV4 is not set
|
|
|
++CONFIG_IP_NF_QUEUE=m
|
|
|
++CONFIG_IP_NF_IPTABLES=m
|
|
|
++CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
|
|
++CONFIG_IP_NF_MATCH_AH=m
|
|
|
++CONFIG_IP_NF_MATCH_ECN=m
|
|
|
++CONFIG_IP_NF_MATCH_TTL=m
|
|
|
++CONFIG_IP_NF_FILTER=m
|
|
|
++CONFIG_IP_NF_TARGET_REJECT=m
|
|
|
++CONFIG_IP_NF_TARGET_LOG=m
|
|
|
++CONFIG_IP_NF_TARGET_ULOG=m
|
|
|
++CONFIG_IP_NF_MANGLE=m
|
|
|
++CONFIG_IP_NF_TARGET_ECN=m
|
|
|
++CONFIG_IP_NF_TARGET_TTL=m
|
|
|
++CONFIG_IP_NF_RAW=m
|
|
|
++# CONFIG_IP_NF_SECURITY is not set
|
|
|
++CONFIG_IP_NF_ARPTABLES=m
|
|
|
++CONFIG_IP_NF_ARPFILTER=m
|
|
|
++CONFIG_IP_NF_ARP_MANGLE=m
|
|
|
++
|
|
|
++#
|
|
|
++# IPv6: Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_IP6_NF_QUEUE=m
|
|
|
++CONFIG_IP6_NF_IPTABLES=m
|
|
|
++CONFIG_IP6_NF_MATCH_AH=m
|
|
|
++CONFIG_IP6_NF_MATCH_EUI64=m
|
|
|
++CONFIG_IP6_NF_MATCH_FRAG=m
|
|
|
++CONFIG_IP6_NF_MATCH_OPTS=m
|
|
|
++CONFIG_IP6_NF_MATCH_HL=m
|
|
|
++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
|
|
++# CONFIG_IP6_NF_MATCH_MH is not set
|
|
|
++CONFIG_IP6_NF_MATCH_RT=m
|
|
|
++CONFIG_IP6_NF_TARGET_HL=m
|
|
|
++CONFIG_IP6_NF_TARGET_LOG=m
|
|
|
++CONFIG_IP6_NF_FILTER=m
|
|
|
++CONFIG_IP6_NF_TARGET_REJECT=m
|
|
|
++CONFIG_IP6_NF_MANGLE=m
|
|
|
++CONFIG_IP6_NF_RAW=m
|
|
|
++# CONFIG_IP6_NF_SECURITY is not set
|
|
|
++
|
|
|
++#
|
|
|
++# DECnet: Netfilter Configuration
|
|
|
++#
|
|
|
++CONFIG_DECNET_NF_GRABULATOR=m
|
|
|
++CONFIG_BRIDGE_NF_EBTABLES=m
|
|
|
++CONFIG_BRIDGE_EBT_BROUTE=m
|
|
|
++CONFIG_BRIDGE_EBT_T_FILTER=m
|
|
|
++CONFIG_BRIDGE_EBT_T_NAT=m
|
|
|
++CONFIG_BRIDGE_EBT_802_3=m
|
|
|
++CONFIG_BRIDGE_EBT_AMONG=m
|
|
|
++CONFIG_BRIDGE_EBT_ARP=m
|
|
|
++CONFIG_BRIDGE_EBT_IP=m
|
|
|
++# CONFIG_BRIDGE_EBT_IP6 is not set
|
|
|
++CONFIG_BRIDGE_EBT_LIMIT=m
|
|
|
++CONFIG_BRIDGE_EBT_MARK=m
|
|
|
++CONFIG_BRIDGE_EBT_PKTTYPE=m
|
|
|
++CONFIG_BRIDGE_EBT_STP=m
|
|
|
++CONFIG_BRIDGE_EBT_VLAN=m
|
|
|
++CONFIG_BRIDGE_EBT_ARPREPLY=m
|
|
|
++CONFIG_BRIDGE_EBT_DNAT=m
|
|
|
++CONFIG_BRIDGE_EBT_MARK_T=m
|
|
|
++CONFIG_BRIDGE_EBT_REDIRECT=m
|
|
|
++CONFIG_BRIDGE_EBT_SNAT=m
|
|
|
++CONFIG_BRIDGE_EBT_LOG=m
|
|
|
++CONFIG_BRIDGE_EBT_ULOG=m
|
|
|
++# CONFIG_BRIDGE_EBT_NFLOG is not set
|
|
|
++CONFIG_IP_DCCP=m
|
|
|
++CONFIG_INET_DCCP_DIAG=m
|
|
|
++
|
|
|
++#
|
|
|
++# DCCP CCIDs Configuration (EXPERIMENTAL)
|
|
|
++#
|
|
|
++# CONFIG_IP_DCCP_CCID2_DEBUG is not set
|
|
|
++CONFIG_IP_DCCP_CCID3=y
|
|
|
++# CONFIG_IP_DCCP_CCID3_DEBUG is not set
|
|
|
++CONFIG_IP_DCCP_CCID3_RTO=100
|
|
|
++CONFIG_IP_DCCP_TFRC_LIB=y
|
|
|
++CONFIG_IP_SCTP=m
|
|
|
++# CONFIG_SCTP_DBG_MSG is not set
|
|
|
++# CONFIG_SCTP_DBG_OBJCNT is not set
|
|
|
++# CONFIG_SCTP_HMAC_NONE is not set
|
|
|
++# CONFIG_SCTP_HMAC_SHA1 is not set
|
|
|
++CONFIG_SCTP_HMAC_MD5=y
|
|
|
++CONFIG_TIPC=m
|
|
|
++CONFIG_TIPC_ADVANCED=y
|
|
|
++CONFIG_TIPC_ZONES=3
|
|
|
++CONFIG_TIPC_CLUSTERS=1
|
|
|
++CONFIG_TIPC_NODES=255
|
|
|
++CONFIG_TIPC_SLAVE_NODES=0
|
|
|
++CONFIG_TIPC_PORTS=8191
|
|
|
++CONFIG_TIPC_LOG=0
|
|
|
++# CONFIG_TIPC_DEBUG is not set
|
|
|
++CONFIG_ATM=y
|
|
|
++CONFIG_ATM_CLIP=y
|
|
|
++# CONFIG_ATM_CLIP_NO_ICMP is not set
|
|
|
++CONFIG_ATM_LANE=m
|
|
|
++CONFIG_ATM_MPOA=m
|
|
|
++CONFIG_ATM_BR2684=m
|
|
|
++# CONFIG_ATM_BR2684_IPFILTER is not set
|
|
|
++CONFIG_STP=m
|
|
|
++CONFIG_BRIDGE=m
|
|
|
++# CONFIG_NET_DSA is not set
|
|
|
++CONFIG_VLAN_8021Q=m
|
|
|
++# CONFIG_VLAN_8021Q_GVRP is not set
|
|
|
++CONFIG_DECNET=m
|
|
|
++# CONFIG_DECNET_ROUTER is not set
|
|
|
++CONFIG_LLC=m
|
|
|
++CONFIG_LLC2=m
|
|
|
++CONFIG_IPX=m
|
|
|
++# CONFIG_IPX_INTERN is not set
|
|
|
++CONFIG_ATALK=m
|
|
|
++CONFIG_DEV_APPLETALK=m
|
|
|
++# CONFIG_COPS is not set
|
|
|
++CONFIG_IPDDP=m
|
|
|
++CONFIG_IPDDP_ENCAP=y
|
|
|
++CONFIG_IPDDP_DECAP=y
|
|
|
++CONFIG_X25=m
|
|
|
++CONFIG_LAPB=m
|
|
|
++CONFIG_ECONET=m
|
|
|
++CONFIG_ECONET_AUNUDP=y
|
|
|
++CONFIG_ECONET_NATIVE=y
|
|
|
++CONFIG_WAN_ROUTER=m
|
|
|
++# CONFIG_PHONET is not set
|
|
|
++CONFIG_NET_SCHED=y
|
|
|
++
|
|
|
++#
|
|
|
++# Queueing/Scheduling
|
|
|
++#
|
|
|
++CONFIG_NET_SCH_CBQ=m
|
|
|
++CONFIG_NET_SCH_HTB=m
|
|
|
++CONFIG_NET_SCH_HFSC=m
|
|
|
++CONFIG_NET_SCH_ATM=m
|
|
|
++CONFIG_NET_SCH_PRIO=m
|
|
|
++# CONFIG_NET_SCH_MULTIQ is not set
|
|
|
++CONFIG_NET_SCH_RED=m
|
|
|
++CONFIG_NET_SCH_SFQ=m
|
|
|
++CONFIG_NET_SCH_TEQL=m
|
|
|
++CONFIG_NET_SCH_TBF=m
|
|
|
++CONFIG_NET_SCH_GRED=m
|
|
|
++CONFIG_NET_SCH_DSMARK=m
|
|
|
++CONFIG_NET_SCH_NETEM=m
|
|
|
++# CONFIG_NET_SCH_DRR is not set
|
|
|
++CONFIG_NET_SCH_INGRESS=m
|
|
|
++
|
|
|
++#
|
|
|
++# Classification
|
|
|
++#
|
|
|
++CONFIG_NET_CLS=y
|
|
|
++CONFIG_NET_CLS_BASIC=m
|
|
|
++CONFIG_NET_CLS_TCINDEX=m
|
|
|
++CONFIG_NET_CLS_ROUTE4=m
|
|
|
++CONFIG_NET_CLS_ROUTE=y
|
|
|
++CONFIG_NET_CLS_FW=m
|
|
|
++CONFIG_NET_CLS_U32=m
|
|
|
++CONFIG_CLS_U32_PERF=y
|
|
|
++CONFIG_CLS_U32_MARK=y
|
|
|
++CONFIG_NET_CLS_RSVP=m
|
|
|
++CONFIG_NET_CLS_RSVP6=m
|
|
|
++# CONFIG_NET_CLS_FLOW is not set
|
|
|
++CONFIG_NET_EMATCH=y
|
|
|
++CONFIG_NET_EMATCH_STACK=32
|
|
|
++CONFIG_NET_EMATCH_CMP=m
|
|
|
++CONFIG_NET_EMATCH_NBYTE=m
|
|
|
++CONFIG_NET_EMATCH_U32=m
|
|
|
++CONFIG_NET_EMATCH_META=m
|
|
|
++CONFIG_NET_EMATCH_TEXT=m
|
|
|
++CONFIG_NET_CLS_ACT=y
|
|
|
++CONFIG_NET_ACT_POLICE=m
|
|
|
++CONFIG_NET_ACT_GACT=m
|
|
|
++CONFIG_GACT_PROB=y
|
|
|
++CONFIG_NET_ACT_MIRRED=m
|
|
|
++CONFIG_NET_ACT_IPT=m
|
|
|
++# CONFIG_NET_ACT_NAT is not set
|
|
|
++CONFIG_NET_ACT_PEDIT=m
|
|
|
++CONFIG_NET_ACT_SIMP=m
|
|
|
++# CONFIG_NET_ACT_SKBEDIT is not set
|
|
|
++CONFIG_NET_CLS_IND=y
|
|
|
++CONFIG_NET_SCH_FIFO=y
|
|
|
++# CONFIG_DCB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Network testing
|
|
|
++#
|
|
|
++CONFIG_NET_PKTGEN=m
|
|
|
++# CONFIG_NET_DROP_MONITOR is not set
|
|
|
++CONFIG_HAMRADIO=y
|
|
|
++
|
|
|
++#
|
|
|
++# Packet Radio protocols
|
|
|
++#
|
|
|
++CONFIG_AX25=m
|
|
|
++# CONFIG_AX25_DAMA_SLAVE is not set
|
|
|
++CONFIG_NETROM=m
|
|
|
++CONFIG_ROSE=m
|
|
|
++
|
|
|
++#
|
|
|
++# AX.25 network device drivers
|
|
|
++#
|
|
|
++CONFIG_MKISS=m
|
|
|
++CONFIG_6PACK=m
|
|
|
++CONFIG_BPQETHER=m
|
|
|
++CONFIG_BAYCOM_SER_FDX=m
|
|
|
++CONFIG_BAYCOM_SER_HDX=m
|
|
|
++CONFIG_YAM=m
|
|
|
++# CONFIG_CAN is not set
|
|
|
++CONFIG_IRDA=m
|
|
|
++
|
|
|
++#
|
|
|
++# IrDA protocols
|
|
|
++#
|
|
|
++CONFIG_IRLAN=m
|
|
|
++CONFIG_IRNET=m
|
|
|
++CONFIG_IRCOMM=m
|
|
|
++# CONFIG_IRDA_ULTRA is not set
|
|
|
++
|
|
|
++#
|
|
|
++# IrDA options
|
|
|
++#
|
|
|
++CONFIG_IRDA_CACHE_LAST_LSAP=y
|
|
|
++CONFIG_IRDA_FAST_RR=y
|
|
|
++CONFIG_IRDA_DEBUG=y
|
|
|
++
|
|
|
++#
|
|
|
++# Infrared-port device drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# SIR device drivers
|
|
|
++#
|
|
|
++CONFIG_IRTTY_SIR=m
|
|
|
++
|
|
|
++#
|
|
|
++# Dongle support
|
|
|
++#
|
|
|
++CONFIG_DONGLE=y
|
|
|
++CONFIG_ESI_DONGLE=m
|
|
|
++CONFIG_ACTISYS_DONGLE=m
|
|
|
++CONFIG_TEKRAM_DONGLE=m
|
|
|
++CONFIG_TOIM3232_DONGLE=m
|
|
|
++CONFIG_LITELINK_DONGLE=m
|
|
|
++CONFIG_MA600_DONGLE=m
|
|
|
++CONFIG_GIRBIL_DONGLE=m
|
|
|
++CONFIG_MCP2120_DONGLE=m
|
|
|
++CONFIG_OLD_BELKIN_DONGLE=m
|
|
|
++CONFIG_ACT200L_DONGLE=m
|
|
|
++# CONFIG_KINGSUN_DONGLE is not set
|
|
|
++# CONFIG_KSDAZZLE_DONGLE is not set
|
|
|
++# CONFIG_KS959_DONGLE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# FIR device drivers
|
|
|
++#
|
|
|
++CONFIG_USB_IRDA=m
|
|
|
++CONFIG_SIGMATEL_FIR=m
|
|
|
++CONFIG_VLSI_FIR=m
|
|
|
++CONFIG_MCS_FIR=m
|
|
|
++CONFIG_BT=m
|
|
|
++CONFIG_BT_L2CAP=m
|
|
|
++CONFIG_BT_SCO=m
|
|
|
++CONFIG_BT_RFCOMM=m
|
|
|
++CONFIG_BT_RFCOMM_TTY=y
|
|
|
++CONFIG_BT_BNEP=m
|
|
|
++CONFIG_BT_BNEP_MC_FILTER=y
|
|
|
++CONFIG_BT_BNEP_PROTO_FILTER=y
|
|
|
++CONFIG_BT_HIDP=m
|
|
|
++
|
|
|
++#
|
|
|
++# Bluetooth device drivers
|
|
|
++#
|
|
|
++# CONFIG_BT_HCIBTUSB is not set
|
|
|
++# CONFIG_BT_HCIBTSDIO is not set
|
|
|
++CONFIG_BT_HCIUART=m
|
|
|
++CONFIG_BT_HCIUART_H4=y
|
|
|
++CONFIG_BT_HCIUART_BCSP=y
|
|
|
++# CONFIG_BT_HCIUART_LL is not set
|
|
|
++CONFIG_BT_HCIBCM203X=m
|
|
|
++CONFIG_BT_HCIBPA10X=m
|
|
|
++CONFIG_BT_HCIBFUSB=m
|
|
|
++CONFIG_BT_HCIVHCI=m
|
|
|
++CONFIG_AF_RXRPC=m
|
|
|
++# CONFIG_AF_RXRPC_DEBUG is not set
|
|
|
++# CONFIG_RXKAD is not set
|
|
|
++CONFIG_FIB_RULES=y
|
|
|
++CONFIG_WIRELESS=y
|
|
|
++CONFIG_CFG80211=y
|
|
|
++# CONFIG_CFG80211_REG_DEBUG is not set
|
|
|
++CONFIG_WIRELESS_OLD_REGULATORY=y
|
|
|
++CONFIG_WIRELESS_EXT=y
|
|
|
++CONFIG_WIRELESS_EXT_SYSFS=y
|
|
|
++# CONFIG_LIB80211 is not set
|
|
|
++CONFIG_MAC80211=y
|
|
|
++
|
|
|
++#
|
|
|
++# Rate control algorithm selection
|
|
|
++#
|
|
|
++CONFIG_MAC80211_RC_PID=y
|
|
|
++CONFIG_MAC80211_RC_MINSTREL=y
|
|
|
++# CONFIG_MAC80211_RC_DEFAULT_PID is not set
|
|
|
++CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
|
|
|
++CONFIG_MAC80211_RC_DEFAULT="minstrel"
|
|
|
++# CONFIG_MAC80211_MESH is not set
|
|
|
++# CONFIG_MAC80211_LEDS is not set
|
|
|
++# CONFIG_MAC80211_DEBUGFS is not set
|
|
|
++# CONFIG_MAC80211_DEBUG_MENU is not set
|
|
|
++# CONFIG_WIMAX is not set
|
|
|
++# CONFIG_RFKILL is not set
|
|
|
++# CONFIG_NET_9P is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Device Drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Generic Driver Options
|
|
|
++#
|
|
|
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
|
++CONFIG_STANDALONE=y
|
|
|
++CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|
|
++CONFIG_FW_LOADER=m
|
|
|
++CONFIG_FIRMWARE_IN_KERNEL=y
|
|
|
++CONFIG_EXTRA_FIRMWARE=""
|
|
|
++# CONFIG_SYS_HYPERVISOR is not set
|
|
|
++CONFIG_CONNECTOR=m
|
|
|
++CONFIG_MTD=m
|
|
|
++# CONFIG_MTD_DEBUG is not set
|
|
|
++CONFIG_MTD_CONCAT=m
|
|
|
++CONFIG_MTD_PARTITIONS=y
|
|
|
++# CONFIG_MTD_TESTS is not set
|
|
|
++# CONFIG_MTD_REDBOOT_PARTS is not set
|
|
|
++# CONFIG_MTD_AR7_PARTS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# User Modules And Translation Layers
|
|
|
++#
|
|
|
++CONFIG_MTD_CHAR=m
|
|
|
++CONFIG_MTD_BLKDEVS=m
|
|
|
++CONFIG_MTD_BLOCK=m
|
|
|
++# CONFIG_MTD_BLOCK_RO is not set
|
|
|
++# CONFIG_FTL is not set
|
|
|
++# CONFIG_NFTL is not set
|
|
|
++# CONFIG_INFTL is not set
|
|
|
++# CONFIG_RFD_FTL is not set
|
|
|
++# CONFIG_SSFDC is not set
|
|
|
++# CONFIG_MTD_OOPS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RAM/ROM/Flash chip drivers
|
|
|
++#
|
|
|
++CONFIG_MTD_CFI=m
|
|
|
++CONFIG_MTD_JEDECPROBE=m
|
|
|
++CONFIG_MTD_GEN_PROBE=m
|
|
|
++# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
|
|
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
|
|
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
|
|
++CONFIG_MTD_CFI_I1=y
|
|
|
++CONFIG_MTD_CFI_I2=y
|
|
|
++# CONFIG_MTD_CFI_I4 is not set
|
|
|
++# CONFIG_MTD_CFI_I8 is not set
|
|
|
++CONFIG_MTD_CFI_INTELEXT=m
|
|
|
++CONFIG_MTD_CFI_AMDSTD=m
|
|
|
++CONFIG_MTD_CFI_STAA=m
|
|
|
++CONFIG_MTD_CFI_UTIL=m
|
|
|
++CONFIG_MTD_RAM=m
|
|
|
++CONFIG_MTD_ROM=m
|
|
|
++CONFIG_MTD_ABSENT=m
|
|
|
++
|
|
|
++#
|
|
|
++# Mapping drivers for chip access
|
|
|
++#
|
|
|
++CONFIG_MTD_COMPLEX_MAPPINGS=y
|
|
|
++CONFIG_MTD_PHYSMAP=m
|
|
|
++CONFIG_MTD_PHYSMAP_COMPAT=y
|
|
|
++CONFIG_MTD_PHYSMAP_START=0x8000000
|
|
|
++CONFIG_MTD_PHYSMAP_LEN=0
|
|
|
++CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
|
|
++CONFIG_MTD_PCI=m
|
|
|
++# CONFIG_MTD_INTEL_VR_NOR is not set
|
|
|
++CONFIG_MTD_PLATRAM=m
|
|
|
++
|
|
|
++#
|
|
|
++# Self-contained MTD device drivers
|
|
|
++#
|
|
|
++CONFIG_MTD_PMC551=m
|
|
|
++# CONFIG_MTD_PMC551_BUGFIX is not set
|
|
|
++# CONFIG_MTD_PMC551_DEBUG is not set
|
|
|
++CONFIG_MTD_DATAFLASH=m
|
|
|
++# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
|
|
|
++# CONFIG_MTD_DATAFLASH_OTP is not set
|
|
|
++CONFIG_MTD_M25P80=m
|
|
|
++CONFIG_M25PXX_USE_FAST_READ=y
|
|
|
++CONFIG_MTD_SLRAM=m
|
|
|
++CONFIG_MTD_PHRAM=m
|
|
|
++CONFIG_MTD_MTDRAM=m
|
|
|
++CONFIG_MTDRAM_TOTAL_SIZE=4096
|
|
|
++CONFIG_MTDRAM_ERASE_SIZE=128
|
|
|
++CONFIG_MTD_BLOCK2MTD=m
|
|
|
++
|
|
|
++#
|
|
|
++# Disk-On-Chip Device Drivers
|
|
|
++#
|
|
|
++CONFIG_MTD_DOC2000=m
|
|
|
++CONFIG_MTD_DOC2001=m
|
|
|
++CONFIG_MTD_DOC2001PLUS=m
|
|
|
++CONFIG_MTD_DOCPROBE=m
|
|
|
++CONFIG_MTD_DOCECC=m
|
|
|
++# CONFIG_MTD_DOCPROBE_ADVANCED is not set
|
|
|
++CONFIG_MTD_DOCPROBE_ADDRESS=0
|
|
|
++# CONFIG_MTD_NAND is not set
|
|
|
++CONFIG_MTD_NAND_IDS=m
|
|
|
++# CONFIG_MTD_ONENAND is not set
|
|
|
++
|
|
|
++#
|
|
|
++# LPDDR flash memory drivers
|
|
|
++#
|
|
|
++# CONFIG_MTD_LPDDR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# UBI - Unsorted block images
|
|
|
++#
|
|
|
++# CONFIG_MTD_UBI is not set
|
|
|
++# CONFIG_PARPORT is not set
|
|
|
++CONFIG_PNP=y
|
|
|
++CONFIG_PNP_DEBUG_MESSAGES=y
|
|
|
++
|
|
|
++#
|
|
|
++# Protocols
|
|
|
++#
|
|
|
++CONFIG_ISAPNP=y
|
|
|
++# CONFIG_PNPACPI is not set
|
|
|
++CONFIG_BLK_DEV=y
|
|
|
++# CONFIG_BLK_CPQ_DA is not set
|
|
|
++# CONFIG_BLK_CPQ_CISS_DA is not set
|
|
|
++# CONFIG_BLK_DEV_DAC960 is not set
|
|
|
++# CONFIG_BLK_DEV_UMEM is not set
|
|
|
++# CONFIG_BLK_DEV_COW_COMMON is not set
|
|
|
++CONFIG_BLK_DEV_LOOP=y
|
|
|
++CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|
|
++CONFIG_BLK_DEV_NBD=m
|
|
|
++# CONFIG_BLK_DEV_SX8 is not set
|
|
|
++# CONFIG_BLK_DEV_UB is not set
|
|
|
++CONFIG_BLK_DEV_RAM=y
|
|
|
++CONFIG_BLK_DEV_RAM_COUNT=16
|
|
|
++CONFIG_BLK_DEV_RAM_SIZE=8192
|
|
|
++# CONFIG_BLK_DEV_XIP is not set
|
|
|
++CONFIG_CDROM_PKTCDVD=m
|
|
|
++CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
|
|
++# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
|
|
++CONFIG_ATA_OVER_ETH=m
|
|
|
++# CONFIG_BLK_DEV_HD is not set
|
|
|
++CONFIG_MISC_DEVICES=y
|
|
|
++# CONFIG_PHANTOM is not set
|
|
|
++# CONFIG_SGI_IOC4 is not set
|
|
|
++# CONFIG_TIFM_CORE is not set
|
|
|
++# CONFIG_ICS932S401 is not set
|
|
|
++# CONFIG_ENCLOSURE_SERVICES is not set
|
|
|
++# CONFIG_HP_ILO is not set
|
|
|
++# CONFIG_ISL29003 is not set
|
|
|
++# CONFIG_C2PORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# EEPROM support
|
|
|
++#
|
|
|
++# CONFIG_EEPROM_AT24 is not set
|
|
|
++# CONFIG_EEPROM_AT25 is not set
|
|
|
++# CONFIG_EEPROM_LEGACY is not set
|
|
|
++CONFIG_EEPROM_93CX6=y
|
|
|
++CONFIG_HAVE_IDE=y
|
|
|
++CONFIG_IDE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Please see Documentation/ide/ide.txt for help/info on IDE drives
|
|
|
++#
|
|
|
++CONFIG_IDE_XFER_MODE=y
|
|
|
++CONFIG_IDE_TIMINGS=y
|
|
|
++CONFIG_IDE_ATAPI=y
|
|
|
++# CONFIG_BLK_DEV_IDE_SATA is not set
|
|
|
++CONFIG_IDE_GD=y
|
|
|
++CONFIG_IDE_GD_ATA=y
|
|
|
++# CONFIG_IDE_GD_ATAPI is not set
|
|
|
++CONFIG_BLK_DEV_IDECD=m
|
|
|
++CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
|
|
|
++# CONFIG_BLK_DEV_IDETAPE is not set
|
|
|
++CONFIG_IDE_TASK_IOCTL=y
|
|
|
++CONFIG_IDE_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# IDE chipset support/bugfixes
|
|
|
++#
|
|
|
++# CONFIG_IDE_GENERIC is not set
|
|
|
++# CONFIG_BLK_DEV_PLATFORM is not set
|
|
|
++# CONFIG_BLK_DEV_IDEPNP is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_SFF=y
|
|
|
++
|
|
|
++#
|
|
|
++# PCI IDE chipsets support
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_IDEPCI=y
|
|
|
++# CONFIG_IDEPCI_PCIBUS_ORDER is not set
|
|
|
++# CONFIG_BLK_DEV_OFFBOARD is not set
|
|
|
++CONFIG_BLK_DEV_GENERIC=y
|
|
|
++# CONFIG_BLK_DEV_OPTI621 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA_PCI=y
|
|
|
++# CONFIG_BLK_DEV_AEC62XX is not set
|
|
|
++# CONFIG_BLK_DEV_ALI15X3 is not set
|
|
|
++CONFIG_BLK_DEV_AMD74XX=y
|
|
|
++# CONFIG_BLK_DEV_CMD64X is not set
|
|
|
++# CONFIG_BLK_DEV_TRIFLEX is not set
|
|
|
++# CONFIG_BLK_DEV_CS5520 is not set
|
|
|
++# CONFIG_BLK_DEV_CS5530 is not set
|
|
|
++# CONFIG_BLK_DEV_HPT366 is not set
|
|
|
++# CONFIG_BLK_DEV_JMICRON is not set
|
|
|
++# CONFIG_BLK_DEV_SC1200 is not set
|
|
|
++# CONFIG_BLK_DEV_PIIX is not set
|
|
|
++# CONFIG_BLK_DEV_IT8172 is not set
|
|
|
++# CONFIG_BLK_DEV_IT8213 is not set
|
|
|
++# CONFIG_BLK_DEV_IT821X is not set
|
|
|
++# CONFIG_BLK_DEV_NS87415 is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
|
|
++# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
|
|
++# CONFIG_BLK_DEV_SVWKS is not set
|
|
|
++# CONFIG_BLK_DEV_SIIMAGE is not set
|
|
|
++# CONFIG_BLK_DEV_SLC90E66 is not set
|
|
|
++# CONFIG_BLK_DEV_TRM290 is not set
|
|
|
++# CONFIG_BLK_DEV_VIA82CXXX is not set
|
|
|
++# CONFIG_BLK_DEV_TC86C001 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Other IDE chipsets support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Note: most of these also require special kernel boot parameters
|
|
|
++#
|
|
|
++# CONFIG_BLK_DEV_4DRIVES is not set
|
|
|
++# CONFIG_BLK_DEV_ALI14XX is not set
|
|
|
++# CONFIG_BLK_DEV_DTC2278 is not set
|
|
|
++# CONFIG_BLK_DEV_HT6560B is not set
|
|
|
++# CONFIG_BLK_DEV_QD65XX is not set
|
|
|
++# CONFIG_BLK_DEV_UMC8672 is not set
|
|
|
++CONFIG_BLK_DEV_IDEDMA=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI device support
|
|
|
++#
|
|
|
++CONFIG_RAID_ATTRS=m
|
|
|
++CONFIG_SCSI=y
|
|
|
++CONFIG_SCSI_DMA=y
|
|
|
++# CONFIG_SCSI_TGT is not set
|
|
|
++CONFIG_SCSI_NETLINK=y
|
|
|
++CONFIG_SCSI_PROC_FS=y
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI support type (disk, tape, CD-ROM)
|
|
|
++#
|
|
|
++CONFIG_BLK_DEV_SD=y
|
|
|
++# CONFIG_CHR_DEV_ST is not set
|
|
|
++# CONFIG_CHR_DEV_OSST is not set
|
|
|
++CONFIG_BLK_DEV_SR=m
|
|
|
++CONFIG_BLK_DEV_SR_VENDOR=y
|
|
|
++CONFIG_CHR_DEV_SG=m
|
|
|
++# CONFIG_CHR_DEV_SCH is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
|
|
++#
|
|
|
++CONFIG_SCSI_MULTI_LUN=y
|
|
|
++CONFIG_SCSI_CONSTANTS=y
|
|
|
++CONFIG_SCSI_LOGGING=y
|
|
|
++# CONFIG_SCSI_SCAN_ASYNC is not set
|
|
|
++CONFIG_SCSI_WAIT_SCAN=m
|
|
|
++
|
|
|
++#
|
|
|
++# SCSI Transports
|
|
|
++#
|
|
|
++CONFIG_SCSI_SPI_ATTRS=m
|
|
|
++CONFIG_SCSI_FC_ATTRS=m
|
|
|
++CONFIG_SCSI_ISCSI_ATTRS=m
|
|
|
++# CONFIG_SCSI_SAS_LIBSAS is not set
|
|
|
++CONFIG_SCSI_SRP_ATTRS=m
|
|
|
++# CONFIG_SCSI_LOWLEVEL is not set
|
|
|
++# CONFIG_SCSI_DH is not set
|
|
|
++# CONFIG_SCSI_OSD_INITIATOR is not set
|
|
|
++# CONFIG_ATA is not set
|
|
|
++CONFIG_MD=y
|
|
|
++CONFIG_BLK_DEV_MD=m
|
|
|
++CONFIG_MD_LINEAR=m
|
|
|
++CONFIG_MD_RAID0=m
|
|
|
++CONFIG_MD_RAID1=m
|
|
|
++CONFIG_MD_RAID10=m
|
|
|
++CONFIG_MD_RAID456=m
|
|
|
++CONFIG_MD_RAID6_PQ=m
|
|
|
++CONFIG_MD_MULTIPATH=m
|
|
|
++CONFIG_MD_FAULTY=m
|
|
|
++CONFIG_BLK_DEV_DM=m
|
|
|
++# CONFIG_DM_DEBUG is not set
|
|
|
++CONFIG_DM_CRYPT=m
|
|
|
++CONFIG_DM_SNAPSHOT=m
|
|
|
++CONFIG_DM_MIRROR=m
|
|
|
++CONFIG_DM_ZERO=m
|
|
|
++CONFIG_DM_MULTIPATH=m
|
|
|
++# CONFIG_DM_DELAY is not set
|
|
|
++# CONFIG_DM_UEVENT is not set
|
|
|
++# CONFIG_FUSION is not set
|
|
|
++
|
|
|
++#
|
|
|
++# IEEE 1394 (FireWire) support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Enable only one of the two stacks, unless you know what you are doing
|
|
|
++#
|
|
|
++# CONFIG_FIREWIRE is not set
|
|
|
++# CONFIG_IEEE1394 is not set
|
|
|
++# CONFIG_I2O is not set
|
|
|
++CONFIG_NETDEVICES=y
|
|
|
++CONFIG_COMPAT_NET_DEV_OPS=y
|
|
|
++CONFIG_IFB=m
|
|
|
++CONFIG_DUMMY=m
|
|
|
++# CONFIG_BONDING is not set
|
|
|
++CONFIG_MACVLAN=m
|
|
|
++# CONFIG_EQUALIZER is not set
|
|
|
++CONFIG_TUN=m
|
|
|
++CONFIG_VETH=m
|
|
|
++# CONFIG_NET_SB1000 is not set
|
|
|
++# CONFIG_ARCNET is not set
|
|
|
++CONFIG_PHYLIB=m
|
|
|
++
|
|
|
++#
|
|
|
++# MII PHY device drivers
|
|
|
++#
|
|
|
++CONFIG_MARVELL_PHY=m
|
|
|
++CONFIG_DAVICOM_PHY=m
|
|
|
++CONFIG_QSEMI_PHY=m
|
|
|
++CONFIG_LXT_PHY=m
|
|
|
++CONFIG_CICADA_PHY=m
|
|
|
++CONFIG_VITESSE_PHY=m
|
|
|
++CONFIG_SMSC_PHY=m
|
|
|
++# CONFIG_BROADCOM_PHY is not set
|
|
|
++# CONFIG_ICPLUS_PHY is not set
|
|
|
++CONFIG_REALTEK_PHY=m
|
|
|
++# CONFIG_NATIONAL_PHY is not set
|
|
|
++# CONFIG_STE10XP is not set
|
|
|
++# CONFIG_LSI_ET1011C_PHY is not set
|
|
|
++# CONFIG_MDIO_BITBANG is not set
|
|
|
++CONFIG_NET_ETHERNET=y
|
|
|
++CONFIG_MII=y
|
|
|
++# CONFIG_AX88796 is not set
|
|
|
++# CONFIG_HAPPYMEAL is not set
|
|
|
++# CONFIG_SUNGEM is not set
|
|
|
++# CONFIG_CASSINI is not set
|
|
|
++# CONFIG_NET_VENDOR_3COM is not set
|
|
|
++# CONFIG_NET_VENDOR_SMC is not set
|
|
|
++# CONFIG_SMC91X is not set
|
|
|
++# CONFIG_DM9000 is not set
|
|
|
++# CONFIG_ENC28J60 is not set
|
|
|
++# CONFIG_ETHOC is not set
|
|
|
++# CONFIG_NET_VENDOR_RACAL is not set
|
|
|
++# CONFIG_DNET is not set
|
|
|
++# CONFIG_NET_TULIP is not set
|
|
|
++# CONFIG_AT1700 is not set
|
|
|
++# CONFIG_DEPCA is not set
|
|
|
++# CONFIG_HP100 is not set
|
|
|
++# CONFIG_NET_ISA is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_TAH is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
|
|
++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
|
|
++CONFIG_NET_PCI=y
|
|
|
++# CONFIG_PCNET32 is not set
|
|
|
++# CONFIG_AMD8111_ETH is not set
|
|
|
++# CONFIG_ADAPTEC_STARFIRE is not set
|
|
|
++# CONFIG_AC3200 is not set
|
|
|
++# CONFIG_APRICOT is not set
|
|
|
++# CONFIG_B44 is not set
|
|
|
++# CONFIG_FORCEDETH is not set
|
|
|
++# CONFIG_CS89x0 is not set
|
|
|
++# CONFIG_TC35815 is not set
|
|
|
++# CONFIG_E100 is not set
|
|
|
++# CONFIG_FEALNX is not set
|
|
|
++# CONFIG_NATSEMI is not set
|
|
|
++# CONFIG_NE2K_PCI is not set
|
|
|
++CONFIG_8139CP=m
|
|
|
++CONFIG_8139TOO=y
|
|
|
++# CONFIG_8139TOO_PIO is not set
|
|
|
++CONFIG_8139TOO_TUNE_TWISTER=y
|
|
|
++# CONFIG_8139TOO_8129 is not set
|
|
|
++# CONFIG_8139_OLD_RX_RESET is not set
|
|
|
++# CONFIG_R6040 is not set
|
|
|
++# CONFIG_SIS900 is not set
|
|
|
++# CONFIG_EPIC100 is not set
|
|
|
++# CONFIG_SMSC9420 is not set
|
|
|
++# CONFIG_SUNDANCE is not set
|
|
|
++# CONFIG_TLAN is not set
|
|
|
++# CONFIG_VIA_RHINE is not set
|
|
|
++# CONFIG_SC92031 is not set
|
|
|
++# CONFIG_ATL2 is not set
|
|
|
++# CONFIG_NETDEV_1000 is not set
|
|
|
++# CONFIG_NETDEV_10000 is not set
|
|
|
++# CONFIG_TR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Wireless LAN
|
|
|
++#
|
|
|
++# CONFIG_WLAN_PRE80211 is not set
|
|
|
++CONFIG_WLAN_80211=y
|
|
|
++# CONFIG_LIBERTAS is not set
|
|
|
++# CONFIG_LIBERTAS_THINFIRM is not set
|
|
|
++# CONFIG_ATMEL is not set
|
|
|
++# CONFIG_AT76C50X_USB is not set
|
|
|
++# CONFIG_PRISM54 is not set
|
|
|
++# CONFIG_USB_ZD1201 is not set
|
|
|
++# CONFIG_USB_NET_RNDIS_WLAN is not set
|
|
|
++# CONFIG_RTL8180 is not set
|
|
|
++CONFIG_RTL8187=y
|
|
|
++# CONFIG_ADM8211 is not set
|
|
|
++# CONFIG_MAC80211_HWSIM is not set
|
|
|
++# CONFIG_MWL8K is not set
|
|
|
++# CONFIG_P54_COMMON is not set
|
|
|
++# CONFIG_ATH5K is not set
|
|
|
++# CONFIG_ATH9K is not set
|
|
|
++# CONFIG_AR9170_USB is not set
|
|
|
++# CONFIG_IPW2100 is not set
|
|
|
++# CONFIG_IPW2200 is not set
|
|
|
++# CONFIG_IWLWIFI is not set
|
|
|
++# CONFIG_HOSTAP is not set
|
|
|
++# CONFIG_B43 is not set
|
|
|
++# CONFIG_B43LEGACY is not set
|
|
|
++# CONFIG_ZD1211RW is not set
|
|
|
++# CONFIG_RT2X00 is not set
|
|
|
++# CONFIG_HERMES is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Enable WiMAX (Networking options) to see the WiMAX drivers
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# USB Network Adapters
|
|
|
++#
|
|
|
++CONFIG_USB_CATC=m
|
|
|
++CONFIG_USB_KAWETH=m
|
|
|
++CONFIG_USB_PEGASUS=m
|
|
|
++CONFIG_USB_RTL8150=m
|
|
|
++CONFIG_USB_USBNET=m
|
|
|
++CONFIG_USB_NET_AX8817X=m
|
|
|
++CONFIG_USB_NET_CDCETHER=m
|
|
|
++# CONFIG_USB_NET_CDC_EEM is not set
|
|
|
++# CONFIG_USB_NET_DM9601 is not set
|
|
|
++# CONFIG_USB_NET_SMSC95XX is not set
|
|
|
++CONFIG_USB_NET_GL620A=m
|
|
|
++CONFIG_USB_NET_NET1080=m
|
|
|
++CONFIG_USB_NET_PLUSB=m
|
|
|
++# CONFIG_USB_NET_MCS7830 is not set
|
|
|
++CONFIG_USB_NET_RNDIS_HOST=m
|
|
|
++CONFIG_USB_NET_CDC_SUBSET=m
|
|
|
++CONFIG_USB_ALI_M5632=y
|
|
|
++CONFIG_USB_AN2720=y
|
|
|
++CONFIG_USB_BELKIN=y
|
|
|
++CONFIG_USB_ARMLINUX=y
|
|
|
++CONFIG_USB_EPSON2888=y
|
|
|
++# CONFIG_USB_KC2190 is not set
|
|
|
++CONFIG_USB_NET_ZAURUS=m
|
|
|
++# CONFIG_WAN is not set
|
|
|
++# CONFIG_ATM_DRIVERS is not set
|
|
|
++# CONFIG_FDDI is not set
|
|
|
++# CONFIG_HIPPI is not set
|
|
|
++CONFIG_PPP=m
|
|
|
++CONFIG_PPP_MULTILINK=y
|
|
|
++CONFIG_PPP_FILTER=y
|
|
|
++CONFIG_PPP_ASYNC=m
|
|
|
++CONFIG_PPP_SYNC_TTY=m
|
|
|
++CONFIG_PPP_DEFLATE=m
|
|
|
++CONFIG_PPP_BSDCOMP=m
|
|
|
++CONFIG_PPP_MPPE=m
|
|
|
++CONFIG_PPPOE=m
|
|
|
++CONFIG_PPPOATM=m
|
|
|
++# CONFIG_PPPOL2TP is not set
|
|
|
++# CONFIG_SLIP is not set
|
|
|
++CONFIG_SLHC=m
|
|
|
++# CONFIG_NET_FC is not set
|
|
|
++CONFIG_NETCONSOLE=y
|
|
|
++# CONFIG_NETCONSOLE_DYNAMIC is not set
|
|
|
++CONFIG_NETPOLL=y
|
|
|
++# CONFIG_NETPOLL_TRAP is not set
|
|
|
++CONFIG_NET_POLL_CONTROLLER=y
|
|
|
++# CONFIG_ISDN is not set
|
|
|
++# CONFIG_PHONE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input device support
|
|
|
++#
|
|
|
++CONFIG_INPUT=y
|
|
|
++# CONFIG_INPUT_FF_MEMLESS is not set
|
|
|
++# CONFIG_INPUT_POLLDEV is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Userland interfaces
|
|
|
++#
|
|
|
++CONFIG_INPUT_MOUSEDEV=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
|
|
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|
|
++CONFIG_INPUT_JOYDEV=m
|
|
|
++CONFIG_INPUT_EVDEV=m
|
|
|
++# CONFIG_INPUT_EVBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Input Device Drivers
|
|
|
++#
|
|
|
++CONFIG_INPUT_KEYBOARD=y
|
|
|
++CONFIG_KEYBOARD_ATKBD=y
|
|
|
++CONFIG_KEYBOARD_SUNKBD=m
|
|
|
++CONFIG_KEYBOARD_LKKBD=m
|
|
|
++CONFIG_KEYBOARD_XTKBD=m
|
|
|
++CONFIG_KEYBOARD_NEWTON=m
|
|
|
++# CONFIG_KEYBOARD_STOWAWAY is not set
|
|
|
++CONFIG_INPUT_MOUSE=y
|
|
|
++CONFIG_MOUSE_PS2=y
|
|
|
++CONFIG_MOUSE_PS2_ALPS=y
|
|
|
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
|
|
++CONFIG_MOUSE_PS2_SYNAPTICS=y
|
|
|
++CONFIG_MOUSE_PS2_TRACKPOINT=y
|
|
|
++# CONFIG_MOUSE_PS2_ELANTECH is not set
|
|
|
++# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
|
|
++CONFIG_MOUSE_SERIAL=m
|
|
|
++# CONFIG_MOUSE_APPLETOUCH is not set
|
|
|
++# CONFIG_MOUSE_BCM5974 is not set
|
|
|
++CONFIG_MOUSE_INPORT=m
|
|
|
++# CONFIG_MOUSE_ATIXL is not set
|
|
|
++CONFIG_MOUSE_LOGIBM=m
|
|
|
++CONFIG_MOUSE_PC110PAD=m
|
|
|
++CONFIG_MOUSE_VSXXXAA=m
|
|
|
++# CONFIG_INPUT_JOYSTICK is not set
|
|
|
++# CONFIG_INPUT_TABLET is not set
|
|
|
++# CONFIG_INPUT_TOUCHSCREEN is not set
|
|
|
++CONFIG_INPUT_MISC=y
|
|
|
++CONFIG_INPUT_PCSPKR=m
|
|
|
++# CONFIG_INPUT_ATI_REMOTE is not set
|
|
|
++# CONFIG_INPUT_ATI_REMOTE2 is not set
|
|
|
++# CONFIG_INPUT_KEYSPAN_REMOTE is not set
|
|
|
++# CONFIG_INPUT_POWERMATE is not set
|
|
|
++# CONFIG_INPUT_YEALINK is not set
|
|
|
++# CONFIG_INPUT_CM109 is not set
|
|
|
++CONFIG_INPUT_UINPUT=m
|
|
|
++
|
|
|
++#
|
|
|
++# Hardware I/O ports
|
|
|
++#
|
|
|
++CONFIG_SERIO=y
|
|
|
++CONFIG_SERIO_I8042=y
|
|
|
++CONFIG_SERIO_SERPORT=m
|
|
|
++CONFIG_SERIO_PCIPS2=m
|
|
|
++CONFIG_SERIO_LIBPS2=y
|
|
|
++CONFIG_SERIO_RAW=m
|
|
|
++CONFIG_GAMEPORT=m
|
|
|
++CONFIG_GAMEPORT_NS558=m
|
|
|
++CONFIG_GAMEPORT_L4=m
|
|
|
++CONFIG_GAMEPORT_EMU10K1=m
|
|
|
++CONFIG_GAMEPORT_FM801=m
|
|
|
++
|
|
|
++#
|
|
|
++# Character devices
|
|
|
++#
|
|
|
++CONFIG_VT=y
|
|
|
++CONFIG_CONSOLE_TRANSLATIONS=y
|
|
|
++CONFIG_VT_CONSOLE=y
|
|
|
++CONFIG_HW_CONSOLE=y
|
|
|
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
|
|
++CONFIG_DEVKMEM=y
|
|
|
++CONFIG_SERIAL_NONSTANDARD=y
|
|
|
++# CONFIG_COMPUTONE is not set
|
|
|
++# CONFIG_ROCKETPORT is not set
|
|
|
++# CONFIG_CYCLADES is not set
|
|
|
++# CONFIG_DIGIEPCA is not set
|
|
|
++# CONFIG_MOXA_INTELLIO is not set
|
|
|
++# CONFIG_MOXA_SMARTIO is not set
|
|
|
++# CONFIG_ISI is not set
|
|
|
++# CONFIG_SYNCLINKMP is not set
|
|
|
++# CONFIG_SYNCLINK_GT is not set
|
|
|
++# CONFIG_N_HDLC is not set
|
|
|
++# CONFIG_RISCOM8 is not set
|
|
|
++# CONFIG_SPECIALIX is not set
|
|
|
++# CONFIG_SX is not set
|
|
|
++# CONFIG_RIO is not set
|
|
|
++CONFIG_STALDRV=y
|
|
|
++# CONFIG_STALLION is not set
|
|
|
++# CONFIG_ISTALLION is not set
|
|
|
++# CONFIG_NOZOMI is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Serial drivers
|
|
|
++#
|
|
|
++CONFIG_SERIAL_8250=y
|
|
|
++CONFIG_SERIAL_8250_CONSOLE=y
|
|
|
++# CONFIG_SERIAL_8250_PCI is not set
|
|
|
++# CONFIG_SERIAL_8250_PNP is not set
|
|
|
++CONFIG_SERIAL_8250_NR_UARTS=16
|
|
|
++CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
|
|
++CONFIG_SERIAL_8250_EXTENDED=y
|
|
|
++CONFIG_SERIAL_8250_MANY_PORTS=y
|
|
|
++CONFIG_SERIAL_8250_FOURPORT=y
|
|
|
++# CONFIG_SERIAL_8250_ACCENT is not set
|
|
|
++# CONFIG_SERIAL_8250_BOCA is not set
|
|
|
++# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
|
|
|
++CONFIG_SERIAL_8250_HUB6=m
|
|
|
++CONFIG_SERIAL_8250_SHARE_IRQ=y
|
|
|
++# CONFIG_SERIAL_8250_DETECT_IRQ is not set
|
|
|
++CONFIG_SERIAL_8250_RSA=y
|
|
|
++
|
|
|
++#
|
|
|
++# Non-8250 serial port support
|
|
|
++#
|
|
|
++# CONFIG_SERIAL_MAX3100 is not set
|
|
|
++CONFIG_SERIAL_CORE=y
|
|
|
++CONFIG_SERIAL_CORE_CONSOLE=y
|
|
|
++# CONFIG_SERIAL_JSM is not set
|
|
|
++CONFIG_UNIX98_PTYS=y
|
|
|
++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
|
|
++CONFIG_LEGACY_PTYS=y
|
|
|
++CONFIG_LEGACY_PTY_COUNT=16
|
|
|
++CONFIG_IPMI_HANDLER=m
|
|
|
++# CONFIG_IPMI_PANIC_EVENT is not set
|
|
|
++CONFIG_IPMI_DEVICE_INTERFACE=m
|
|
|
++CONFIG_IPMI_SI=m
|
|
|
++CONFIG_IPMI_WATCHDOG=m
|
|
|
++CONFIG_IPMI_POWEROFF=m
|
|
|
++CONFIG_HW_RANDOM=y
|
|
|
++# CONFIG_HW_RANDOM_TIMERIOMEM is not set
|
|
|
++# CONFIG_DTLK is not set
|
|
|
++# CONFIG_R3964 is not set
|
|
|
++# CONFIG_APPLICOM is not set
|
|
|
++CONFIG_RAW_DRIVER=m
|
|
|
++CONFIG_MAX_RAW_DEVS=256
|
|
|
++# CONFIG_TCG_TPM is not set
|
|
|
++CONFIG_DEVPORT=y
|
|
|
++CONFIG_I2C=m
|
|
|
++CONFIG_I2C_BOARDINFO=y
|
|
|
++CONFIG_I2C_CHARDEV=m
|
|
|
++CONFIG_I2C_HELPER_AUTO=y
|
|
|
++CONFIG_I2C_ALGOBIT=m
|
|
|
++CONFIG_I2C_ALGOPCA=m
|
|
|
++
|
|
|
++#
|
|
|
++# I2C Hardware Bus support
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# PC SMBus host controller drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_ALI1535=m
|
|
|
++CONFIG_I2C_ALI1563=m
|
|
|
++CONFIG_I2C_ALI15X3=m
|
|
|
++CONFIG_I2C_AMD756=m
|
|
|
++CONFIG_I2C_AMD8111=m
|
|
|
++CONFIG_I2C_I801=m
|
|
|
++# CONFIG_I2C_ISCH is not set
|
|
|
++CONFIG_I2C_PIIX4=m
|
|
|
++CONFIG_I2C_NFORCE2=m
|
|
|
++CONFIG_I2C_SIS5595=m
|
|
|
++CONFIG_I2C_SIS630=m
|
|
|
++CONFIG_I2C_SIS96X=m
|
|
|
++CONFIG_I2C_VIA=m
|
|
|
++CONFIG_I2C_VIAPRO=m
|
|
|
++
|
|
|
++#
|
|
|
++# I2C system bus drivers (mostly embedded / system-on-chip)
|
|
|
++#
|
|
|
++CONFIG_I2C_OCORES=m
|
|
|
++# CONFIG_I2C_SIMTEC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# External I2C/SMBus adapter drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_PARPORT_LIGHT=m
|
|
|
++# CONFIG_I2C_TAOS_EVM is not set
|
|
|
++# CONFIG_I2C_TINY_USB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics adapter I2C/DDC channel drivers
|
|
|
++#
|
|
|
++CONFIG_I2C_VOODOO3=m
|
|
|
++
|
|
|
++#
|
|
|
++# Other I2C/SMBus bus drivers
|
|
|
++#
|
|
|
++# CONFIG_I2C_ELEKTOR is not set
|
|
|
++CONFIG_I2C_PCA_ISA=m
|
|
|
++# CONFIG_I2C_PCA_PLATFORM is not set
|
|
|
++CONFIG_I2C_STUB=m
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous I2C Chip support
|
|
|
++#
|
|
|
++# CONFIG_DS1682 is not set
|
|
|
++CONFIG_SENSORS_PCF8574=m
|
|
|
++# CONFIG_PCF8575 is not set
|
|
|
++# CONFIG_SENSORS_PCA9539 is not set
|
|
|
++CONFIG_SENSORS_MAX6875=m
|
|
|
++# CONFIG_SENSORS_TSL2550 is not set
|
|
|
++# CONFIG_I2C_DEBUG_CORE is not set
|
|
|
++# CONFIG_I2C_DEBUG_ALGO is not set
|
|
|
++# CONFIG_I2C_DEBUG_BUS is not set
|
|
|
++# CONFIG_I2C_DEBUG_CHIP is not set
|
|
|
++CONFIG_SPI=y
|
|
|
++CONFIG_SPI_MASTER=y
|
|
|
++
|
|
|
++#
|
|
|
++# SPI Master Controller Drivers
|
|
|
++#
|
|
|
++CONFIG_SPI_BITBANG=m
|
|
|
++
|
|
|
++#
|
|
|
++# SPI Protocol Masters
|
|
|
++#
|
|
|
++# CONFIG_SPI_SPIDEV is not set
|
|
|
++# CONFIG_SPI_TLE62X0 is not set
|
|
|
++# CONFIG_W1 is not set
|
|
|
++# CONFIG_POWER_SUPPLY is not set
|
|
|
++# CONFIG_HWMON is not set
|
|
|
++# CONFIG_THERMAL is not set
|
|
|
++# CONFIG_THERMAL_HWMON is not set
|
|
|
++CONFIG_WATCHDOG=y
|
|
|
++# CONFIG_WATCHDOG_NOWAYOUT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Watchdog Device Drivers
|
|
|
++#
|
|
|
++CONFIG_SOFT_WATCHDOG=m
|
|
|
++# CONFIG_ALIM7101_WDT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# ISA-based Watchdog Cards
|
|
|
++#
|
|
|
++# CONFIG_PCWATCHDOG is not set
|
|
|
++# CONFIG_MIXCOMWD is not set
|
|
|
++# CONFIG_WDT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# PCI-based Watchdog Cards
|
|
|
++#
|
|
|
++# CONFIG_PCIPCWATCHDOG is not set
|
|
|
++# CONFIG_WDTPCI is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB-based Watchdog Cards
|
|
|
++#
|
|
|
++# CONFIG_USBPCWATCHDOG is not set
|
|
|
++CONFIG_SSB_POSSIBLE=y
|
|
|
++
|
|
|
++#
|
|
|
++# Sonics Silicon Backplane
|
|
|
++#
|
|
|
++# CONFIG_SSB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multifunction device drivers
|
|
|
++#
|
|
|
++# CONFIG_MFD_CORE is not set
|
|
|
++# CONFIG_MFD_SM501 is not set
|
|
|
++# CONFIG_HTC_PASIC3 is not set
|
|
|
++# CONFIG_MFD_TMIO is not set
|
|
|
++# CONFIG_MFD_WM8400 is not set
|
|
|
++# CONFIG_MFD_WM8350_I2C is not set
|
|
|
++# CONFIG_MFD_PCF50633 is not set
|
|
|
++# CONFIG_REGULATOR is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia devices
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia core support
|
|
|
++#
|
|
|
++CONFIG_VIDEO_DEV=m
|
|
|
++CONFIG_VIDEO_V4L2_COMMON=m
|
|
|
++CONFIG_VIDEO_ALLOW_V4L1=y
|
|
|
++CONFIG_VIDEO_V4L1_COMPAT=y
|
|
|
++# CONFIG_DVB_CORE is not set
|
|
|
++CONFIG_VIDEO_MEDIA=m
|
|
|
++
|
|
|
++#
|
|
|
++# Multimedia drivers
|
|
|
++#
|
|
|
++CONFIG_MEDIA_ATTACH=y
|
|
|
++CONFIG_MEDIA_TUNER=m
|
|
|
++# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
|
|
|
++CONFIG_MEDIA_TUNER_SIMPLE=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA8290=m
|
|
|
++CONFIG_MEDIA_TUNER_TDA9887=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5761=m
|
|
|
++CONFIG_MEDIA_TUNER_TEA5767=m
|
|
|
++CONFIG_MEDIA_TUNER_MT20XX=m
|
|
|
++CONFIG_MEDIA_TUNER_XC2028=m
|
|
|
++CONFIG_MEDIA_TUNER_XC5000=m
|
|
|
++CONFIG_MEDIA_TUNER_MC44S803=m
|
|
|
++CONFIG_VIDEO_V4L2=m
|
|
|
++CONFIG_VIDEO_V4L1=m
|
|
|
++CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
|
|
++# CONFIG_VIDEO_ADV_DEBUG is not set
|
|
|
++# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
|
|
++# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Encoders/decoders and other helper chips
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# Audio decoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_TVAUDIO is not set
|
|
|
++# CONFIG_VIDEO_TDA7432 is not set
|
|
|
++# CONFIG_VIDEO_TDA9840 is not set
|
|
|
++# CONFIG_VIDEO_TDA9875 is not set
|
|
|
++# CONFIG_VIDEO_TEA6415C is not set
|
|
|
++# CONFIG_VIDEO_TEA6420 is not set
|
|
|
++# CONFIG_VIDEO_MSP3400 is not set
|
|
|
++# CONFIG_VIDEO_CS5345 is not set
|
|
|
++# CONFIG_VIDEO_CS53L32A is not set
|
|
|
++# CONFIG_VIDEO_M52790 is not set
|
|
|
++# CONFIG_VIDEO_TLV320AIC23B is not set
|
|
|
++# CONFIG_VIDEO_WM8775 is not set
|
|
|
++# CONFIG_VIDEO_WM8739 is not set
|
|
|
++# CONFIG_VIDEO_VP27SMPX is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RDS decoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_SAA6588 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Video decoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_BT819 is not set
|
|
|
++# CONFIG_VIDEO_BT856 is not set
|
|
|
++# CONFIG_VIDEO_BT866 is not set
|
|
|
++# CONFIG_VIDEO_KS0127 is not set
|
|
|
++# CONFIG_VIDEO_OV7670 is not set
|
|
|
++# CONFIG_VIDEO_TCM825X is not set
|
|
|
++# CONFIG_VIDEO_SAA7110 is not set
|
|
|
++# CONFIG_VIDEO_SAA711X is not set
|
|
|
++# CONFIG_VIDEO_SAA717X is not set
|
|
|
++# CONFIG_VIDEO_SAA7191 is not set
|
|
|
++# CONFIG_VIDEO_TVP514X is not set
|
|
|
++# CONFIG_VIDEO_TVP5150 is not set
|
|
|
++# CONFIG_VIDEO_VPX3220 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Video and audio decoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_CX25840 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# MPEG video encoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_CX2341X is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Video encoders
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_SAA7127 is not set
|
|
|
++# CONFIG_VIDEO_SAA7185 is not set
|
|
|
++# CONFIG_VIDEO_ADV7170 is not set
|
|
|
++# CONFIG_VIDEO_ADV7175 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Video improvement chips
|
|
|
++#
|
|
|
++# CONFIG_VIDEO_UPD64031A is not set
|
|
|
++# CONFIG_VIDEO_UPD64083 is not set
|
|
|
++# CONFIG_VIDEO_VIVI is not set
|
|
|
++# CONFIG_VIDEO_BT848 is not set
|
|
|
++# CONFIG_VIDEO_PMS is not set
|
|
|
++# CONFIG_VIDEO_CPIA is not set
|
|
|
++# CONFIG_VIDEO_CPIA2 is not set
|
|
|
++# CONFIG_VIDEO_SAA5246A is not set
|
|
|
++# CONFIG_VIDEO_SAA5249 is not set
|
|
|
++# CONFIG_VIDEO_STRADIS is not set
|
|
|
++# CONFIG_VIDEO_ZORAN is not set
|
|
|
++# CONFIG_VIDEO_SAA7134 is not set
|
|
|
++# CONFIG_VIDEO_MXB is not set
|
|
|
++# CONFIG_VIDEO_HEXIUM_ORION is not set
|
|
|
++# CONFIG_VIDEO_HEXIUM_GEMINI is not set
|
|
|
++# CONFIG_VIDEO_CX88 is not set
|
|
|
++# CONFIG_VIDEO_IVTV is not set
|
|
|
++# CONFIG_VIDEO_CAFE_CCIC is not set
|
|
|
++# CONFIG_SOC_CAMERA is not set
|
|
|
++CONFIG_V4L_USB_DRIVERS=y
|
|
|
++CONFIG_USB_VIDEO_CLASS=m
|
|
|
++CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
|
|
|
++# CONFIG_USB_GSPCA is not set
|
|
|
++# CONFIG_VIDEO_PVRUSB2 is not set
|
|
|
++# CONFIG_VIDEO_HDPVR is not set
|
|
|
++# CONFIG_VIDEO_EM28XX is not set
|
|
|
++# CONFIG_VIDEO_CX231XX is not set
|
|
|
++# CONFIG_VIDEO_USBVISION is not set
|
|
|
++# CONFIG_USB_VICAM is not set
|
|
|
++# CONFIG_USB_IBMCAM is not set
|
|
|
++# CONFIG_USB_KONICAWC is not set
|
|
|
++# CONFIG_USB_QUICKCAM_MESSENGER is not set
|
|
|
++# CONFIG_USB_ET61X251 is not set
|
|
|
++# CONFIG_VIDEO_OVCAMCHIP is not set
|
|
|
++# CONFIG_USB_OV511 is not set
|
|
|
++# CONFIG_USB_SE401 is not set
|
|
|
++# CONFIG_USB_SN9C102 is not set
|
|
|
++# CONFIG_USB_STV680 is not set
|
|
|
++# CONFIG_USB_ZC0301 is not set
|
|
|
++# CONFIG_USB_PWC is not set
|
|
|
++CONFIG_USB_PWC_INPUT_EVDEV=y
|
|
|
++# CONFIG_USB_ZR364XX is not set
|
|
|
++# CONFIG_USB_STKWEBCAM is not set
|
|
|
++# CONFIG_USB_S2255 is not set
|
|
|
++CONFIG_RADIO_ADAPTERS=y
|
|
|
++CONFIG_RADIO_CADET=m
|
|
|
++CONFIG_RADIO_RTRACK=m
|
|
|
++CONFIG_RADIO_RTRACK2=m
|
|
|
++CONFIG_RADIO_AZTECH=m
|
|
|
++CONFIG_RADIO_GEMTEK=m
|
|
|
++CONFIG_RADIO_GEMTEK_PCI=m
|
|
|
++CONFIG_RADIO_MAXIRADIO=m
|
|
|
++CONFIG_RADIO_MAESTRO=m
|
|
|
++CONFIG_RADIO_SF16FMI=m
|
|
|
++CONFIG_RADIO_SF16FMR2=m
|
|
|
++CONFIG_RADIO_TERRATEC=m
|
|
|
++CONFIG_RADIO_TRUST=m
|
|
|
++CONFIG_RADIO_TYPHOON=m
|
|
|
++CONFIG_RADIO_TYPHOON_PROC_FS=y
|
|
|
++CONFIG_RADIO_ZOLTRIX=m
|
|
|
++CONFIG_USB_DSBR=m
|
|
|
++# CONFIG_USB_SI470X is not set
|
|
|
++# CONFIG_USB_MR800 is not set
|
|
|
++# CONFIG_RADIO_TEA5764 is not set
|
|
|
++# CONFIG_DAB is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Graphics support
|
|
|
++#
|
|
|
++CONFIG_DRM=m
|
|
|
++CONFIG_DRM_TDFX=m
|
|
|
++CONFIG_DRM_R128=m
|
|
|
++CONFIG_DRM_RADEON=m
|
|
|
++CONFIG_DRM_MGA=m
|
|
|
++CONFIG_DRM_VIA=m
|
|
|
++CONFIG_DRM_SAVAGE=m
|
|
|
++# CONFIG_VGASTATE is not set
|
|
|
++# CONFIG_VIDEO_OUTPUT_CONTROL is not set
|
|
|
++CONFIG_FB=y
|
|
|
++CONFIG_FIRMWARE_EDID=y
|
|
|
++# CONFIG_FB_DDC is not set
|
|
|
++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
|
|
|
++CONFIG_FB_CFB_FILLRECT=y
|
|
|
++CONFIG_FB_CFB_COPYAREA=y
|
|
|
++CONFIG_FB_CFB_IMAGEBLIT=y
|
|
|
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
|
|
++CONFIG_FB_SYS_FILLRECT=m
|
|
|
++CONFIG_FB_SYS_COPYAREA=m
|
|
|
++CONFIG_FB_SYS_IMAGEBLIT=m
|
|
|
++# CONFIG_FB_FOREIGN_ENDIAN is not set
|
|
|
++CONFIG_FB_SYS_FOPS=m
|
|
|
++# CONFIG_FB_SVGALIB is not set
|
|
|
++# CONFIG_FB_MACMODES is not set
|
|
|
++# CONFIG_FB_BACKLIGHT is not set
|
|
|
++CONFIG_FB_MODE_HELPERS=y
|
|
|
++CONFIG_FB_TILEBLITTING=y
|
|
|
++
|
|
|
++#
|
|
|
++# Frame buffer hardware drivers
|
|
|
++#
|
|
|
++# CONFIG_FB_CIRRUS is not set
|
|
|
++# CONFIG_FB_PM2 is not set
|
|
|
++# CONFIG_FB_CYBER2000 is not set
|
|
|
++# CONFIG_FB_ASILIANT is not set
|
|
|
++# CONFIG_FB_IMSTT is not set
|
|
|
++# CONFIG_FB_UVESA is not set
|
|
|
++# CONFIG_FB_S1D13XXX is not set
|
|
|
++# CONFIG_FB_NVIDIA is not set
|
|
|
++# CONFIG_FB_RIVA is not set
|
|
|
++# CONFIG_FB_MATROX is not set
|
|
|
++# CONFIG_FB_RADEON is not set
|
|
|
++# CONFIG_FB_ATY128 is not set
|
|
|
++# CONFIG_FB_ATY is not set
|
|
|
++# CONFIG_FB_S3 is not set
|
|
|
++# CONFIG_FB_SAVAGE is not set
|
|
|
++# CONFIG_FB_SIS is not set
|
|
|
++# CONFIG_FB_VIA is not set
|
|
|
++# CONFIG_FB_NEOMAGIC is not set
|
|
|
++# CONFIG_FB_KYRO is not set
|
|
|
++# CONFIG_FB_3DFX is not set
|
|
|
++# CONFIG_FB_VOODOO1 is not set
|
|
|
++# CONFIG_FB_VT8623 is not set
|
|
|
++# CONFIG_FB_TRIDENT is not set
|
|
|
++# CONFIG_FB_ARK is not set
|
|
|
++# CONFIG_FB_PM3 is not set
|
|
|
++# CONFIG_FB_CARMINE is not set
|
|
|
++CONFIG_FB_SM7XX=y
|
|
|
++CONFIG_FB_SM7XX_ACCEL=y
|
|
|
++# CONFIG_FB_SM7XX_DUALHEAD is not set
|
|
|
++CONFIG_FB_VIRTUAL=m
|
|
|
++# CONFIG_FB_METRONOME is not set
|
|
|
++# CONFIG_FB_MB862XX is not set
|
|
|
++# CONFIG_FB_BROADSHEET is not set
|
|
|
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
|
++# CONFIG_LCD_CLASS_DEVICE is not set
|
|
|
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|
|
++CONFIG_BACKLIGHT_GENERIC=y
|
|
|
++
|
|
|
++#
|
|
|
++# Display device support
|
|
|
++#
|
|
|
++# CONFIG_DISPLAY_SUPPORT is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Console display driver support
|
|
|
++#
|
|
|
++# CONFIG_VGA_CONSOLE is not set
|
|
|
++# CONFIG_MDA_CONSOLE is not set
|
|
|
++CONFIG_DUMMY_CONSOLE=y
|
|
|
++CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
|
++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
|
|
++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
|
|
++# CONFIG_FONTS is not set
|
|
|
++CONFIG_FONT_8x8=y
|
|
|
++CONFIG_FONT_8x16=y
|
|
|
++# CONFIG_LOGO is not set
|
|
|
++CONFIG_SOUND=y
|
|
|
++CONFIG_SOUND_OSS_CORE=y
|
|
|
++CONFIG_SND=y
|
|
|
++CONFIG_SND_TIMER=y
|
|
|
++CONFIG_SND_PCM=y
|
|
|
++CONFIG_SND_RAWMIDI=m
|
|
|
++CONFIG_SND_SEQUENCER=m
|
|
|
++CONFIG_SND_SEQ_DUMMY=m
|
|
|
++CONFIG_SND_OSSEMUL=y
|
|
|
++CONFIG_SND_MIXER_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS=m
|
|
|
++CONFIG_SND_PCM_OSS_PLUGINS=y
|
|
|
++CONFIG_SND_SEQUENCER_OSS=y
|
|
|
++# CONFIG_SND_HRTIMER is not set
|
|
|
++# CONFIG_SND_DYNAMIC_MINORS is not set
|
|
|
++CONFIG_SND_SUPPORT_OLD_API=y
|
|
|
++CONFIG_SND_VERBOSE_PROCFS=y
|
|
|
++# CONFIG_SND_VERBOSE_PRINTK is not set
|
|
|
++# CONFIG_SND_DEBUG is not set
|
|
|
++CONFIG_SND_VMASTER=y
|
|
|
++CONFIG_SND_AC97_CODEC=y
|
|
|
++CONFIG_SND_DRIVERS=y
|
|
|
++CONFIG_SND_DUMMY=m
|
|
|
++# CONFIG_SND_VIRMIDI is not set
|
|
|
++CONFIG_SND_MTPAV=m
|
|
|
++# CONFIG_SND_SERIAL_U16550 is not set
|
|
|
++# CONFIG_SND_MPU401 is not set
|
|
|
++# CONFIG_SND_AC97_POWER_SAVE is not set
|
|
|
++CONFIG_SND_PCI=y
|
|
|
++# CONFIG_SND_AD1889 is not set
|
|
|
++# CONFIG_SND_ALS300 is not set
|
|
|
++# CONFIG_SND_ALI5451 is not set
|
|
|
++# CONFIG_SND_ATIIXP is not set
|
|
|
++# CONFIG_SND_ATIIXP_MODEM is not set
|
|
|
++# CONFIG_SND_AU8810 is not set
|
|
|
++# CONFIG_SND_AU8820 is not set
|
|
|
++# CONFIG_SND_AU8830 is not set
|
|
|
++# CONFIG_SND_AW2 is not set
|
|
|
++# CONFIG_SND_AZT3328 is not set
|
|
|
++# CONFIG_SND_BT87X is not set
|
|
|
++# CONFIG_SND_CA0106 is not set
|
|
|
++# CONFIG_SND_CMIPCI is not set
|
|
|
++# CONFIG_SND_OXYGEN is not set
|
|
|
++# CONFIG_SND_CS4281 is not set
|
|
|
++# CONFIG_SND_CS46XX is not set
|
|
|
++CONFIG_SND_CS5535AUDIO=y
|
|
|
++# CONFIG_SND_DARLA20 is not set
|
|
|
++# CONFIG_SND_GINA20 is not set
|
|
|
++# CONFIG_SND_LAYLA20 is not set
|
|
|
++# CONFIG_SND_DARLA24 is not set
|
|
|
++# CONFIG_SND_GINA24 is not set
|
|
|
++# CONFIG_SND_LAYLA24 is not set
|
|
|
++# CONFIG_SND_MONA is not set
|
|
|
++# CONFIG_SND_MIA is not set
|
|
|
++# CONFIG_SND_ECHO3G is not set
|
|
|
++# CONFIG_SND_INDIGO is not set
|
|
|
++# CONFIG_SND_INDIGOIO is not set
|
|
|
++# CONFIG_SND_INDIGODJ is not set
|
|
|
++# CONFIG_SND_INDIGOIOX is not set
|
|
|
++# CONFIG_SND_INDIGODJX is not set
|
|
|
++# CONFIG_SND_EMU10K1 is not set
|
|
|
++# CONFIG_SND_EMU10K1X is not set
|
|
|
++# CONFIG_SND_ENS1370 is not set
|
|
|
++# CONFIG_SND_ENS1371 is not set
|
|
|
++# CONFIG_SND_ES1938 is not set
|
|
|
++# CONFIG_SND_ES1968 is not set
|
|
|
++# CONFIG_SND_FM801 is not set
|
|
|
++# CONFIG_SND_HDA_INTEL is not set
|
|
|
++# CONFIG_SND_HDSP is not set
|
|
|
++# CONFIG_SND_HDSPM is not set
|
|
|
++# CONFIG_SND_HIFIER is not set
|
|
|
++# CONFIG_SND_ICE1712 is not set
|
|
|
++# CONFIG_SND_ICE1724 is not set
|
|
|
++# CONFIG_SND_INTEL8X0 is not set
|
|
|
++# CONFIG_SND_INTEL8X0M is not set
|
|
|
++# CONFIG_SND_KORG1212 is not set
|
|
|
++# CONFIG_SND_MAESTRO3 is not set
|
|
|
++# CONFIG_SND_MIXART is not set
|
|
|
++# CONFIG_SND_NM256 is not set
|
|
|
++# CONFIG_SND_PCXHR is not set
|
|
|
++# CONFIG_SND_RIPTIDE is not set
|
|
|
++# CONFIG_SND_RME32 is not set
|
|
|
++# CONFIG_SND_RME96 is not set
|
|
|
++# CONFIG_SND_RME9652 is not set
|
|
|
++# CONFIG_SND_SONICVIBES is not set
|
|
|
++# CONFIG_SND_TRIDENT is not set
|
|
|
++# CONFIG_SND_VIA82XX is not set
|
|
|
++# CONFIG_SND_VIA82XX_MODEM is not set
|
|
|
++# CONFIG_SND_VIRTUOSO is not set
|
|
|
++# CONFIG_SND_VX222 is not set
|
|
|
++# CONFIG_SND_YMFPCI is not set
|
|
|
++# CONFIG_SND_SPI is not set
|
|
|
++# CONFIG_SND_MIPS is not set
|
|
|
++# CONFIG_SND_USB is not set
|
|
|
++# CONFIG_SND_SOC is not set
|
|
|
++# CONFIG_SOUND_PRIME is not set
|
|
|
++CONFIG_AC97_BUS=y
|
|
|
++CONFIG_HID_SUPPORT=y
|
|
|
++CONFIG_HID=y
|
|
|
++# CONFIG_HID_DEBUG is not set
|
|
|
++CONFIG_HIDRAW=y
|
|
|
++
|
|
|
++#
|
|
|
++# USB Input Devices
|
|
|
++#
|
|
|
++CONFIG_USB_HID=y
|
|
|
++# CONFIG_HID_PID is not set
|
|
|
++CONFIG_USB_HIDDEV=y
|
|
|
++
|
|
|
++#
|
|
|
++# Special HID drivers
|
|
|
++#
|
|
|
++# CONFIG_HID_A4TECH is not set
|
|
|
++# CONFIG_HID_APPLE is not set
|
|
|
++# CONFIG_HID_BELKIN is not set
|
|
|
++# CONFIG_HID_CHERRY is not set
|
|
|
++# CONFIG_HID_CHICONY is not set
|
|
|
++# CONFIG_HID_CYPRESS is not set
|
|
|
++# CONFIG_DRAGONRISE_FF is not set
|
|
|
++# CONFIG_HID_EZKEY is not set
|
|
|
++# CONFIG_HID_KYE is not set
|
|
|
++# CONFIG_HID_GYRATION is not set
|
|
|
++# CONFIG_HID_KENSINGTON is not set
|
|
|
++# CONFIG_HID_LOGITECH is not set
|
|
|
++# CONFIG_HID_MICROSOFT is not set
|
|
|
++# CONFIG_HID_MONTEREY is not set
|
|
|
++# CONFIG_HID_NTRIG is not set
|
|
|
++# CONFIG_HID_PANTHERLORD is not set
|
|
|
++# CONFIG_HID_PETALYNX is not set
|
|
|
++# CONFIG_HID_SAMSUNG is not set
|
|
|
++# CONFIG_HID_SONY is not set
|
|
|
++# CONFIG_HID_SUNPLUS is not set
|
|
|
++# CONFIG_GREENASIA_FF is not set
|
|
|
++# CONFIG_HID_TOPSEED is not set
|
|
|
++# CONFIG_THRUSTMASTER_FF is not set
|
|
|
++# CONFIG_ZEROPLUS_FF is not set
|
|
|
++CONFIG_USB_SUPPORT=y
|
|
|
++CONFIG_USB_ARCH_HAS_HCD=y
|
|
|
++CONFIG_USB_ARCH_HAS_OHCI=y
|
|
|
++CONFIG_USB_ARCH_HAS_EHCI=y
|
|
|
++CONFIG_USB=y
|
|
|
++# CONFIG_USB_DEBUG is not set
|
|
|
++# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Miscellaneous USB options
|
|
|
++#
|
|
|
++CONFIG_USB_DEVICEFS=y
|
|
|
++CONFIG_USB_DEVICE_CLASS=y
|
|
|
++CONFIG_USB_DYNAMIC_MINORS=y
|
|
|
++# CONFIG_USB_SUSPEND is not set
|
|
|
++# CONFIG_USB_OTG is not set
|
|
|
++# CONFIG_USB_OTG_WHITELIST is not set
|
|
|
++# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
|
|
++CONFIG_USB_MON=m
|
|
|
++# CONFIG_USB_WUSB is not set
|
|
|
++# CONFIG_USB_WUSB_CBAF is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Host Controller Drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_C67X00_HCD is not set
|
|
|
++CONFIG_USB_EHCI_HCD=y
|
|
|
++CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
|
|
++# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
|
|
++# CONFIG_USB_OXU210HP_HCD is not set
|
|
|
++# CONFIG_USB_ISP116X_HCD is not set
|
|
|
++# CONFIG_USB_ISP1760_HCD is not set
|
|
|
++CONFIG_USB_OHCI_HCD=m
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
|
|
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
|
|
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
|
++CONFIG_USB_UHCI_HCD=m
|
|
|
++# CONFIG_USB_SL811_HCD is not set
|
|
|
++CONFIG_USB_R8A66597_HCD=y
|
|
|
++# CONFIG_USB_WHCI_HCD is not set
|
|
|
++# CONFIG_USB_HWA_HCD is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Device Class drivers
|
|
|
++#
|
|
|
++CONFIG_USB_ACM=m
|
|
|
++CONFIG_USB_PRINTER=m
|
|
|
++# CONFIG_USB_WDM is not set
|
|
|
++# CONFIG_USB_TMC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# also be needed; see USB_STORAGE Help for more info
|
|
|
++#
|
|
|
++CONFIG_USB_STORAGE=y
|
|
|
++# CONFIG_USB_STORAGE_DEBUG is not set
|
|
|
++CONFIG_USB_STORAGE_DATAFAB=y
|
|
|
++CONFIG_USB_STORAGE_FREECOM=y
|
|
|
++CONFIG_USB_STORAGE_ISD200=y
|
|
|
++CONFIG_USB_STORAGE_USBAT=y
|
|
|
++CONFIG_USB_STORAGE_SDDR09=y
|
|
|
++CONFIG_USB_STORAGE_SDDR55=y
|
|
|
++CONFIG_USB_STORAGE_JUMPSHOT=y
|
|
|
++CONFIG_USB_STORAGE_ALAUDA=y
|
|
|
++CONFIG_USB_STORAGE_ONETOUCH=y
|
|
|
++CONFIG_USB_STORAGE_KARMA=y
|
|
|
++CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
|
|
++# CONFIG_USB_LIBUSUAL is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Imaging devices
|
|
|
++#
|
|
|
++CONFIG_USB_MDC800=m
|
|
|
++CONFIG_USB_MICROTEK=m
|
|
|
++
|
|
|
++#
|
|
|
++# USB port drivers
|
|
|
++#
|
|
|
++CONFIG_USB_SERIAL=m
|
|
|
++CONFIG_USB_EZUSB=y
|
|
|
++CONFIG_USB_SERIAL_GENERIC=y
|
|
|
++# CONFIG_USB_SERIAL_AIRCABLE is not set
|
|
|
++CONFIG_USB_SERIAL_ARK3116=m
|
|
|
++CONFIG_USB_SERIAL_BELKIN=m
|
|
|
++# CONFIG_USB_SERIAL_CH341 is not set
|
|
|
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
|
|
++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
|
|
++# CONFIG_USB_SERIAL_CP210X is not set
|
|
|
++CONFIG_USB_SERIAL_CYPRESS_M8=m
|
|
|
++CONFIG_USB_SERIAL_EMPEG=m
|
|
|
++CONFIG_USB_SERIAL_FTDI_SIO=m
|
|
|
++CONFIG_USB_SERIAL_FUNSOFT=m
|
|
|
++CONFIG_USB_SERIAL_VISOR=m
|
|
|
++CONFIG_USB_SERIAL_IPAQ=m
|
|
|
++CONFIG_USB_SERIAL_IR=m
|
|
|
++CONFIG_USB_SERIAL_EDGEPORT=m
|
|
|
++CONFIG_USB_SERIAL_EDGEPORT_TI=m
|
|
|
++CONFIG_USB_SERIAL_GARMIN=m
|
|
|
++CONFIG_USB_SERIAL_IPW=m
|
|
|
++# CONFIG_USB_SERIAL_IUU is not set
|
|
|
++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
|
|
++# CONFIG_USB_SERIAL_KEYSPAN is not set
|
|
|
++CONFIG_USB_SERIAL_KLSI=m
|
|
|
++CONFIG_USB_SERIAL_KOBIL_SCT=m
|
|
|
++CONFIG_USB_SERIAL_MCT_U232=m
|
|
|
++# CONFIG_USB_SERIAL_MOS7720 is not set
|
|
|
++# CONFIG_USB_SERIAL_MOS7840 is not set
|
|
|
++# CONFIG_USB_SERIAL_MOTOROLA is not set
|
|
|
++CONFIG_USB_SERIAL_NAVMAN=m
|
|
|
++CONFIG_USB_SERIAL_PL2303=m
|
|
|
++# CONFIG_USB_SERIAL_OTI6858 is not set
|
|
|
++# CONFIG_USB_SERIAL_QUALCOMM is not set
|
|
|
++# CONFIG_USB_SERIAL_SPCP8X5 is not set
|
|
|
++CONFIG_USB_SERIAL_HP4X=m
|
|
|
++CONFIG_USB_SERIAL_SAFE=m
|
|
|
++# CONFIG_USB_SERIAL_SAFE_PADDED is not set
|
|
|
++# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
|
|
|
++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
|
|
|
++# CONFIG_USB_SERIAL_SYMBOL is not set
|
|
|
++CONFIG_USB_SERIAL_TI=m
|
|
|
++CONFIG_USB_SERIAL_CYBERJACK=m
|
|
|
++CONFIG_USB_SERIAL_XIRCOM=m
|
|
|
++CONFIG_USB_SERIAL_OPTION=m
|
|
|
++CONFIG_USB_SERIAL_OMNINET=m
|
|
|
++# CONFIG_USB_SERIAL_OPTICON is not set
|
|
|
++# CONFIG_USB_SERIAL_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# USB Miscellaneous drivers
|
|
|
++#
|
|
|
++# CONFIG_USB_EMI62 is not set
|
|
|
++# CONFIG_USB_EMI26 is not set
|
|
|
++# CONFIG_USB_ADUTUX is not set
|
|
|
++# CONFIG_USB_SEVSEG is not set
|
|
|
++CONFIG_USB_RIO500=m
|
|
|
++# CONFIG_USB_LEGOTOWER is not set
|
|
|
++# CONFIG_USB_LCD is not set
|
|
|
++# CONFIG_USB_BERRY_CHARGE is not set
|
|
|
++# CONFIG_USB_LED is not set
|
|
|
++# CONFIG_USB_CYPRESS_CY7C63 is not set
|
|
|
++# CONFIG_USB_CYTHERM is not set
|
|
|
++CONFIG_USB_IDMOUSE=m
|
|
|
++# CONFIG_USB_FTDI_ELAN is not set
|
|
|
++CONFIG_USB_APPLEDISPLAY=m
|
|
|
++CONFIG_USB_SISUSBVGA=m
|
|
|
++CONFIG_USB_SISUSBVGA_CON=y
|
|
|
++CONFIG_USB_LD=m
|
|
|
++# CONFIG_USB_TRANCEVIBRATOR is not set
|
|
|
++# CONFIG_USB_IOWARRIOR is not set
|
|
|
++CONFIG_USB_TEST=m
|
|
|
++# CONFIG_USB_ISIGHTFW is not set
|
|
|
++# CONFIG_USB_VST is not set
|
|
|
++CONFIG_USB_ATM=m
|
|
|
++CONFIG_USB_SPEEDTOUCH=m
|
|
|
++CONFIG_USB_CXACRU=m
|
|
|
++CONFIG_USB_UEAGLEATM=m
|
|
|
++CONFIG_USB_XUSBATM=m
|
|
|
++# CONFIG_USB_GADGET is not set
|
|
|
++
|
|
|
++#
|
|
|
++# OTG and related infrastructure
|
|
|
++#
|
|
|
++# CONFIG_NOP_USB_XCEIV is not set
|
|
|
++# CONFIG_UWB is not set
|
|
|
++CONFIG_MMC=m
|
|
|
++# CONFIG_MMC_DEBUG is not set
|
|
|
++# CONFIG_MMC_UNSAFE_RESUME is not set
|
|
|
++
|
|
|
++#
|
|
|
++# MMC/SD/SDIO Card Drivers
|
|
|
++#
|
|
|
++# CONFIG_MMC_BLOCK is not set
|
|
|
++# CONFIG_SDIO_UART is not set
|
|
|
++# CONFIG_MMC_TEST is not set
|
|
|
++
|
|
|
++#
|
|
|
++# MMC/SD/SDIO Host Controller Drivers
|
|
|
++#
|
|
|
++# CONFIG_MMC_SDHCI is not set
|
|
|
++# CONFIG_MMC_TIFM_SD is not set
|
|
|
++# CONFIG_MMC_SPI is not set
|
|
|
++# CONFIG_MEMSTICK is not set
|
|
|
++CONFIG_NEW_LEDS=y
|
|
|
++CONFIG_LEDS_CLASS=m
|
|
|
++
|
|
|
++#
|
|
|
++# LED drivers
|
|
|
++#
|
|
|
++# CONFIG_LEDS_PCA9532 is not set
|
|
|
++# CONFIG_LEDS_LP5521 is not set
|
|
|
++# CONFIG_LEDS_PCA955X is not set
|
|
|
++# CONFIG_LEDS_DAC124S085 is not set
|
|
|
++# CONFIG_LEDS_BD2802 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# LED Triggers
|
|
|
++#
|
|
|
++CONFIG_LEDS_TRIGGERS=y
|
|
|
++CONFIG_LEDS_TRIGGER_TIMER=m
|
|
|
++# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
|
|
|
++CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
|
|
++# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
|
|
|
++# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
|
|
|
++
|
|
|
++#
|
|
|
++# iptables trigger is under Netfilter config (LED target)
|
|
|
++#
|
|
|
++# CONFIG_ACCESSIBILITY is not set
|
|
|
++# CONFIG_INFINIBAND is not set
|
|
|
++CONFIG_RTC_LIB=y
|
|
|
++CONFIG_RTC_CLASS=y
|
|
|
++CONFIG_RTC_HCTOSYS=y
|
|
|
++CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
|
|
++# CONFIG_RTC_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# RTC interfaces
|
|
|
++#
|
|
|
++CONFIG_RTC_INTF_SYSFS=y
|
|
|
++CONFIG_RTC_INTF_PROC=y
|
|
|
++CONFIG_RTC_INTF_DEV=y
|
|
|
++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
|
|
++# CONFIG_RTC_DRV_TEST is not set
|
|
|
++
|
|
|
++#
|
|
|
++# I2C RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_RTC_DRV_DS1307 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1374 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1672 is not set
|
|
|
++# CONFIG_RTC_DRV_MAX6900 is not set
|
|
|
++# CONFIG_RTC_DRV_RS5C372 is not set
|
|
|
++# CONFIG_RTC_DRV_ISL1208 is not set
|
|
|
++# CONFIG_RTC_DRV_X1205 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8563 is not set
|
|
|
++# CONFIG_RTC_DRV_PCF8583 is not set
|
|
|
++# CONFIG_RTC_DRV_M41T80 is not set
|
|
|
++# CONFIG_RTC_DRV_S35390A is not set
|
|
|
++# CONFIG_RTC_DRV_FM3130 is not set
|
|
|
++# CONFIG_RTC_DRV_RX8581 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# SPI RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_RTC_DRV_M41T94 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1305 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1390 is not set
|
|
|
++# CONFIG_RTC_DRV_MAX6902 is not set
|
|
|
++# CONFIG_RTC_DRV_R9701 is not set
|
|
|
++# CONFIG_RTC_DRV_RS5C348 is not set
|
|
|
++# CONFIG_RTC_DRV_DS3234 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Platform RTC drivers
|
|
|
++#
|
|
|
++CONFIG_RTC_DRV_CMOS=y
|
|
|
++# CONFIG_RTC_DRV_DS1286 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1511 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1553 is not set
|
|
|
++# CONFIG_RTC_DRV_DS1742 is not set
|
|
|
++# CONFIG_RTC_DRV_STK17TA8 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T86 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T35 is not set
|
|
|
++# CONFIG_RTC_DRV_M48T59 is not set
|
|
|
++# CONFIG_RTC_DRV_BQ4802 is not set
|
|
|
++# CONFIG_RTC_DRV_V3020 is not set
|
|
|
++
|
|
|
++#
|
|
|
++# on-CPU RTC drivers
|
|
|
++#
|
|
|
++# CONFIG_DMADEVICES is not set
|
|
|
++# CONFIG_AUXDISPLAY is not set
|
|
|
++# CONFIG_UIO is not set
|
|
|
++# CONFIG_STAGING is not set
|
|
|
++
|
|
|
++#
|
|
|
++# File systems
|
|
|
++#
|
|
|
++CONFIG_EXT2_FS=y
|
|
|
++CONFIG_EXT2_FS_XATTR=y
|
|
|
++CONFIG_EXT2_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT2_FS_SECURITY=y
|
|
|
++# CONFIG_EXT2_FS_XIP is not set
|
|
|
++CONFIG_EXT3_FS=y
|
|
|
++# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
|
|
++CONFIG_EXT3_FS_XATTR=y
|
|
|
++CONFIG_EXT3_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT3_FS_SECURITY=y
|
|
|
++CONFIG_EXT4_FS=m
|
|
|
++CONFIG_EXT4DEV_COMPAT=y
|
|
|
++CONFIG_EXT4_FS_XATTR=y
|
|
|
++CONFIG_EXT4_FS_POSIX_ACL=y
|
|
|
++CONFIG_EXT4_FS_SECURITY=y
|
|
|
++CONFIG_JBD=y
|
|
|
++# CONFIG_JBD_DEBUG is not set
|
|
|
++CONFIG_JBD2=m
|
|
|
++# CONFIG_JBD2_DEBUG is not set
|
|
|
++CONFIG_FS_MBCACHE=y
|
|
|
++CONFIG_REISERFS_FS=m
|
|
|
++# CONFIG_REISERFS_CHECK is not set
|
|
|
++# CONFIG_REISERFS_PROC_INFO is not set
|
|
|
++CONFIG_REISERFS_FS_XATTR=y
|
|
|
++CONFIG_REISERFS_FS_POSIX_ACL=y
|
|
|
++CONFIG_REISERFS_FS_SECURITY=y
|
|
|
++CONFIG_JFS_FS=m
|
|
|
++CONFIG_JFS_POSIX_ACL=y
|
|
|
++CONFIG_JFS_SECURITY=y
|
|
|
++# CONFIG_JFS_DEBUG is not set
|
|
|
++# CONFIG_JFS_STATISTICS is not set
|
|
|
++CONFIG_FS_POSIX_ACL=y
|
|
|
++CONFIG_FILE_LOCKING=y
|
|
|
++CONFIG_XFS_FS=m
|
|
|
++CONFIG_XFS_QUOTA=y
|
|
|
++CONFIG_XFS_POSIX_ACL=y
|
|
|
++CONFIG_XFS_RT=y
|
|
|
++# CONFIG_XFS_DEBUG is not set
|
|
|
++# CONFIG_GFS2_FS is not set
|
|
|
++CONFIG_OCFS2_FS=m
|
|
|
++CONFIG_OCFS2_FS_O2CB=m
|
|
|
++CONFIG_OCFS2_FS_STATS=y
|
|
|
++CONFIG_OCFS2_DEBUG_MASKLOG=y
|
|
|
++# CONFIG_OCFS2_DEBUG_FS is not set
|
|
|
++# CONFIG_OCFS2_FS_POSIX_ACL is not set
|
|
|
++# CONFIG_BTRFS_FS is not set
|
|
|
++CONFIG_DNOTIFY=y
|
|
|
++CONFIG_INOTIFY=y
|
|
|
++CONFIG_INOTIFY_USER=y
|
|
|
++CONFIG_QUOTA=y
|
|
|
++# CONFIG_QUOTA_NETLINK_INTERFACE is not set
|
|
|
++CONFIG_PRINT_QUOTA_WARNING=y
|
|
|
++CONFIG_QUOTA_TREE=m
|
|
|
++CONFIG_QFMT_V1=m
|
|
|
++CONFIG_QFMT_V2=m
|
|
|
++CONFIG_QUOTACTL=y
|
|
|
++CONFIG_AUTOFS_FS=m
|
|
|
++CONFIG_AUTOFS4_FS=m
|
|
|
++CONFIG_FUSE_FS=m
|
|
|
++
|
|
|
++#
|
|
|
++# Caches
|
|
|
++#
|
|
|
++# CONFIG_FSCACHE is not set
|
|
|
++
|
|
|
++#
|
|
|
++# CD-ROM/DVD Filesystems
|
|
|
++#
|
|
|
++CONFIG_ISO9660_FS=m
|
|
|
++CONFIG_JOLIET=y
|
|
|
++CONFIG_ZISOFS=y
|
|
|
++CONFIG_UDF_FS=m
|
|
|
++CONFIG_UDF_NLS=y
|
|
|
++
|
|
|
++#
|
|
|
++# DOS/FAT/NT Filesystems
|
|
|
++#
|
|
|
++CONFIG_FAT_FS=m
|
|
|
++CONFIG_MSDOS_FS=m
|
|
|
++CONFIG_VFAT_FS=m
|
|
|
++CONFIG_FAT_DEFAULT_CODEPAGE=437
|
|
|
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|
|
++CONFIG_NTFS_FS=m
|
|
|
++# CONFIG_NTFS_DEBUG is not set
|
|
|
++CONFIG_NTFS_RW=y
|
|
|
++
|
|
|
++#
|
|
|
++# Pseudo filesystems
|
|
|
++#
|
|
|
++CONFIG_PROC_FS=y
|
|
|
++CONFIG_PROC_KCORE=y
|
|
|
++CONFIG_PROC_SYSCTL=y
|
|
|
++CONFIG_PROC_PAGE_MONITOR=y
|
|
|
++CONFIG_SYSFS=y
|
|
|
++CONFIG_TMPFS=y
|
|
|
++# CONFIG_TMPFS_POSIX_ACL is not set
|
|
|
++# CONFIG_HUGETLB_PAGE is not set
|
|
|
++CONFIG_CONFIGFS_FS=m
|
|
|
++CONFIG_MISC_FILESYSTEMS=y
|
|
|
++CONFIG_ADFS_FS=m
|
|
|
++# CONFIG_ADFS_FS_RW is not set
|
|
|
++CONFIG_AFFS_FS=m
|
|
|
++# CONFIG_ECRYPT_FS is not set
|
|
|
++CONFIG_HFS_FS=m
|
|
|
++CONFIG_HFSPLUS_FS=m
|
|
|
++CONFIG_BEFS_FS=m
|
|
|
++# CONFIG_BEFS_DEBUG is not set
|
|
|
++CONFIG_BFS_FS=m
|
|
|
++CONFIG_EFS_FS=m
|
|
|
++CONFIG_JFFS2_FS=m
|
|
|
++CONFIG_JFFS2_FS_DEBUG=0
|
|
|
++CONFIG_JFFS2_FS_WRITEBUFFER=y
|
|
|
++# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
|
|
|
++# CONFIG_JFFS2_SUMMARY is not set
|
|
|
++CONFIG_JFFS2_FS_XATTR=y
|
|
|
++CONFIG_JFFS2_FS_POSIX_ACL=y
|
|
|
++CONFIG_JFFS2_FS_SECURITY=y
|
|
|
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
|
|
++CONFIG_JFFS2_ZLIB=y
|
|
|
++# CONFIG_JFFS2_LZO is not set
|
|
|
++CONFIG_JFFS2_RTIME=y
|
|
|
++# CONFIG_JFFS2_RUBIN is not set
|
|
|
++CONFIG_CRAMFS=y
|
|
|
++# CONFIG_SQUASHFS is not set
|
|
|
++CONFIG_VXFS_FS=m
|
|
|
++CONFIG_MINIX_FS=m
|
|
|
++# CONFIG_OMFS_FS is not set
|
|
|
++CONFIG_HPFS_FS=m
|
|
|
++CONFIG_QNX4FS_FS=m
|
|
|
++CONFIG_ROMFS_FS=m
|
|
|
++CONFIG_ROMFS_BACKED_BY_BLOCK=y
|
|
|
++# CONFIG_ROMFS_BACKED_BY_MTD is not set
|
|
|
++# CONFIG_ROMFS_BACKED_BY_BOTH is not set
|
|
|
++CONFIG_ROMFS_ON_BLOCK=y
|
|
|
++CONFIG_SYSV_FS=m
|
|
|
++CONFIG_UFS_FS=m
|
|
|
++# CONFIG_UFS_FS_WRITE is not set
|
|
|
++# CONFIG_UFS_DEBUG is not set
|
|
|
++# CONFIG_NILFS2_FS is not set
|
|
|
++CONFIG_NETWORK_FILESYSTEMS=y
|
|
|
++CONFIG_NFS_FS=m
|
|
|
++CONFIG_NFS_V3=y
|
|
|
++CONFIG_NFS_V3_ACL=y
|
|
|
++CONFIG_NFS_V4=y
|
|
|
++CONFIG_NFSD=m
|
|
|
++CONFIG_NFSD_V2_ACL=y
|
|
|
++CONFIG_NFSD_V3=y
|
|
|
++CONFIG_NFSD_V3_ACL=y
|
|
|
++CONFIG_NFSD_V4=y
|
|
|
++CONFIG_LOCKD=m
|
|
|
++CONFIG_LOCKD_V4=y
|
|
|
++CONFIG_EXPORTFS=m
|
|
|
++CONFIG_NFS_ACL_SUPPORT=m
|
|
|
++CONFIG_NFS_COMMON=y
|
|
|
++CONFIG_SUNRPC=m
|
|
|
++CONFIG_SUNRPC_GSS=m
|
|
|
++CONFIG_RPCSEC_GSS_KRB5=m
|
|
|
++CONFIG_RPCSEC_GSS_SPKM3=m
|
|
|
++CONFIG_SMB_FS=m
|
|
|
++# CONFIG_SMB_NLS_DEFAULT is not set
|
|
|
++CONFIG_CIFS=m
|
|
|
++# CONFIG_CIFS_STATS is not set
|
|
|
++# CONFIG_CIFS_WEAK_PW_HASH is not set
|
|
|
++# CONFIG_CIFS_UPCALL is not set
|
|
|
++# CONFIG_CIFS_XATTR is not set
|
|
|
++# CONFIG_CIFS_DEBUG2 is not set
|
|
|
++# CONFIG_CIFS_DFS_UPCALL is not set
|
|
|
++# CONFIG_CIFS_EXPERIMENTAL is not set
|
|
|
++CONFIG_NCP_FS=m
|
|
|
++CONFIG_NCPFS_PACKET_SIGNING=y
|
|
|
++CONFIG_NCPFS_IOCTL_LOCKING=y
|
|
|
++CONFIG_NCPFS_STRONG=y
|
|
|
++CONFIG_NCPFS_NFS_NS=y
|
|
|
++CONFIG_NCPFS_OS2_NS=y
|
|
|
++# CONFIG_NCPFS_SMALLDOS is not set
|
|
|
++CONFIG_NCPFS_NLS=y
|
|
|
++CONFIG_NCPFS_EXTRAS=y
|
|
|
++CONFIG_CODA_FS=m
|
|
|
++CONFIG_AFS_FS=m
|
|
|
++# CONFIG_AFS_DEBUG is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Partition Types
|
|
|
++#
|
|
|
++CONFIG_PARTITION_ADVANCED=y
|
|
|
++CONFIG_ACORN_PARTITION=y
|
|
|
++# CONFIG_ACORN_PARTITION_CUMANA is not set
|
|
|
++# CONFIG_ACORN_PARTITION_EESOX is not set
|
|
|
++CONFIG_ACORN_PARTITION_ICS=y
|
|
|
++# CONFIG_ACORN_PARTITION_ADFS is not set
|
|
|
++# CONFIG_ACORN_PARTITION_POWERTEC is not set
|
|
|
++CONFIG_ACORN_PARTITION_RISCIX=y
|
|
|
++CONFIG_OSF_PARTITION=y
|
|
|
++CONFIG_AMIGA_PARTITION=y
|
|
|
++CONFIG_ATARI_PARTITION=y
|
|
|
++CONFIG_MAC_PARTITION=y
|
|
|
++CONFIG_MSDOS_PARTITION=y
|
|
|
++CONFIG_BSD_DISKLABEL=y
|
|
|
++CONFIG_MINIX_SUBPARTITION=y
|
|
|
++CONFIG_SOLARIS_X86_PARTITION=y
|
|
|
++CONFIG_UNIXWARE_DISKLABEL=y
|
|
|
++CONFIG_LDM_PARTITION=y
|
|
|
++# CONFIG_LDM_DEBUG is not set
|
|
|
++CONFIG_SGI_PARTITION=y
|
|
|
++CONFIG_ULTRIX_PARTITION=y
|
|
|
++CONFIG_SUN_PARTITION=y
|
|
|
++CONFIG_KARMA_PARTITION=y
|
|
|
++CONFIG_EFI_PARTITION=y
|
|
|
++# CONFIG_SYSV68_PARTITION is not set
|
|
|
++CONFIG_NLS=y
|
|
|
++CONFIG_NLS_DEFAULT="utf-8"
|
|
|
++CONFIG_NLS_CODEPAGE_437=m
|
|
|
++# CONFIG_NLS_CODEPAGE_737 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_775 is not set
|
|
|
++CONFIG_NLS_CODEPAGE_850=m
|
|
|
++# CONFIG_NLS_CODEPAGE_852 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_855 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_857 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_860 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_861 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_862 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_863 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_864 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_865 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_866 is not set
|
|
|
++# CONFIG_NLS_CODEPAGE_869 is not set
|
|
|
++CONFIG_NLS_CODEPAGE_936=m
|
|
|
++CONFIG_NLS_CODEPAGE_950=m
|
|
|
++CONFIG_NLS_CODEPAGE_932=m
|
|
|
++CONFIG_NLS_CODEPAGE_949=m
|
|
|
++# CONFIG_NLS_CODEPAGE_874 is not set
|
|
|
++# CONFIG_NLS_ISO8859_8 is not set
|
|
|
++CONFIG_NLS_CODEPAGE_1250=m
|
|
|
++CONFIG_NLS_CODEPAGE_1251=m
|
|
|
++CONFIG_NLS_ASCII=m
|
|
|
++# CONFIG_NLS_ISO8859_1 is not set
|
|
|
++# CONFIG_NLS_ISO8859_2 is not set
|
|
|
++# CONFIG_NLS_ISO8859_3 is not set
|
|
|
++# CONFIG_NLS_ISO8859_4 is not set
|
|
|
++# CONFIG_NLS_ISO8859_5 is not set
|
|
|
++# CONFIG_NLS_ISO8859_6 is not set
|
|
|
++# CONFIG_NLS_ISO8859_7 is not set
|
|
|
++# CONFIG_NLS_ISO8859_9 is not set
|
|
|
++# CONFIG_NLS_ISO8859_13 is not set
|
|
|
++# CONFIG_NLS_ISO8859_14 is not set
|
|
|
++# CONFIG_NLS_ISO8859_15 is not set
|
|
|
++CONFIG_NLS_KOI8_R=m
|
|
|
++CONFIG_NLS_KOI8_U=m
|
|
|
++CONFIG_NLS_UTF8=m
|
|
|
++# CONFIG_DLM is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Kernel hacking
|
|
|
++#
|
|
|
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
|
|
++# CONFIG_PRINTK_TIME is not set
|
|
|
++CONFIG_ENABLE_WARN_DEPRECATED=y
|
|
|
++CONFIG_ENABLE_MUST_CHECK=y
|
|
|
++CONFIG_FRAME_WARN=1024
|
|
|
++CONFIG_MAGIC_SYSRQ=y
|
|
|
++CONFIG_UNUSED_SYMBOLS=y
|
|
|
++CONFIG_DEBUG_FS=y
|
|
|
++# CONFIG_HEADERS_CHECK is not set
|
|
|
++# CONFIG_DEBUG_KERNEL is not set
|
|
|
++CONFIG_STACKTRACE=y
|
|
|
++# CONFIG_DEBUG_MEMORY_INIT is not set
|
|
|
++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
|
++CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
|
++CONFIG_NOP_TRACER=y
|
|
|
++CONFIG_RING_BUFFER=y
|
|
|
++CONFIG_TRACING=y
|
|
|
++CONFIG_TRACING_SUPPORT=y
|
|
|
++
|
|
|
++#
|
|
|
++# Tracers
|
|
|
++#
|
|
|
++# CONFIG_IRQSOFF_TRACER is not set
|
|
|
++# CONFIG_SCHED_TRACER is not set
|
|
|
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
|
|
++# CONFIG_EVENT_TRACER is not set
|
|
|
++# CONFIG_BOOT_TRACER is not set
|
|
|
++# CONFIG_TRACE_BRANCH_PROFILING is not set
|
|
|
++# CONFIG_KMEMTRACE is not set
|
|
|
++# CONFIG_WORKQUEUE_TRACER is not set
|
|
|
++# CONFIG_BLK_DEV_IO_TRACE is not set
|
|
|
++# CONFIG_FTRACE_STARTUP_TEST is not set
|
|
|
++# CONFIG_DYNAMIC_DEBUG is not set
|
|
|
++# CONFIG_SAMPLES is not set
|
|
|
++CONFIG_HAVE_ARCH_KGDB=y
|
|
|
++CONFIG_CMDLINE=""
|
|
|
++
|
|
|
++#
|
|
|
++# Security options
|
|
|
++#
|
|
|
++CONFIG_KEYS=y
|
|
|
++# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
|
|
++CONFIG_SECURITY=y
|
|
|
++# CONFIG_SECURITYFS is not set
|
|
|
++CONFIG_SECURITY_NETWORK=y
|
|
|
++CONFIG_SECURITY_NETWORK_XFRM=y
|
|
|
++# CONFIG_SECURITY_PATH is not set
|
|
|
++# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
|
|
++# CONFIG_SECURITY_ROOTPLUG is not set
|
|
|
++CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
|
|
|
++CONFIG_SECURITY_SELINUX=y
|
|
|
++CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
|
|
++CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
|
|
++CONFIG_SECURITY_SELINUX_DISABLE=y
|
|
|
++CONFIG_SECURITY_SELINUX_DEVELOP=y
|
|
|
++CONFIG_SECURITY_SELINUX_AVC_STATS=y
|
|
|
++CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
|
|
|
++# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
|
|
|
++# CONFIG_SECURITY_TOMOYO is not set
|
|
|
++CONFIG_XOR_BLOCKS=m
|
|
|
++CONFIG_ASYNC_CORE=m
|
|
|
++CONFIG_ASYNC_MEMCPY=m
|
|
|
++CONFIG_ASYNC_XOR=m
|
|
|
++CONFIG_CRYPTO=y
|
|
|
++
|
|
|
++#
|
|
|
++# Crypto core or helper
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_FIPS is not set
|
|
|
++CONFIG_CRYPTO_ALGAPI=y
|
|
|
++CONFIG_CRYPTO_ALGAPI2=y
|
|
|
++CONFIG_CRYPTO_AEAD=m
|
|
|
++CONFIG_CRYPTO_AEAD2=y
|
|
|
++CONFIG_CRYPTO_BLKCIPHER=y
|
|
|
++CONFIG_CRYPTO_BLKCIPHER2=y
|
|
|
++CONFIG_CRYPTO_HASH=y
|
|
|
++CONFIG_CRYPTO_HASH2=y
|
|
|
++CONFIG_CRYPTO_RNG2=y
|
|
|
++CONFIG_CRYPTO_PCOMP=y
|
|
|
++CONFIG_CRYPTO_MANAGER=y
|
|
|
++CONFIG_CRYPTO_MANAGER2=y
|
|
|
++# CONFIG_CRYPTO_GF128MUL is not set
|
|
|
++CONFIG_CRYPTO_NULL=m
|
|
|
++CONFIG_CRYPTO_WORKQUEUE=y
|
|
|
++# CONFIG_CRYPTO_CRYPTD is not set
|
|
|
++CONFIG_CRYPTO_AUTHENC=m
|
|
|
++CONFIG_CRYPTO_TEST=m
|
|
|
++
|
|
|
++#
|
|
|
++# Authenticated Encryption with Associated Data
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_CCM is not set
|
|
|
++# CONFIG_CRYPTO_GCM is not set
|
|
|
++# CONFIG_CRYPTO_SEQIV is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Block modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CBC=m
|
|
|
++# CONFIG_CRYPTO_CTR is not set
|
|
|
++# CONFIG_CRYPTO_CTS is not set
|
|
|
++CONFIG_CRYPTO_ECB=y
|
|
|
++# CONFIG_CRYPTO_LRW is not set
|
|
|
++# CONFIG_CRYPTO_PCBC is not set
|
|
|
++# CONFIG_CRYPTO_XTS is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Hash modes
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_HMAC=y
|
|
|
++# CONFIG_CRYPTO_XCBC is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Digest
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_CRC32C=m
|
|
|
++CONFIG_CRYPTO_MD4=m
|
|
|
++CONFIG_CRYPTO_MD5=y
|
|
|
++CONFIG_CRYPTO_MICHAEL_MIC=m
|
|
|
++# CONFIG_CRYPTO_RMD128 is not set
|
|
|
++# CONFIG_CRYPTO_RMD160 is not set
|
|
|
++# CONFIG_CRYPTO_RMD256 is not set
|
|
|
++# CONFIG_CRYPTO_RMD320 is not set
|
|
|
++CONFIG_CRYPTO_SHA1=m
|
|
|
++CONFIG_CRYPTO_SHA256=m
|
|
|
++CONFIG_CRYPTO_SHA512=m
|
|
|
++CONFIG_CRYPTO_TGR192=m
|
|
|
++CONFIG_CRYPTO_WP512=m
|
|
|
++
|
|
|
++#
|
|
|
++# Ciphers
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_AES=y
|
|
|
++CONFIG_CRYPTO_ANUBIS=m
|
|
|
++CONFIG_CRYPTO_ARC4=y
|
|
|
++CONFIG_CRYPTO_BLOWFISH=m
|
|
|
++# CONFIG_CRYPTO_CAMELLIA is not set
|
|
|
++CONFIG_CRYPTO_CAST5=m
|
|
|
++CONFIG_CRYPTO_CAST6=m
|
|
|
++CONFIG_CRYPTO_DES=m
|
|
|
++# CONFIG_CRYPTO_FCRYPT is not set
|
|
|
++CONFIG_CRYPTO_KHAZAD=m
|
|
|
++# CONFIG_CRYPTO_SALSA20 is not set
|
|
|
++# CONFIG_CRYPTO_SEED is not set
|
|
|
++CONFIG_CRYPTO_SERPENT=m
|
|
|
++CONFIG_CRYPTO_TEA=m
|
|
|
++CONFIG_CRYPTO_TWOFISH=m
|
|
|
++CONFIG_CRYPTO_TWOFISH_COMMON=m
|
|
|
++
|
|
|
++#
|
|
|
++# Compression
|
|
|
++#
|
|
|
++CONFIG_CRYPTO_DEFLATE=m
|
|
|
++# CONFIG_CRYPTO_ZLIB is not set
|
|
|
++# CONFIG_CRYPTO_LZO is not set
|
|
|
++
|
|
|
++#
|
|
|
++# Random Number Generation
|
|
|
++#
|
|
|
++# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
|
|
++CONFIG_CRYPTO_HW=y
|
|
|
++# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
|
|
++CONFIG_BINARY_PRINTF=y
|
|
|
++
|
|
|
++#
|
|
|
++# Library routines
|
|
|
++#
|
|
|
++CONFIG_BITREVERSE=y
|
|
|
++CONFIG_GENERIC_FIND_LAST_BIT=y
|
|
|
++CONFIG_CRC_CCITT=m
|
|
|
++CONFIG_CRC16=m
|
|
|
++# CONFIG_CRC_T10DIF is not set
|
|
|
++CONFIG_CRC_ITU_T=m
|
|
|
++CONFIG_CRC32=y
|
|
|
++# CONFIG_CRC7 is not set
|
|
|
++CONFIG_LIBCRC32C=m
|
|
|
++CONFIG_AUDIT_GENERIC=y
|
|
|
++CONFIG_ZLIB_INFLATE=y
|
|
|
++CONFIG_ZLIB_DEFLATE=m
|
|
|
++CONFIG_DECOMPRESS_GZIP=y
|
|
|
++CONFIG_TEXTSEARCH=y
|
|
|
++CONFIG_TEXTSEARCH_KMP=m
|
|
|
++CONFIG_TEXTSEARCH_BM=m
|
|
|
++CONFIG_TEXTSEARCH_FSM=m
|
|
|
++CONFIG_HAS_IOMEM=y
|
|
|
++CONFIG_HAS_IOPORT=y
|
|
|
++CONFIG_HAS_DMA=y
|
|
|
++CONFIG_NLATTR=y
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/bootinfo.h rt4ls/arch/mips/include/asm/bootinfo.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/bootinfo.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/bootinfo.h 2009-06-12 16:27:08.306407755 +0200
|
|
|
+@@ -7,6 +7,7 @@
|
|
|
+ * Copyright (C) 1995, 1996 Andreas Busse
|
|
|
+ * Copyright (C) 1995, 1996 Stoned Elipot
|
|
|
+ * Copyright (C) 1995, 1996 Paul M. Antoine.
|
|
|
++ * Copyright (C) 2009 Zhang Le
|
|
|
+ */
|
|
|
+ #ifndef _ASM_BOOTINFO_H
|
|
|
+ #define _ASM_BOOTINFO_H
|
|
|
+@@ -57,6 +58,16 @@
|
|
|
+ #define MACH_MIKROTIK_RB532 0 /* Mikrotik RouterBoard 532 */
|
|
|
+ #define MACH_MIKROTIK_RB532A 1 /* Mikrotik RouterBoard 532A */
|
|
|
+
|
|
|
++/*
|
|
|
++ * Valid machtype for group Loongson
|
|
|
++ */
|
|
|
++#define MACH_LOONGSON_UNKNOWN 0
|
|
|
++#define MACH_LEMOTE_FL2E 1
|
|
|
++#define MACH_LEMOTE_FL2F 2
|
|
|
++#define MACH_LEMOTE_YL2F89 3
|
|
|
++#define MACH_LEMOTE_YL2F7 4
|
|
|
++#define MACH_LOONGSON_END 5
|
|
|
++
|
|
|
+ #define CL_SIZE COMMAND_LINE_SIZE
|
|
|
+
|
|
|
+ extern char *system_type;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h rt4ls/arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,59 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
+- * License. See the file "COPYING" in the main directory of this archive
|
|
|
+- * for more details.
|
|
|
+- *
|
|
|
+- * Copyright (C) 2009 Wu Zhangjin <wuzj@lemote.com>
|
|
|
+- * Copyright (C) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
+- * Copyright (C) 2009 Zhang Le <r0bertz@gentoo.org>
|
|
|
+- *
|
|
|
+- * reference: /proc/cpuinfo,
|
|
|
+- * arch/mips/kernel/cpu-probe.c(cpu_probe_legacy),
|
|
|
+- * arch/mips/kernel/proc.c(show_cpuinfo),
|
|
|
+- * loongson2f user manual.
|
|
|
+- */
|
|
|
+-
|
|
|
+-#ifndef __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H
|
|
|
+-#define __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H
|
|
|
+-
|
|
|
+-#define cpu_dcache_line_size() 32
|
|
|
+-#define cpu_icache_line_size() 32
|
|
|
+-#define cpu_scache_line_size() 32
|
|
|
+-
|
|
|
+-
|
|
|
+-#define cpu_has_32fpr 1
|
|
|
+-#define cpu_has_3k_cache 0
|
|
|
+-#define cpu_has_4k_cache 1
|
|
|
+-#define cpu_has_4kex 1
|
|
|
+-#define cpu_has_64bits 1
|
|
|
+-#define cpu_has_cache_cdex_p 0
|
|
|
+-#define cpu_has_cache_cdex_s 0
|
|
|
+-#define cpu_has_counter 1
|
|
|
+-#define cpu_has_dc_aliases 1
|
|
|
+-#define cpu_has_divec 0
|
|
|
+-#define cpu_has_dsp 0
|
|
|
+-#define cpu_has_ejtag 0
|
|
|
+-#define cpu_has_fpu 1
|
|
|
+-#define cpu_has_ic_fills_f_dc 0
|
|
|
+-#define cpu_has_inclusive_pcaches 1
|
|
|
+-#define cpu_has_llsc 1
|
|
|
+-#define cpu_has_mcheck 0
|
|
|
+-#define cpu_has_mdmx 0
|
|
|
+-#define cpu_has_mips16 0
|
|
|
+-#define cpu_has_mips32r1 0
|
|
|
+-#define cpu_has_mips32r2 0
|
|
|
+-#define cpu_has_mips3d 0
|
|
|
+-#define cpu_has_mips64r1 0
|
|
|
+-#define cpu_has_mips64r2 0
|
|
|
+-#define cpu_has_mipsmt 0
|
|
|
+-#define cpu_has_prefetch 0
|
|
|
+-#define cpu_has_smartmips 0
|
|
|
+-#define cpu_has_tlb 1
|
|
|
+-#define cpu_has_tx39_cache 0
|
|
|
+-#define cpu_has_userlocal 0
|
|
|
+-#define cpu_has_vce 0
|
|
|
+-#define cpu_has_vtag_icache 0
|
|
|
+-#define cpu_has_watch 1
|
|
|
+-#define cpu_icache_snoops_remote_store 1
|
|
|
+-
|
|
|
+-#endif /* __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-lemote/dma-coherence.h rt4ls/arch/mips/include/asm/mach-lemote/dma-coherence.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-lemote/dma-coherence.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-lemote/dma-coherence.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,66 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
+- * License. See the file "COPYING" in the main directory of this archive
|
|
|
+- * for more details.
|
|
|
+- *
|
|
|
+- * Copyright (C) 2006, 07 Ralf Baechle <ralf@linux-mips.org>
|
|
|
+- * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#ifndef __ASM_MACH_LEMOTE_DMA_COHERENCE_H
|
|
|
+-#define __ASM_MACH_LEMOTE_DMA_COHERENCE_H
|
|
|
+-
|
|
|
+-struct device;
|
|
|
+-
|
|
|
+-static inline dma_addr_t plat_map_dma_mem(struct device *dev, void *addr,
|
|
|
+- size_t size)
|
|
|
+-{
|
|
|
+- return virt_to_phys(addr) | 0x80000000;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline dma_addr_t plat_map_dma_mem_page(struct device *dev,
|
|
|
+- struct page *page)
|
|
|
+-{
|
|
|
+- return page_to_phys(page) | 0x80000000;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline unsigned long plat_dma_addr_to_phys(dma_addr_t dma_addr)
|
|
|
+-{
|
|
|
+- return dma_addr & 0x7fffffff;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline void plat_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr)
|
|
|
+-{
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline int plat_dma_supported(struct device *dev, u64 mask)
|
|
|
+-{
|
|
|
+- /*
|
|
|
+- * we fall back to GFP_DMA when the mask isn't all 1s,
|
|
|
+- * so we can't guarantee allocations that must be
|
|
|
+- * within a tighter range than GFP_DMA..
|
|
|
+- */
|
|
|
+- if (mask < DMA_BIT_MASK(24))
|
|
|
+- return 0;
|
|
|
+-
|
|
|
+- return 1;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline void plat_extra_sync_for_device(struct device *dev)
|
|
|
+-{
|
|
|
+- return;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline int plat_dma_mapping_error(struct device *dev,
|
|
|
+- dma_addr_t dma_addr)
|
|
|
+-{
|
|
|
+- return 0;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline int plat_device_is_coherent(struct device *dev)
|
|
|
+-{
|
|
|
+- return 0;
|
|
|
+-}
|
|
|
+-
|
|
|
+-#endif /* __ASM_MACH_LEMOTE_DMA_COHERENCE_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-lemote/mc146818rtc.h rt4ls/arch/mips/include/asm/mach-lemote/mc146818rtc.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-lemote/mc146818rtc.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-lemote/mc146818rtc.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,36 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
+- * License. See the file "COPYING" in the main directory of this archive
|
|
|
+- * for more details.
|
|
|
+- *
|
|
|
+- * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle (ralf@linux-mips.org)
|
|
|
+- *
|
|
|
+- * RTC routines for PC style attached Dallas chip.
|
|
|
+- */
|
|
|
+-#ifndef __ASM_MACH_LEMOTE_MC146818RTC_H
|
|
|
+-#define __ASM_MACH_LEMOTE_MC146818RTC_H
|
|
|
+-
|
|
|
+-#include <linux/io.h>
|
|
|
+-
|
|
|
+-#define RTC_PORT(x) (0x70 + (x))
|
|
|
+-#define RTC_IRQ 8
|
|
|
+-
|
|
|
+-static inline unsigned char CMOS_READ(unsigned long addr)
|
|
|
+-{
|
|
|
+- outb_p(addr, RTC_PORT(0));
|
|
|
+- return inb_p(RTC_PORT(1));
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
|
|
|
+-{
|
|
|
+- outb_p(addr, RTC_PORT(0));
|
|
|
+- outb_p(data, RTC_PORT(1));
|
|
|
+-}
|
|
|
+-
|
|
|
+-#define RTC_ALWAYS_BCD 0
|
|
|
+-
|
|
|
+-#ifndef mc146818_decode_year
|
|
|
+-#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1970)
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-#endif /* __ASM_MACH_LEMOTE_MC146818RTC_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-lemote/pci.h rt4ls/arch/mips/include/asm/mach-lemote/pci.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-lemote/pci.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-lemote/pci.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,30 +0,0 @@
|
|
|
+-/*
|
|
|
+- * Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org>
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it
|
|
|
+- * and/or modify it under the terms of the GNU General
|
|
|
+- * Public License as published by the Free Software
|
|
|
+- * Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * This program is distributed in the hope that it will be
|
|
|
+- * useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
|
+- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
+- * PURPOSE. See the GNU General Public License for more
|
|
|
+- * details.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public
|
|
|
+- * License along with this program; if not, write to the Free
|
|
|
+- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
|
|
|
+- * 02139, USA.
|
|
|
+- */
|
|
|
+-
|
|
|
+-#ifndef _LEMOTE_PCI_H_
|
|
|
+-#define _LEMOTE_PCI_H_
|
|
|
+-
|
|
|
+-#define LOONGSON2E_PCI_MEM_START 0x14000000UL
|
|
|
+-#define LOONGSON2E_PCI_MEM_END 0x1fffffffUL
|
|
|
+-#define LOONGSON2E_PCI_IO_START 0x00004000UL
|
|
|
+-#define LOONGSON2E_IO_PORT_BASE 0x1fd00000UL
|
|
|
+-
|
|
|
+-#endif /* !_LEMOTE_PCI_H_ */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-lemote/war.h rt4ls/arch/mips/include/asm/mach-lemote/war.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-lemote/war.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-lemote/war.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,25 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
+- * License. See the file "COPYING" in the main directory of this archive
|
|
|
+- * for more details.
|
|
|
+- *
|
|
|
+- * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
|
|
|
+- */
|
|
|
+-#ifndef __ASM_MIPS_MACH_LEMOTE_WAR_H
|
|
|
+-#define __ASM_MIPS_MACH_LEMOTE_WAR_H
|
|
|
+-
|
|
|
+-#define R4600_V1_INDEX_ICACHEOP_WAR 0
|
|
|
+-#define R4600_V1_HIT_CACHEOP_WAR 0
|
|
|
+-#define R4600_V2_HIT_CACHEOP_WAR 0
|
|
|
+-#define R5432_CP0_INTERRUPT_WAR 0
|
|
|
+-#define BCM1250_M3_WAR 0
|
|
|
+-#define SIBYTE_1956_WAR 0
|
|
|
+-#define MIPS4K_ICACHE_REFILL_WAR 0
|
|
|
+-#define MIPS_CACHE_SYNC_WAR 0
|
|
|
+-#define TX49XX_ICACHE_INDEX_INV_WAR 0
|
|
|
+-#define RM9000_CDEX_SMP_WAR 0
|
|
|
+-#define ICACHE_REFILLS_WORKAROUND_WAR 0
|
|
|
+-#define R10000_LLSC_WAR 0
|
|
|
+-#define MIPS34K_MISSED_ITLB_WAR 0
|
|
|
+-
|
|
|
+-#endif /* __ASM_MIPS_MACH_LEMOTE_WAR_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/clock.h rt4ls/arch/mips/include/asm/mach-loongson/clock.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/clock.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/clock.h 2009-06-12 16:27:08.506427365 +0200
|
|
|
+@@ -0,0 +1,64 @@
|
|
|
++#ifndef __ASM_MIPS_CLOCK_H
|
|
|
++#define __ASM_MIPS_CLOCK_H
|
|
|
++
|
|
|
++#include <linux/kref.h>
|
|
|
++#include <linux/list.h>
|
|
|
++#include <linux/seq_file.h>
|
|
|
++#include <linux/clk.h>
|
|
|
++
|
|
|
++extern void (*cpu_wait) (void);
|
|
|
++
|
|
|
++struct clk;
|
|
|
++
|
|
|
++struct clk_ops {
|
|
|
++ void (*init) (struct clk *clk);
|
|
|
++ void (*enable) (struct clk *clk);
|
|
|
++ void (*disable) (struct clk *clk);
|
|
|
++ void (*recalc) (struct clk *clk);
|
|
|
++ int (*set_rate) (struct clk *clk, unsigned long rate, int algo_id);
|
|
|
++ long (*round_rate) (struct clk *clk, unsigned long rate);
|
|
|
++};
|
|
|
++
|
|
|
++struct clk {
|
|
|
++ struct list_head node;
|
|
|
++ const char *name;
|
|
|
++ int id;
|
|
|
++ struct module *owner;
|
|
|
++
|
|
|
++ struct clk *parent;
|
|
|
++ struct clk_ops *ops;
|
|
|
++
|
|
|
++ struct kref kref;
|
|
|
++
|
|
|
++ unsigned long rate;
|
|
|
++ unsigned long flags;
|
|
|
++};
|
|
|
++
|
|
|
++#define CLK_ALWAYS_ENABLED (1 << 0)
|
|
|
++#define CLK_RATE_PROPAGATES (1 << 1)
|
|
|
++
|
|
|
++/* Should be defined by processor-specific code */
|
|
|
++void arch_init_clk_ops(struct clk_ops **, int type);
|
|
|
++
|
|
|
++int clk_init(void);
|
|
|
++
|
|
|
++int __clk_enable(struct clk *);
|
|
|
++void __clk_disable(struct clk *);
|
|
|
++
|
|
|
++void clk_recalc_rate(struct clk *);
|
|
|
++
|
|
|
++int clk_register(struct clk *);
|
|
|
++void clk_unregister(struct clk *);
|
|
|
++
|
|
|
++/* the exported API, in addition to clk_set_rate */
|
|
|
++/**
|
|
|
++ * clk_set_rate_ex - set the clock rate for a clock source, with additional parameter
|
|
|
++ * @clk: clock source
|
|
|
++ * @rate: desired clock rate in Hz
|
|
|
++ * @algo_id: algorithm id to be passed down to ops->set_rate
|
|
|
++ *
|
|
|
++ * Returns success (0) or negative errno.
|
|
|
++ */
|
|
|
++int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id);
|
|
|
++
|
|
|
++#endif /* __ASM_MIPS_CLOCK_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cmdline.h rt4ls/arch/mips/include/asm/mach-loongson/cmdline.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cmdline.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cmdline.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,9 @@
|
|
|
++/* machine-specific command line initialization */
|
|
|
++#ifdef CONFIG_SYS_HAS_MACH_PROM_INIT_CMDLINE
|
|
|
++extern void __init mach_prom_init_cmdline(void);
|
|
|
++#else
|
|
|
++void __init mach_prom_init_cmdline(void)
|
|
|
++{
|
|
|
++}
|
|
|
++#endif
|
|
|
++
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h rt4ls/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,59 @@
|
|
|
++/*
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ * Copyright (C) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ * Copyright (C) 2009 Zhang Le <r0bertz@gentoo.org>
|
|
|
++ *
|
|
|
++ * reference: /proc/cpuinfo,
|
|
|
++ * arch/mips/kernel/cpu-probe.c(cpu_probe_legacy),
|
|
|
++ * arch/mips/kernel/proc.c(show_cpuinfo),
|
|
|
++ * loongson2f user manual.
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H
|
|
|
++#define __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H
|
|
|
++
|
|
|
++#define cpu_dcache_line_size() 32
|
|
|
++#define cpu_icache_line_size() 32
|
|
|
++#define cpu_scache_line_size() 32
|
|
|
++
|
|
|
++
|
|
|
++#define cpu_has_32fpr 1
|
|
|
++#define cpu_has_3k_cache 0
|
|
|
++#define cpu_has_4k_cache 1
|
|
|
++#define cpu_has_4kex 1
|
|
|
++#define cpu_has_64bits 1
|
|
|
++#define cpu_has_cache_cdex_p 0
|
|
|
++#define cpu_has_cache_cdex_s 0
|
|
|
++#define cpu_has_counter 1
|
|
|
++#define cpu_has_dc_aliases 1
|
|
|
++#define cpu_has_divec 0
|
|
|
++#define cpu_has_dsp 0
|
|
|
++#define cpu_has_ejtag 0
|
|
|
++#define cpu_has_fpu 1
|
|
|
++#define cpu_has_ic_fills_f_dc 0
|
|
|
++#define cpu_has_inclusive_pcaches 1
|
|
|
++#define cpu_has_llsc 1
|
|
|
++#define cpu_has_mcheck 0
|
|
|
++#define cpu_has_mdmx 0
|
|
|
++#define cpu_has_mips16 0
|
|
|
++#define cpu_has_mips32r1 0
|
|
|
++#define cpu_has_mips32r2 0
|
|
|
++#define cpu_has_mips3d 0
|
|
|
++#define cpu_has_mips64r1 0
|
|
|
++#define cpu_has_mips64r2 0
|
|
|
++#define cpu_has_mipsmt 0
|
|
|
++#define cpu_has_prefetch 0
|
|
|
++#define cpu_has_smartmips 0
|
|
|
++#define cpu_has_tlb 1
|
|
|
++#define cpu_has_tx39_cache 0
|
|
|
++#define cpu_has_userlocal 0
|
|
|
++#define cpu_has_vce 0
|
|
|
++#define cpu_has_vtag_icache 0
|
|
|
++#define cpu_has_watch 1
|
|
|
++#define cpu_icache_snoops_remote_store 1
|
|
|
++
|
|
|
++#endif /* __ASM_MACH_LEMOTE_CPU_FEATURE_OVERRIDES_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,382 @@
|
|
|
++/*
|
|
|
++ * The header file of cs5536 sourth bridge.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu <liujl@lemote.com>
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef _CS5536_H
|
|
|
++#define _CS5536_H
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++
|
|
|
++extern void _rdmsr(u32 msr, u32 *hi, u32 *lo);
|
|
|
++extern void _wrmsr(u32 msr, u32 hi, u32 lo);
|
|
|
++
|
|
|
++/*
|
|
|
++ * MSR module base
|
|
|
++ */
|
|
|
++#define CS5536_SB_MSR_BASE (0x00000000)
|
|
|
++#define CS5536_GLIU_MSR_BASE (0x10000000)
|
|
|
++#define CS5536_ILLEGAL_MSR_BASE (0x20000000)
|
|
|
++#define CS5536_USB_MSR_BASE (0x40000000)
|
|
|
++#define CS5536_IDE_MSR_BASE (0x60000000)
|
|
|
++#define CS5536_DIVIL_MSR_BASE (0x80000000)
|
|
|
++#define CS5536_ACC_MSR_BASE (0xa0000000)
|
|
|
++#define CS5536_UNUSED_MSR_BASE (0xc0000000)
|
|
|
++#define CS5536_GLCP_MSR_BASE (0xe0000000)
|
|
|
++
|
|
|
++#define SB_MSR_REG(offset) (CS5536_SB_MSR_BASE | (offset))
|
|
|
++#define GLIU_MSR_REG(offset) (CS5536_GLIU_MSR_BASE | (offset))
|
|
|
++#define ILLEGAL_MSR_REG(offset) (CS5536_ILLEGAL_MSR_BASE | (offset))
|
|
|
++#define USB_MSR_REG(offset) (CS5536_USB_MSR_BASE | (offset))
|
|
|
++#define IDE_MSR_REG(offset) (CS5536_IDE_MSR_BASE | (offset))
|
|
|
++#define DIVIL_MSR_REG(offset) (CS5536_DIVIL_MSR_BASE | (offset))
|
|
|
++#define ACC_MSR_REG(offset) (CS5536_ACC_MSR_BASE | (offset))
|
|
|
++#define UNUSED_MSR_REG(offset) (CS5536_UNUSED_MSR_BASE | (offset))
|
|
|
++#define GLCP_MSR_REG(offset) (CS5536_GLCP_MSR_BASE | (offset))
|
|
|
++
|
|
|
++/*
|
|
|
++ * BAR SPACE OF VIRTUAL PCI :
|
|
|
++ * range for pci probe use, length is the actual size.
|
|
|
++ */
|
|
|
++/* IO space for all DIVIL modules */
|
|
|
++#define CS5536_IRQ_RANGE 0xffffffe0 /* USERD FOR PCI PROBE */
|
|
|
++#define CS5536_IRQ_LENGTH 0x20 /* THE REGS ACTUAL LENGTH */
|
|
|
++#define CS5536_SMB_RANGE 0xfffffff8
|
|
|
++#define CS5536_SMB_LENGTH 0x08
|
|
|
++#define CS5536_GPIO_RANGE 0xffffff00
|
|
|
++#define CS5536_GPIO_LENGTH 0x100
|
|
|
++#define CS5536_MFGPT_RANGE 0xffffffc0
|
|
|
++#define CS5536_MFGPT_LENGTH 0x40
|
|
|
++#define CS5536_ACPI_RANGE 0xffffffe0
|
|
|
++#define CS5536_ACPI_LENGTH 0x20
|
|
|
++#define CS5536_PMS_RANGE 0xffffff80
|
|
|
++#define CS5536_PMS_LENGTH 0x80
|
|
|
++/* MEM space for 4KB nand flash; IO space for 16B nor flash. */
|
|
|
++#ifdef CS5536_NOR_FLASH
|
|
|
++#define CS5536_FLSH_LENGTH 0x10
|
|
|
++#define CS5536_FLSH_RANGE 0xfffffff0
|
|
|
++#else
|
|
|
++#define CS5536_FLSH_RANGE 0xfffff000
|
|
|
++#define CS5536_FLSH_LENGTH 0x1000
|
|
|
++#endif
|
|
|
++/* IO space for IDE */
|
|
|
++#define CS5536_IDE_RANGE 0xfffffff0
|
|
|
++#define CS5536_IDE_LENGTH 0x10
|
|
|
++/* IO space for ACC */
|
|
|
++#define CS5536_ACC_RANGE 0xffffff80
|
|
|
++#define CS5536_ACC_LENGTH 0x80
|
|
|
++/* MEM space for ALL USB modules */
|
|
|
++#define CS5536_OHCI_RANGE 0xfffff000
|
|
|
++#define CS5536_OHCI_LENGTH 0x1000
|
|
|
++#define CS5536_EHCI_RANGE 0xfffff000
|
|
|
++#define CS5536_EHCI_LENGTH 0x1000
|
|
|
++#define CS5536_UDC_RANGE 0xffffe000
|
|
|
++#define CS5536_UDC_LENGTH 0x2000
|
|
|
++#define CS5536_OTG_RANGE 0xfffff000
|
|
|
++#define CS5536_OTG_LENGTH 0x1000
|
|
|
++
|
|
|
++/*
|
|
|
++ * PCI MSR ACCESS
|
|
|
++ */
|
|
|
++#define PCI_MSR_CTRL 0xF0
|
|
|
++#define PCI_MSR_ADDR 0xF4
|
|
|
++#define PCI_MSR_DATA_LO 0xF8
|
|
|
++#define PCI_MSR_DATA_HI 0xFC
|
|
|
++
|
|
|
++/**************** MSR *****************************/
|
|
|
++
|
|
|
++/*
|
|
|
++ * GLIU STANDARD MSR
|
|
|
++ */
|
|
|
++#define GLIU_CAP 0x00
|
|
|
++#define GLIU_CONFIG 0x01
|
|
|
++#define GLIU_SMI 0x02
|
|
|
++#define GLIU_ERROR 0x03
|
|
|
++#define GLIU_PM 0x04
|
|
|
++#define GLIU_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * GLIU SPEC. MSR
|
|
|
++ */
|
|
|
++#define GLIU_P2D_BM0 0x20
|
|
|
++#define GLIU_P2D_BM1 0x21
|
|
|
++#define GLIU_P2D_BM2 0x22
|
|
|
++#define GLIU_P2D_BMK0 0x23
|
|
|
++#define GLIU_P2D_BMK1 0x24
|
|
|
++#define GLIU_P2D_BM3 0x25
|
|
|
++#define GLIU_P2D_BM4 0x26
|
|
|
++#define GLIU_COH 0x80
|
|
|
++#define GLIU_PAE 0x81
|
|
|
++#define GLIU_ARB 0x82
|
|
|
++#define GLIU_ASMI 0x83
|
|
|
++#define GLIU_AERR 0x84
|
|
|
++#define GLIU_DEBUG 0x85
|
|
|
++#define GLIU_PHY_CAP 0x86
|
|
|
++#define GLIU_NOUT_RESP 0x87
|
|
|
++#define GLIU_NOUT_WDATA 0x88
|
|
|
++#define GLIU_WHOAMI 0x8B
|
|
|
++#define GLIU_SLV_DIS 0x8C
|
|
|
++#define GLIU_IOD_BM0 0xE0
|
|
|
++#define GLIU_IOD_BM1 0xE1
|
|
|
++#define GLIU_IOD_BM2 0xE2
|
|
|
++#define GLIU_IOD_BM3 0xE3
|
|
|
++#define GLIU_IOD_BM4 0xE4
|
|
|
++#define GLIU_IOD_BM5 0xE5
|
|
|
++#define GLIU_IOD_BM6 0xE6
|
|
|
++#define GLIU_IOD_BM7 0xE7
|
|
|
++#define GLIU_IOD_BM8 0xE8
|
|
|
++#define GLIU_IOD_BM9 0xE9
|
|
|
++#define GLIU_IOD_SC0 0xEA
|
|
|
++#define GLIU_IOD_SC1 0xEB
|
|
|
++#define GLIU_IOD_SC2 0xEC
|
|
|
++#define GLIU_IOD_SC3 0xED
|
|
|
++#define GLIU_IOD_SC4 0xEE
|
|
|
++#define GLIU_IOD_SC5 0xEF
|
|
|
++#define GLIU_IOD_SC6 0xF0
|
|
|
++#define GLIU_IOD_SC7 0xF1
|
|
|
++
|
|
|
++/*
|
|
|
++ * SB STANDARD
|
|
|
++ */
|
|
|
++#define SB_CAP 0x00
|
|
|
++#define SB_CONFIG 0x01
|
|
|
++#define SB_SMI 0x02
|
|
|
++#define SB_ERROR 0x03
|
|
|
++#define SB_MAR_ERR_EN 0x00000001
|
|
|
++#define SB_TAR_ERR_EN 0x00000002
|
|
|
++#define SB_RSVD_BIT1 0x00000004
|
|
|
++#define SB_EXCEP_ERR_EN 0x00000008
|
|
|
++#define SB_SYSE_ERR_EN 0x00000010
|
|
|
++#define SB_PARE_ERR_EN 0x00000020
|
|
|
++#define SB_TAS_ERR_EN 0x00000040
|
|
|
++#define SB_MAR_ERR_FLAG 0x00010000
|
|
|
++#define SB_TAR_ERR_FLAG 0x00020000
|
|
|
++#define SB_RSVD_BIT2 0x00040000
|
|
|
++#define SB_EXCEP_ERR_FLAG 0x00080000
|
|
|
++#define SB_SYSE_ERR_FLAG 0x00100000
|
|
|
++#define SB_PARE_ERR_FLAG 0x00200000
|
|
|
++#define SB_TAS_ERR_FLAG 0x00400000
|
|
|
++#define SB_PM 0x04
|
|
|
++#define SB_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * SB SPEC.
|
|
|
++ */
|
|
|
++#define SB_CTRL 0x10
|
|
|
++#define SB_R0 0x20
|
|
|
++#define SB_R1 0x21
|
|
|
++#define SB_R2 0x22
|
|
|
++#define SB_R3 0x23
|
|
|
++#define SB_R4 0x24
|
|
|
++#define SB_R5 0x25
|
|
|
++#define SB_R6 0x26
|
|
|
++#define SB_R7 0x27
|
|
|
++#define SB_R8 0x28
|
|
|
++#define SB_R9 0x29
|
|
|
++#define SB_R10 0x2A
|
|
|
++#define SB_R11 0x2B
|
|
|
++#define SB_R12 0x2C
|
|
|
++#define SB_R13 0x2D
|
|
|
++#define SB_R14 0x2E
|
|
|
++#define SB_R15 0x2F
|
|
|
++
|
|
|
++/*
|
|
|
++ * GLCP STANDARD
|
|
|
++ */
|
|
|
++#define GLCP_CAP 0x00
|
|
|
++#define GLCP_CONFIG 0x01
|
|
|
++#define GLCP_SMI 0x02
|
|
|
++#define GLCP_ERROR 0x03
|
|
|
++#define GLCP_PM 0x04
|
|
|
++#define GLCP_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * GLCP SPEC.
|
|
|
++ */
|
|
|
++#define GLCP_CLK_DIS_DELAY 0x08
|
|
|
++#define GLCP_PM_CLK_DISABLE 0x09
|
|
|
++#define GLCP_GLB_PM 0x0B
|
|
|
++#define GLCP_DBG_OUT 0x0C
|
|
|
++#define GLCP_RSVD1 0x0D
|
|
|
++#define GLCP_SOFT_COM 0x0E
|
|
|
++#define SOFT_BAR_SMB_FLAG 0x00000001
|
|
|
++#define SOFT_BAR_GPIO_FLAG 0x00000002
|
|
|
++#define SOFT_BAR_MFGPT_FLAG 0x00000004
|
|
|
++#define SOFT_BAR_IRQ_FLAG 0x00000008
|
|
|
++#define SOFT_BAR_PMS_FLAG 0x00000010
|
|
|
++#define SOFT_BAR_ACPI_FLAG 0x00000020
|
|
|
++#define SOFT_BAR_FLSH0_FLAG 0x00000040
|
|
|
++#define SOFT_BAR_FLSH1_FLAG 0x00000080
|
|
|
++#define SOFT_BAR_FLSH2_FLAG 0x00000100
|
|
|
++#define SOFT_BAR_FLSH3_FLAG 0x00000200
|
|
|
++#define SOFT_BAR_IDE_FLAG 0x00000400
|
|
|
++#define SOFT_BAR_ACC_FLAG 0x00000800
|
|
|
++#define SOFT_BAR_OHCI_FLAG 0x00001000
|
|
|
++#define SOFT_BAR_EHCI_FLAG 0x00002000
|
|
|
++#define SOFT_BAR_UDC_FLAG 0x00004000
|
|
|
++#define SOFT_BAR_OTG_FLAG 0x00008000
|
|
|
++#define GLCP_RSVD2 0x0F
|
|
|
++#define GLCP_CLK_OFF 0x10
|
|
|
++#define GLCP_CLK_ACTIVE 0x11
|
|
|
++#define GLCP_CLK_DISABLE 0x12
|
|
|
++#define GLCP_CLK4ACK 0x13
|
|
|
++#define GLCP_SYS_RST 0x14
|
|
|
++#define GLCP_RSVD3 0x15
|
|
|
++#define GLCP_DBG_CLK_CTRL 0x16
|
|
|
++#define GLCP_CHIP_REV_ID 0x17
|
|
|
++
|
|
|
++/*
|
|
|
++ * DIVIL STANDARD
|
|
|
++ */
|
|
|
++#define DIVIL_CAP 0x00
|
|
|
++#define DIVIL_CONFIG 0x01
|
|
|
++#define DIVIL_SMI 0x02
|
|
|
++#define DIVIL_ERROR 0x03
|
|
|
++#define DIVIL_PM 0x04
|
|
|
++#define DIVIL_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * DIVIL SPEC.
|
|
|
++ */
|
|
|
++#define DIVIL_LBAR_IRQ 0x08
|
|
|
++#define DIVIL_LBAR_KEL 0x09
|
|
|
++#define DIVIL_LBAR_SMB 0x0B
|
|
|
++#define DIVIL_LBAR_GPIO 0x0C
|
|
|
++#define DIVIL_LBAR_MFGPT 0x0D
|
|
|
++#define DIVIL_LBAR_ACPI 0x0E
|
|
|
++#define DIVIL_LBAR_PMS 0x0F
|
|
|
++#define DIVIL_LBAR_FLSH0 0x10
|
|
|
++#define DIVIL_LBAR_FLSH1 0x11
|
|
|
++#define DIVIL_LBAR_FLSH2 0x12
|
|
|
++#define DIVIL_LBAR_FLSH3 0x13
|
|
|
++#define DIVIL_LEG_IO 0x14
|
|
|
++#define DIVIL_BALL_OPTS 0x15
|
|
|
++#define DIVIL_SOFT_IRQ 0x16
|
|
|
++#define DIVIL_SOFT_RESET 0x17
|
|
|
++/* NOR FLASH */
|
|
|
++#define NORF_CTRL 0x18
|
|
|
++#define NORF_T01 0x19
|
|
|
++#define NORF_T23 0x1A
|
|
|
++/* NAND FLASH */
|
|
|
++#define NANDF_DATA 0x1B
|
|
|
++#define NANDF_CTRL 0x1C
|
|
|
++#define NANDF_RSVD 0x1D
|
|
|
++/* KEL Keyboard Emulation Logic */
|
|
|
++#define KEL_CTRL 0x1F
|
|
|
++/* PIC */
|
|
|
++#define PIC_YSEL_LOW 0x20
|
|
|
++#define PIC_YSEL_LOW_USB_SHIFT 8
|
|
|
++#define PIC_YSEL_LOW_ACC_SHIFT 16
|
|
|
++#define PIC_YSEL_LOW_FLASH_SHIFT 24
|
|
|
++#define PIC_YSEL_HIGH 0x21
|
|
|
++#define PIC_ZSEL_LOW 0x22
|
|
|
++#define PIC_ZSEL_HIGH 0x23
|
|
|
++#define PIC_IRQM_PRIM 0x24
|
|
|
++#define PIC_IRQM_LPC 0x25
|
|
|
++#define PIC_XIRR_STS_LOW 0x26
|
|
|
++#define PIC_XIRR_STS_HIGH 0x27
|
|
|
++#define PCI_SHDW 0x34
|
|
|
++/* MFGPT */
|
|
|
++#define MFGPT_IRQ 0x28
|
|
|
++#define MFGPT_NR 0x29
|
|
|
++#define MFGPT_RSVD 0x2A
|
|
|
++#define MFGPT_SETUP 0x2B
|
|
|
++/* FLOPPY */
|
|
|
++#define FLPY_3F2_SHDW 0x30
|
|
|
++#define FLPY_3F7_SHDW 0x31
|
|
|
++#define FLPY_372_SHDW 0x32
|
|
|
++#define FLPY_377_SHDW 0x33
|
|
|
++/* PIT */
|
|
|
++#define PIT_SHDW 0x36
|
|
|
++#define PIT_CNTRL 0x37
|
|
|
++/* UART */
|
|
|
++#define UART1_MOD 0x38
|
|
|
++#define UART1_DONG 0x39
|
|
|
++#define UART1_CONF 0x3A
|
|
|
++#define UART1_RSVD 0x3B
|
|
|
++#define UART2_MOD 0x3C
|
|
|
++#define UART2_DONG 0x3D
|
|
|
++#define UART2_CONF 0x3E
|
|
|
++#define UART2_RSVD 0x3F
|
|
|
++/* DMA */
|
|
|
++#define DIVIL_AC_DMA 0x1E
|
|
|
++#define DMA_MAP 0x40
|
|
|
++#define DMA_SHDW_CH0 0x41
|
|
|
++#define DMA_SHDW_CH1 0x42
|
|
|
++#define DMA_SHDW_CH2 0x43
|
|
|
++#define DMA_SHDW_CH3 0x44
|
|
|
++#define DMA_SHDW_CH4 0x45
|
|
|
++#define DMA_SHDW_CH5 0x46
|
|
|
++#define DMA_SHDW_CH6 0x47
|
|
|
++#define DMA_SHDW_CH7 0x48
|
|
|
++#define DMA_MSK_SHDW 0x49
|
|
|
++/* LPC */
|
|
|
++#define LPC_EADDR 0x4C
|
|
|
++#define LPC_ESTAT 0x4D
|
|
|
++#define LPC_SIRQ 0x4E
|
|
|
++#define LPC_RSVD 0x4F
|
|
|
++/* PMC */
|
|
|
++#define PMC_LTMR 0x50
|
|
|
++#define PMC_RSVD 0x51
|
|
|
++/* RTC */
|
|
|
++#define RTC_RAM_LOCK 0x54
|
|
|
++#define RTC_DOMA_OFFSET 0x55
|
|
|
++#define RTC_MONA_OFFSET 0x56
|
|
|
++#define RTC_CEN_OFFSET 0x57
|
|
|
++
|
|
|
++/*
|
|
|
++ * IDE STANDARD
|
|
|
++ */
|
|
|
++#define IDE_CAP 0x00
|
|
|
++#define IDE_CONFIG 0x01
|
|
|
++#define IDE_SMI 0x02
|
|
|
++#define IDE_ERROR 0x03
|
|
|
++#define IDE_PM 0x04
|
|
|
++#define IDE_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * IDE SPEC.
|
|
|
++ */
|
|
|
++#define IDE_IO_BAR 0x08
|
|
|
++#define IDE_CFG 0x10
|
|
|
++#define IDE_DTC 0x12
|
|
|
++#define IDE_CAST 0x13
|
|
|
++#define IDE_ETC 0x14
|
|
|
++#define IDE_INTERNAL_PM 0x15
|
|
|
++
|
|
|
++/*
|
|
|
++ * ACC STANDARD
|
|
|
++ */
|
|
|
++#define ACC_CAP 0x00
|
|
|
++#define ACC_CONFIG 0x01
|
|
|
++#define ACC_SMI 0x02
|
|
|
++#define ACC_ERROR 0x03
|
|
|
++#define ACC_PM 0x04
|
|
|
++#define ACC_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * USB STANDARD
|
|
|
++ */
|
|
|
++#define USB_CAP 0x00
|
|
|
++#define USB_CONFIG 0x01
|
|
|
++#define USB_SMI 0x02
|
|
|
++#define USB_ERROR 0x03
|
|
|
++#define USB_PM 0x04
|
|
|
++#define USB_DIAG 0x05
|
|
|
++
|
|
|
++/*
|
|
|
++ * USB SPEC.
|
|
|
++ */
|
|
|
++#define USB_OHCI 0x08
|
|
|
++#define USB_EHCI 0x09
|
|
|
++#define USB_UDC 0x0A
|
|
|
++#define USB_OTG 0x0B
|
|
|
++
|
|
|
++/****************** NATIVE ***************************/
|
|
|
++/* GPIO : I/O SPACE; REG : 32BITS */
|
|
|
++#define GPIOL_OUT_VAL 0x00
|
|
|
++#define GPIOL_OUT_EN 0x04
|
|
|
++
|
|
|
++#endif /* _CS5536_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,26 @@
|
|
|
++/*
|
|
|
++ * cs5536 mfgpt header file
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef _CS5536_MFGPT_H
|
|
|
++#define _CS5536_MFGPT_H
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++
|
|
|
++extern void setup_mfgpt_timer(void);
|
|
|
++
|
|
|
++#if 1
|
|
|
++#define MFGPT_TICK_RATE 14318000
|
|
|
++#else
|
|
|
++#define MFGPT_TICK_RATE (14318180 / 8)
|
|
|
++#endif
|
|
|
++#define COMPARE ((MFGPT_TICK_RATE + HZ/2) / HZ)
|
|
|
++
|
|
|
++#define CS5536_MFGPT_INTR 5
|
|
|
++
|
|
|
++#define MFGPT_BASE mfgpt_base
|
|
|
++#define MFGPT0_CMP2 (MFGPT_BASE + 2)
|
|
|
++#define MFGPT0_CNT (MFGPT_BASE + 4)
|
|
|
++#define MFGPT0_SETUP (MFGPT_BASE + 6)
|
|
|
++
|
|
|
++#endif /*!_CS5536_MFGPT_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,174 @@
|
|
|
++/*
|
|
|
++ * the definition file of cs5536 Virtual Support Module(VSM).
|
|
|
++ * pci configuration space can be accessed through the VSM, so
|
|
|
++ * there is no need of the MSR read/write now, except the spec.
|
|
|
++ * MSR registers which are not implemented yet.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef _CS5536_PCI_H
|
|
|
++#define _CS5536_PCI_H
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++#include <linux/pci_regs.h>
|
|
|
++
|
|
|
++extern void cs5536_pci_conf_write4(int function, int reg, u32 value);
|
|
|
++extern u32 cs5536_pci_conf_read4(int function, int reg);
|
|
|
++
|
|
|
++#define CS5536_FLASH_INTR 6
|
|
|
++#define CS5536_ACC_INTR 9
|
|
|
++#define CS5536_IDE_INTR 14
|
|
|
++#define CS5536_USB_INTR 11
|
|
|
++#define CS5536_UART1_INTR 4
|
|
|
++#define CS5536_UART2_INTR 3
|
|
|
++
|
|
|
++/************** PCI BUS DEVICE FUNCTION ***************/
|
|
|
++
|
|
|
++/*
|
|
|
++ * PCI bus device function
|
|
|
++ */
|
|
|
++#define PCI_BUS_CS5536 0
|
|
|
++#define PCI_IDSEL_CS5536 14
|
|
|
++
|
|
|
++/********** STANDARD PCI-2.2 EXPANSION ****************/
|
|
|
++
|
|
|
++/*
|
|
|
++ * PCI configuration space
|
|
|
++ * we have to virtualize the PCI configure space head, so we should
|
|
|
++ * define the necessary IDs and some others.
|
|
|
++ */
|
|
|
++
|
|
|
++/* CONFIG of PCI VENDOR ID*/
|
|
|
++#define CFG_PCI_VENDOR_ID(mod_dev_id, sys_vendor_id) \
|
|
|
++ (((mod_dev_id) << 16) | (sys_vendor_id))
|
|
|
++
|
|
|
++/* VENDOR ID */
|
|
|
++#define CS5536_VENDOR_ID 0x1022
|
|
|
++
|
|
|
++/* DEVICE ID */
|
|
|
++#define CS5536_ISA_DEVICE_ID 0x2090
|
|
|
++#define CS5536_FLASH_DEVICE_ID 0x2091
|
|
|
++#define CS5536_IDE_DEVICE_ID 0x209a
|
|
|
++#define CS5536_ACC_DEVICE_ID 0x2093
|
|
|
++#define CS5536_OHCI_DEVICE_ID 0x2094
|
|
|
++#define CS5536_EHCI_DEVICE_ID 0x2095
|
|
|
++#define CS5536_UDC_DEVICE_ID 0x2096
|
|
|
++#define CS5536_OTG_DEVICE_ID 0x2097
|
|
|
++
|
|
|
++/* CLASS CODE : CLASS SUB-CLASS INTERFACE */
|
|
|
++#define CS5536_ISA_CLASS_CODE 0x060100
|
|
|
++#define CS5536_FLASH_CLASS_CODE 0x050100
|
|
|
++#define CS5536_IDE_CLASS_CODE 0x010180
|
|
|
++#define CS5536_ACC_CLASS_CODE 0x040100
|
|
|
++#define CS5536_OHCI_CLASS_CODE 0x0C0310
|
|
|
++#define CS5536_EHCI_CLASS_CODE 0x0C0320
|
|
|
++#define CS5536_UDC_CLASS_CODE 0x0C03FE
|
|
|
++#define CS5536_OTG_CLASS_CODE 0x0C0380
|
|
|
++
|
|
|
++/* BHLC : BIST HEADER-TYPE LATENCY-TIMER CACHE-LINE-SIZE */
|
|
|
++
|
|
|
++#define CFG_PCI_CACHE_LINE_SIZE(header_type, latency_timer) \
|
|
|
++ ((PCI_NONE_BIST << 24) | ((header_type) << 16) \
|
|
|
++ | ((latency_timer) << 8) | PCI_NORMAL_CACHE_LINE_SIZE);
|
|
|
++
|
|
|
++#define PCI_NONE_BIST 0x00 /* RO not implemented yet. */
|
|
|
++#define PCI_BRIDGE_HEADER_TYPE 0x80 /* RO */
|
|
|
++#define PCI_NORMAL_HEADER_TYPE 0x00
|
|
|
++#define PCI_NORMAL_LATENCY_TIMER 0x00
|
|
|
++#define PCI_NORMAL_CACHE_LINE_SIZE 0x08 /* RW */
|
|
|
++
|
|
|
++/* BAR */
|
|
|
++#define PCI_BAR0_REG 0x10
|
|
|
++#define PCI_BAR1_REG 0x14
|
|
|
++#define PCI_BAR2_REG 0x18
|
|
|
++#define PCI_BAR3_REG 0x1c
|
|
|
++#define PCI_BAR4_REG 0x20
|
|
|
++#define PCI_BAR5_REG 0x24
|
|
|
++#define PCI_BAR_COUNT 6
|
|
|
++#define PCI_BAR_RANGE_MASK 0xFFFFFFFF
|
|
|
++
|
|
|
++/* CARDBUS CIS POINTER */
|
|
|
++#define PCI_CARDBUS_CIS_POINTER 0x00000000
|
|
|
++
|
|
|
++/* SUBSYSTEM VENDOR ID */
|
|
|
++#define CS5536_SUB_VENDOR_ID CS5536_VENDOR_ID
|
|
|
++
|
|
|
++/* SUBSYSTEM ID */
|
|
|
++#define CS5536_ISA_SUB_ID CS5536_ISA_DEVICE_ID
|
|
|
++#define CS5536_FLASH_SUB_ID CS5536_FLASH_DEVICE_ID
|
|
|
++#define CS5536_IDE_SUB_ID CS5536_IDE_DEVICE_ID
|
|
|
++#define CS5536_ACC_SUB_ID CS5536_ACC_DEVICE_ID
|
|
|
++#define CS5536_OHCI_SUB_ID CS5536_OHCI_DEVICE_ID
|
|
|
++#define CS5536_EHCI_SUB_ID CS5536_EHCI_DEVICE_ID
|
|
|
++#define CS5536_UDC_SUB_ID CS5536_UDC_DEVICE_ID
|
|
|
++#define CS5536_OTG_SUB_ID CS5536_OTG_DEVICE_ID
|
|
|
++
|
|
|
++/* EXPANSION ROM BAR */
|
|
|
++#define PCI_EXPANSION_ROM_BAR 0x00000000
|
|
|
++
|
|
|
++/* CAPABILITIES POINTER */
|
|
|
++#define PCI_CAPLIST_POINTER 0x00000000
|
|
|
++#define PCI_CAPLIST_USB_POINTER 0x40
|
|
|
++/* INTERRUPT */
|
|
|
++
|
|
|
++#define CFG_PCI_INTERRUPT_LINE(pin, mod_intr) \
|
|
|
++ ((PCI_MAX_LATENCY << 24) | (PCI_MIN_GRANT << 16) | \
|
|
|
++ ((pin) << 8) | (mod_intr))
|
|
|
++
|
|
|
++#define PCI_MAX_LATENCY 0x40
|
|
|
++#define PCI_MIN_GRANT 0x00
|
|
|
++#define PCI_DEFAULT_PIN 0x01
|
|
|
++
|
|
|
++/*********** EXPANSION PCI REG ************************/
|
|
|
++
|
|
|
++/*
|
|
|
++ * ISA EXPANSION
|
|
|
++ */
|
|
|
++#define PCI_UART1_INT_REG 0x50
|
|
|
++#define PCI_UART2_INT_REG 0x54
|
|
|
++#define PCI_ISA_FIXUP_REG 0x58
|
|
|
++
|
|
|
++/*
|
|
|
++ * FLASH EXPANSION
|
|
|
++ */
|
|
|
++#define PCI_FLASH_INT_REG 0x50
|
|
|
++#define PCI_NOR_FLASH_CTRL_REG 0x40
|
|
|
++#define PCI_NOR_FLASH_T01_REG 0x44
|
|
|
++#define PCI_NOR_FLASH_T23_REG 0x48
|
|
|
++#define PCI_NAND_FLASH_TDATA_REG 0x60
|
|
|
++#define PCI_NAND_FLASH_TCTRL_REG 0x64
|
|
|
++#define PCI_NAND_FLASH_RSVD_REG 0x68
|
|
|
++#define PCI_FLASH_SELECT_REG 0x70
|
|
|
++
|
|
|
++/*
|
|
|
++ * IDE EXPANSION
|
|
|
++ */
|
|
|
++#define PCI_IDE_CFG_REG 0x40
|
|
|
++#define CS5536_IDE_FLASH_SIGNATURE 0xDEADBEEF
|
|
|
++#define PCI_IDE_DTC_REG 0x48
|
|
|
++#define PCI_IDE_CAST_REG 0x4C
|
|
|
++#define PCI_IDE_ETC_REG 0x50
|
|
|
++#define PCI_IDE_PM_REG 0x54
|
|
|
++#define PCI_IDE_INT_REG 0x60
|
|
|
++
|
|
|
++/*
|
|
|
++ * ACC EXPANSION
|
|
|
++ */
|
|
|
++#define PCI_ACC_INT_REG 0x50
|
|
|
++
|
|
|
++/*
|
|
|
++ * OHCI EXPANSION : INTTERUPT IS IMPLEMENTED BY THE OHCI
|
|
|
++ */
|
|
|
++#define PCI_OHCI_PM_REG 0x40
|
|
|
++#define PCI_OHCI_INT_REG 0x50
|
|
|
++
|
|
|
++/*
|
|
|
++ * EHCI EXPANSION
|
|
|
++ */
|
|
|
++#define PCI_EHCI_LEGSMIEN_REG 0x50
|
|
|
++#define PCI_EHCI_LEGSMISTS_REG 0x54
|
|
|
++#define PCI_EHCI_FLADJ_REG 0x60
|
|
|
++
|
|
|
++#endif /* _CS5536_PCI_H_ */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,59 @@
|
|
|
++/*
|
|
|
++ * the Virtual Support Module(VSM) read/write interfaces
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef _CS5536_VSM_H
|
|
|
++#define _CS5536_VSM_H
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++
|
|
|
++#define DECLARE_CS5536_MODULE(name) \
|
|
|
++extern void pci_##name##_write_reg(int reg, u32 value); \
|
|
|
++extern u32 pci_##name##_read_reg(int reg);
|
|
|
++
|
|
|
++#define DEFINE_CS5536_MODULE(name) \
|
|
|
++void pci_##name##_write_reg(int reg, u32 value)\
|
|
|
++{ \
|
|
|
++ return; \
|
|
|
++} \
|
|
|
++u32 pci_##name##_read_reg(int reg) \
|
|
|
++{ \
|
|
|
++ return 0xffffffff; \
|
|
|
++} \
|
|
|
++
|
|
|
++/* core modules of cs5536 */
|
|
|
++
|
|
|
++/* ide module */
|
|
|
++DECLARE_CS5536_MODULE(ide)
|
|
|
++/* acc module */
|
|
|
++DECLARE_CS5536_MODULE(acc)
|
|
|
++/* ohci module */
|
|
|
++DECLARE_CS5536_MODULE(ohci)
|
|
|
++/* isa module */
|
|
|
++DECLARE_CS5536_MODULE(isa)
|
|
|
++/* ehci module */
|
|
|
++DECLARE_CS5536_MODULE(ehci)
|
|
|
++
|
|
|
++/* selective modules of cs5536 */
|
|
|
++/* flash(nor or nand flash) module */
|
|
|
++#ifdef CONFIG_CS5536_FLASH
|
|
|
++ DECLARE_CS5536_MODULE(flash)
|
|
|
++#else
|
|
|
++ DEFINE_CS5536_MODULE(flash)
|
|
|
++#endif
|
|
|
++/* otg module */
|
|
|
++#ifdef CONFIG_CS5536_OTG
|
|
|
++ DECLARE_CS5536_MODULE(otg)
|
|
|
++#else
|
|
|
++ DEFINE_CS5536_MODULE(otg)
|
|
|
++#endif
|
|
|
++/* udc module */
|
|
|
++#ifdef CONFIG_CS5536_UDC
|
|
|
++ DECLARE_CS5536_MODULE(udc)
|
|
|
++#else
|
|
|
++ DEFINE_CS5536_MODULE(udc)
|
|
|
++#endif
|
|
|
++#endif /* _CS5536_VSM_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/dma-coherence.h rt4ls/arch/mips/include/asm/mach-loongson/dma-coherence.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/dma-coherence.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/dma-coherence.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,70 @@
|
|
|
++/*
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006, 07 Ralf Baechle <ralf@linux-mips.org>
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ */
|
|
|
++#ifndef __ASM_MACH_LOONGSON_DMA_COHERENCE_H
|
|
|
++#define __ASM_MACH_LOONGSON_DMA_COHERENCE_H
|
|
|
++
|
|
|
++struct device;
|
|
|
++
|
|
|
++static inline dma_addr_t plat_map_dma_mem(struct device *dev, void *addr,
|
|
|
++ size_t size)
|
|
|
++{
|
|
|
++ return virt_to_phys(addr) | 0x80000000;
|
|
|
++}
|
|
|
++
|
|
|
++static inline dma_addr_t plat_map_dma_mem_page(struct device *dev,
|
|
|
++ struct page *page)
|
|
|
++{
|
|
|
++ return page_to_phys(page) | 0x80000000;
|
|
|
++}
|
|
|
++
|
|
|
++static inline unsigned long plat_dma_addr_to_phys(dma_addr_t dma_addr)
|
|
|
++{
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) & defined(CONFIG_64BIT)
|
|
|
++ return (dma_addr > 0x8fffffff) ? dma_addr : (dma_addr & 0x0fffffff);
|
|
|
++#else
|
|
|
++ return dma_addr & 0x7fffffff;
|
|
|
++#endif
|
|
|
++}
|
|
|
++
|
|
|
++static inline void plat_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr)
|
|
|
++{
|
|
|
++}
|
|
|
++
|
|
|
++static inline int plat_dma_supported(struct device *dev, u64 mask)
|
|
|
++{
|
|
|
++ /*
|
|
|
++ * we fall back to GFP_DMA when the mask isn't all 1s,
|
|
|
++ * so we can't guarantee allocations that must be
|
|
|
++ * within a tighter range than GFP_DMA..
|
|
|
++ */
|
|
|
++ if (mask < DMA_BIT_MASK(24))
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ return 1;
|
|
|
++}
|
|
|
++
|
|
|
++static inline void plat_extra_sync_for_device(struct device *dev)
|
|
|
++{
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static inline int plat_dma_mapping_error(struct device *dev,
|
|
|
++ dma_addr_t dma_addr)
|
|
|
++{
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static inline int plat_device_is_coherent(struct device *dev)
|
|
|
++{
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++#endif /* __ASM_MACH_LOONGSON_DMA_COHERENCE_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/loongson.h rt4ls/arch/mips/include/asm/mach-loongson/loongson.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/loongson.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/loongson.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,319 @@
|
|
|
++/*
|
|
|
++ * Copyright (c) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef __LOONGSON_H
|
|
|
++#define __LOONGSON_H
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++#include <linux/init.h>
|
|
|
++
|
|
|
++/* loongson internal northbridge initialization */
|
|
|
++extern void bonito_irq_init(void);
|
|
|
++
|
|
|
++/* environment arguments from bootloader */
|
|
|
++extern unsigned long bus_clock, cpu_clock_freq;
|
|
|
++extern unsigned long memsize, highmemsize;
|
|
|
++
|
|
|
++/* loongson-based machines specific reboot setup */
|
|
|
++extern void loongson_reboot_setup(void);
|
|
|
++
|
|
|
++/* loongson-specific command line, env and memory initialization */
|
|
|
++extern void __init prom_init_memory(void);
|
|
|
++extern void __init prom_init_cmdline(void);
|
|
|
++extern void __init prom_init_env(void);
|
|
|
++
|
|
|
++/* irq operation functions */
|
|
|
++extern void bonito_irqdispatch(void);
|
|
|
++extern void i8259_irqdispatch(void);
|
|
|
++extern void __init bonito_irq_init(void);
|
|
|
++extern void __init set_irq_trigger_mode(void);
|
|
|
++extern int mach_i8259_irq(void);
|
|
|
++extern void mach_irq_dispatch(unsigned int pending);
|
|
|
++
|
|
|
++/* machine-specific reboot/halt operation */
|
|
|
++extern void mach_prepare_reboot(void);
|
|
|
++extern void mach_prepare_shutdown(void);
|
|
|
++
|
|
|
++/* We need this in some places... */
|
|
|
++#define delay() ({ \
|
|
|
++ int x; \
|
|
|
++ for (x = 0; x < 100000; x++) \
|
|
|
++ __asm__ __volatile__(""); \
|
|
|
++})
|
|
|
++
|
|
|
++/* loongson-specific cpu frequency relative stuff */
|
|
|
++#ifdef CONFIG_LOONGSON2F_CPU_FREQ
|
|
|
++#include <linux/cpufreq.h>
|
|
|
++extern void loongson2f_cpu_wait(void);
|
|
|
++extern struct cpufreq_frequency_table loongson2f_clockmod_table[];
|
|
|
++#endif
|
|
|
++
|
|
|
++#define LOONGSON_REG(x) \
|
|
|
++ (*(u32 *)((char *)CKSEG1ADDR(LOONGSON_REG_BASE) + (x)))
|
|
|
++
|
|
|
++#define LOONGSON_IRQ_BASE 32
|
|
|
++#define LOONGSON_PERFCNT_IRQ (MIPS_CPU_IRQ_BASE + 6) /* cpu perf counter */
|
|
|
++
|
|
|
++#define LOONGSON_FLASH_BASE 0x1c000000
|
|
|
++#define LOONGSON_FLASH_SIZE 0x02000000 /* 32M */
|
|
|
++#define LOONGSON_FLASH_TOP (LOONGSON_FLASH_BASE+LOONGSON_FLASH_SIZE-1)
|
|
|
++
|
|
|
++#define LOONGSON_LIO0_BASE 0x1e000000
|
|
|
++#define LOONGSON_LIO0_SIZE 0x01C00000 /* 28M */
|
|
|
++#define LOONGSON_LIO0_TOP (LOONGSON_LIO0_BASE+LOONGSON_LIO0_SIZE-1)
|
|
|
++
|
|
|
++#define LOONGSON_BOOT_BASE 0x1fc00000
|
|
|
++#define LOONGSON_BOOT_SIZE 0x00100000 /* 1M */
|
|
|
++#define LOONGSON_BOOT_TOP (LOONGSON_BOOT_BASE+LOONGSON_BOOT_SIZE-1)
|
|
|
++#define LOONGSON_REG_BASE 0x1fe00000
|
|
|
++#define LOONGSON_REG_SIZE 0x00100000 /* 256Bytes + 256Bytes + ??? */
|
|
|
++#define LOONGSON_REG_TOP (LOONGSON_REG_BASE+LOONGSON_REG_SIZE-1)
|
|
|
++
|
|
|
++#define LOONGSON_LIO1_BASE 0x1ff00000
|
|
|
++#define LOONGSON_LIO1_SIZE 0x00100000 /* 1M */
|
|
|
++#define LOONGSON_LIO1_TOP (LOONGSON_LIO1_BASE+LOONGSON_LIO1_SIZE-1)
|
|
|
++
|
|
|
++#define LOONGSON_PCILO0_BASE 0x10000000
|
|
|
++#define LOONGSON_PCILO1_BASE 0x14000000
|
|
|
++#define LOONGSON_PCILO2_BASE 0x18000000
|
|
|
++#define LOONGSON_PCILO_BASE LOONGSON_PCILO0_BASE
|
|
|
++#define LOONGSON_PCILO_SIZE 0x0c000000 /* 64M * 3 */
|
|
|
++#define LOONGSON_PCILO_TOP (LOONGSON_PCILO0_BASE+LOONGSON_PCILO_SIZE-1)
|
|
|
++
|
|
|
++#define LOONGSON_PCICFG_BASE 0x1fe80000
|
|
|
++#define LOONGSON_PCICFG_SIZE 0x00000800 /* 2K */
|
|
|
++#define LOONGSON_PCICFG_TOP (LOONGSON_PCICFG_BASE+LOONGSON_PCICFG_SIZE-1)
|
|
|
++#define LOONGSON_PCIIO_BASE 0x1fd00000
|
|
|
++#define LOONGSON_PCIIO_SIZE 0x00100000 /* 1M */
|
|
|
++#define LOONGSON_PCIIO_TOP (LOONGSON_PCIIO_BASE+LOONGSON_PCIIO_SIZE-1)
|
|
|
++
|
|
|
++/* Loongson Register Bases */
|
|
|
++
|
|
|
++#define LOONGSON_PCICONFIGBASE 0x00
|
|
|
++#define LOONGSON_REGBASE 0x100
|
|
|
++
|
|
|
++/* PCI Configuration Registers */
|
|
|
++
|
|
|
++#define LOONGSON_PCI_REG(x) LOONGSON_REG(LOONGSON_PCICONFIGBASE + (x))
|
|
|
++#define LOONGSON_PCIDID LOONGSON_PCI_REG(0x00)
|
|
|
++#define LOONGSON_PCICMD LOONGSON_PCI_REG(0x04)
|
|
|
++#define LOONGSON_PCICLASS LOONGSON_PCI_REG(0x08)
|
|
|
++#define LOONGSON_PCILTIMER LOONGSON_PCI_REG(0x0c)
|
|
|
++#define LOONGSON_PCIBASE0 LOONGSON_PCI_REG(0x10)
|
|
|
++#define LOONGSON_PCIBASE1 LOONGSON_PCI_REG(0x14)
|
|
|
++#define LOONGSON_PCIBASE2 LOONGSON_PCI_REG(0x18)
|
|
|
++#define LOONGSON_PCIBASE3 LOONGSON_PCI_REG(0x1c)
|
|
|
++#define LOONGSON_PCIBASE4 LOONGSON_PCI_REG(0x20)
|
|
|
++#define LOONGSON_PCIEXPRBASE LOONGSON_PCI_REG(0x30)
|
|
|
++#define LOONGSON_PCIINT LOONGSON_PCI_REG(0x3c)
|
|
|
++
|
|
|
++#define LOONGSON_PCI_ISR4C LOONGSON_PCI_REG(0x4c)
|
|
|
++
|
|
|
++#define LOONGSON_PCICMD_PERR_CLR 0x80000000
|
|
|
++#define LOONGSON_PCICMD_SERR_CLR 0x40000000
|
|
|
++#define LOONGSON_PCICMD_MABORT_CLR 0x20000000
|
|
|
++#define LOONGSON_PCICMD_MTABORT_CLR 0x10000000
|
|
|
++#define LOONGSON_PCICMD_TABORT_CLR 0x08000000
|
|
|
++#define LOONGSON_PCICMD_MPERR_CLR 0x01000000
|
|
|
++#define LOONGSON_PCICMD_PERRRESPEN 0x00000040
|
|
|
++#define LOONGSON_PCICMD_ASTEPEN 0x00000080
|
|
|
++#define LOONGSON_PCICMD_SERREN 0x00000100
|
|
|
++#define LOONGSON_PCILTIMER_BUSLATENCY 0x0000ff00
|
|
|
++#define LOONGSON_PCILTIMER_BUSLATENCY_SHIFT 8
|
|
|
++
|
|
|
++/* Loongson h/w Configuration */
|
|
|
++
|
|
|
++#define LOONGSON_GENCFG_OFFSET 0x4
|
|
|
++#define LOONGSON_GENCFG LOONGSON_REG(LOONGSON_REGBASE + LOONGSON_GENCFG_OFFSET)
|
|
|
++
|
|
|
++#define LOONGSON_GENCFG_DEBUGMODE 0x00000001
|
|
|
++#define LOONGSON_GENCFG_SNOOPEN 0x00000002
|
|
|
++#define LOONGSON_GENCFG_CPUSELFRESET 0x00000004
|
|
|
++
|
|
|
++#define LOONGSON_GENCFG_FORCE_IRQA 0x00000008
|
|
|
++#define LOONGSON_GENCFG_IRQA_ISOUT 0x00000010
|
|
|
++#define LOONGSON_GENCFG_IRQA_FROM_INT1 0x00000020
|
|
|
++#define LOONGSON_GENCFG_BYTESWAP 0x00000040
|
|
|
++
|
|
|
++#define LOONGSON_GENCFG_UNCACHED 0x00000080
|
|
|
++#define LOONGSON_GENCFG_PREFETCHEN 0x00000100
|
|
|
++#define LOONGSON_GENCFG_WBEHINDEN 0x00000200
|
|
|
++#define LOONGSON_GENCFG_CACHEALG 0x00000c00
|
|
|
++#define LOONGSON_GENCFG_CACHEALG_SHIFT 10
|
|
|
++#define LOONGSON_GENCFG_PCIQUEUE 0x00001000
|
|
|
++#define LOONGSON_GENCFG_CACHESTOP 0x00002000
|
|
|
++#define LOONGSON_GENCFG_MSTRBYTESWAP 0x00004000
|
|
|
++#define LOONGSON_GENCFG_BUSERREN 0x00008000
|
|
|
++#define LOONGSON_GENCFG_NORETRYTIMEOUT 0x00010000
|
|
|
++#define LOONGSON_GENCFG_SHORTCOPYTIMEOUT 0x00020000
|
|
|
++
|
|
|
++/* PCI address map control */
|
|
|
++
|
|
|
++#define LOONGSON_PCIMAP LOONGSON_REG(LOONGSON_REGBASE + 0x10)
|
|
|
++#define LOONGSON_PCIMEMBASECFG LOONGSON_REG(LOONGSON_REGBASE + 0x14)
|
|
|
++#define LOONGSON_PCIMAP_CFG LOONGSON_REG(LOONGSON_REGBASE + 0x18)
|
|
|
++
|
|
|
++/* GPIO Regs - r/w */
|
|
|
++
|
|
|
++#define LOONGSON_GPIODATA LOONGSON_REG(LOONGSON_REGBASE + 0x1c)
|
|
|
++#define LOONGSON_GPIOIE LOONGSON_REG(LOONGSON_REGBASE + 0x20)
|
|
|
++
|
|
|
++/* ICU Configuration Regs - r/w */
|
|
|
++
|
|
|
++#define LOONGSON_INTEDGE LOONGSON_REG(LOONGSON_REGBASE + 0x24)
|
|
|
++#define LOONGSON_INTSTEER LOONGSON_REG(LOONGSON_REGBASE + 0x28)
|
|
|
++#define LOONGSON_INTPOL LOONGSON_REG(LOONGSON_REGBASE + 0x2c)
|
|
|
++
|
|
|
++/* ICU Enable Regs - IntEn & IntISR are r/o. */
|
|
|
++
|
|
|
++#define LOONGSON_INTENSET LOONGSON_REG(LOONGSON_REGBASE + 0x30)
|
|
|
++#define LOONGSON_INTENCLR LOONGSON_REG(LOONGSON_REGBASE + 0x34)
|
|
|
++#define LOONGSON_INTEN LOONGSON_REG(LOONGSON_REGBASE + 0x38)
|
|
|
++#define LOONGSON_INTISR LOONGSON_REG(LOONGSON_REGBASE + 0x3c)
|
|
|
++
|
|
|
++/* ICU */
|
|
|
++#define LOONGSON_ICU_MBOXES 0x0000000f
|
|
|
++#define LOONGSON_ICU_MBOXES_SHIFT 0
|
|
|
++#define LOONGSON_ICU_DMARDY 0x00000010
|
|
|
++#define LOONGSON_ICU_DMAEMPTY 0x00000020
|
|
|
++#define LOONGSON_ICU_COPYRDY 0x00000040
|
|
|
++#define LOONGSON_ICU_COPYEMPTY 0x00000080
|
|
|
++#define LOONGSON_ICU_COPYERR 0x00000100
|
|
|
++#define LOONGSON_ICU_PCIIRQ 0x00000200
|
|
|
++#define LOONGSON_ICU_MASTERERR 0x00000400
|
|
|
++#define LOONGSON_ICU_SYSTEMERR 0x00000800
|
|
|
++#define LOONGSON_ICU_DRAMPERR 0x00001000
|
|
|
++#define LOONGSON_ICU_RETRYERR 0x00002000
|
|
|
++#define LOONGSON_ICU_GPIOS 0x01ff0000
|
|
|
++#define LOONGSON_ICU_GPIOS_SHIFT 16
|
|
|
++#define LOONGSON_ICU_GPINS 0x7e000000
|
|
|
++#define LOONGSON_ICU_GPINS_SHIFT 25
|
|
|
++#define LOONGSON_ICU_MBOX(N) (1<<(LOONGSON_ICU_MBOXES_SHIFT+(N)))
|
|
|
++#define LOONGSON_ICU_GPIO(N) (1<<(LOONGSON_ICU_GPIOS_SHIFT+(N)))
|
|
|
++#define LOONGSON_ICU_GPIN(N) (1<<(LOONGSON_ICU_GPINS_SHIFT+(N)))
|
|
|
++
|
|
|
++/* PCI prefetch window base & mask */
|
|
|
++
|
|
|
++#define LOONGSON_MEM_WIN_BASE_L LOONGSON_REG(LOONGSON_REGBASE + 0x40)
|
|
|
++#define LOONGSON_MEM_WIN_BASE_H LOONGSON_REG(LOONGSON_REGBASE + 0x44)
|
|
|
++#define LOONGSON_MEM_WIN_MASK_L LOONGSON_REG(LOONGSON_REGBASE + 0x48)
|
|
|
++#define LOONGSON_MEM_WIN_MASK_H LOONGSON_REG(LOONGSON_REGBASE + 0x4c)
|
|
|
++
|
|
|
++/* PCI_Hit*_Sel_* */
|
|
|
++
|
|
|
++#define LOONGSON_PCI_HIT0_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x50)
|
|
|
++#define LOONGSON_PCI_HIT0_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x54)
|
|
|
++#define LOONGSON_PCI_HIT1_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x58)
|
|
|
++#define LOONGSON_PCI_HIT1_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x5c)
|
|
|
++#define LOONGSON_PCI_HIT2_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x60)
|
|
|
++#define LOONGSON_PCI_HIT2_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x64)
|
|
|
++
|
|
|
++/* PXArb Config & Status */
|
|
|
++
|
|
|
++#define LOONGSON_PXARB_CFG LOONGSON_REG(LOONGSON_REGBASE + 0x68)
|
|
|
++#define LOONGSON_PXARB_STATUS LOONGSON_REG(LOONGSON_REGBASE + 0x6c)
|
|
|
++
|
|
|
++/* Chip Config */
|
|
|
++#define LOONGSON_CHIPCFG0 LOONGSON_REG(LOONGSON_REGBASE + 0x80)
|
|
|
++
|
|
|
++/* pcimap */
|
|
|
++
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO0 0x0000003f
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO0_SHIFT 0
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO1 0x00000fc0
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO1_SHIFT 6
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO2 0x0003f000
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_LO2_SHIFT 12
|
|
|
++#define LOONGSON_PCIMAP_PCIMAP_2 0x00040000
|
|
|
++#define LOONGSON_PCIMAP_WIN(WIN, ADDR) \
|
|
|
++ ((((ADDR)>>26) & LOONGSON_PCIMAP_PCIMAP_LO0) << ((WIN)*6))
|
|
|
++
|
|
|
++/*
|
|
|
++ * address windows configuration module
|
|
|
++ *
|
|
|
++ * loongson2e do not have this module
|
|
|
++ */
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
|
|
++
|
|
|
++/* address window config module base address */
|
|
|
++#define LOONGSON_ADDRWINCFG_BASE 0x3ff00000ul
|
|
|
++#define LOONGSON_ADDRWINCFG_SIZE 0x180
|
|
|
++
|
|
|
++extern unsigned long _loongson_addrwincfg_base;
|
|
|
++#define LOONGSON_ADDRWINCFG(offset) \
|
|
|
++ (*(u64 *)(_loongson_addrwincfg_base + (offset)))
|
|
|
++
|
|
|
++#define CPU_WIN0_BASE LOONGSON_ADDRWINCFG(0x00)
|
|
|
++#define CPU_WIN1_BASE LOONGSON_ADDRWINCFG(0x08)
|
|
|
++#define CPU_WIN2_BASE LOONGSON_ADDRWINCFG(0x10)
|
|
|
++#define CPU_WIN3_BASE LOONGSON_ADDRWINCFG(0x18)
|
|
|
++
|
|
|
++#define CPU_WIN0_MASK LOONGSON_ADDRWINCFG(0x20)
|
|
|
++#define CPU_WIN1_MASK LOONGSON_ADDRWINCFG(0x28)
|
|
|
++#define CPU_WIN2_MASK LOONGSON_ADDRWINCFG(0x30)
|
|
|
++#define CPU_WIN3_MASK LOONGSON_ADDRWINCFG(0x38)
|
|
|
++
|
|
|
++#define CPU_WIN0_MMAP LOONGSON_ADDRWINCFG(0x40)
|
|
|
++#define CPU_WIN1_MMAP LOONGSON_ADDRWINCFG(0x48)
|
|
|
++#define CPU_WIN2_MMAP LOONGSON_ADDRWINCFG(0x50)
|
|
|
++#define CPU_WIN3_MMAP LOONGSON_ADDRWINCFG(0x58)
|
|
|
++
|
|
|
++#define PCIDMA_WIN0_BASE LOONGSON_ADDRWINCFG(0x60)
|
|
|
++#define PCIDMA_WIN1_BASE LOONGSON_ADDRWINCFG(0x68)
|
|
|
++#define PCIDMA_WIN2_BASE LOONGSON_ADDRWINCFG(0x70)
|
|
|
++#define PCIDMA_WIN3_BASE LOONGSON_ADDRWINCFG(0x78)
|
|
|
++
|
|
|
++#define PCIDMA_WIN0_MASK LOONGSON_ADDRWINCFG(0x80)
|
|
|
++#define PCIDMA_WIN1_MASK LOONGSON_ADDRWINCFG(0x88)
|
|
|
++#define PCIDMA_WIN2_MASK LOONGSON_ADDRWINCFG(0x90)
|
|
|
++#define PCIDMA_WIN3_MASK LOONGSON_ADDRWINCFG(0x98)
|
|
|
++
|
|
|
++#define PCIDMA_WIN0_MMAP LOONGSON_ADDRWINCFG(0xa0)
|
|
|
++#define PCIDMA_WIN1_MMAP LOONGSON_ADDRWINCFG(0xa8)
|
|
|
++#define PCIDMA_WIN2_MMAP LOONGSON_ADDRWINCFG(0xb0)
|
|
|
++#define PCIDMA_WIN3_MMAP LOONGSON_ADDRWINCFG(0xb8)
|
|
|
++
|
|
|
++#define ADDRWIN_WIN0 0
|
|
|
++#define ADDRWIN_WIN1 1
|
|
|
++#define ADDRWIN_WIN2 2
|
|
|
++#define ADDRWIN_WIN3 3
|
|
|
++
|
|
|
++#define ADDRWIN_MAP_DST_DDR 0
|
|
|
++#define ADDRWIN_MAP_DST_PCI 1
|
|
|
++#define ADDRWIN_MAP_DST_LIO 1
|
|
|
++
|
|
|
++/*
|
|
|
++ * s: CPU, PCIDMA
|
|
|
++ * d: DDR, PCI, LIO
|
|
|
++ * win: 0, 1, 2, 3
|
|
|
++ * src: map source
|
|
|
++ * dst: map destination
|
|
|
++ * size: ~mask + 1
|
|
|
++ */
|
|
|
++#define LOONGSON_ADDRWIN_CFG(s, d, w, src, dst, size) do {\
|
|
|
++ s##_WIN##w##_BASE = (src); \
|
|
|
++ s##_WIN##w##_MMAP = (src) | ADDRWIN_MAP_DST_##d; \
|
|
|
++ s##_WIN##w##_MASK = ~(size-1); \
|
|
|
++} while (0)
|
|
|
++
|
|
|
++#define LOONGSON_ADDRWIN_CPUTOPCI(win, src, dst, size) \
|
|
|
++ LOONGSON_ADDRWIN_CFG(CPU, PCI, win, src, dst, size)
|
|
|
++#define LOONGSON_ADDRWIN_CPUTODDR(win, src, dst, size) \
|
|
|
++ LOONGSON_ADDRWIN_CFG(CPU, DDR, win, src, dst, size)
|
|
|
++#define LOONGSON_ADDRWIN_PCITODDR(win, src, dst, size) \
|
|
|
++ LOONGSON_ADDRWIN_CFG(PCIDMA, DDR, win, src, dst, size)
|
|
|
++
|
|
|
++#endif /* ! CONFIG_CPU_LOONGSON2F && CONFIG_64BIT */
|
|
|
++
|
|
|
++#endif /* __LOONGSON_H */
|
|
|
++
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/machine.h rt4ls/arch/mips/include/asm/mach-loongson/machine.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/machine.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/machine.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,76 @@
|
|
|
++/*
|
|
|
++ * board-specific header file
|
|
|
++ *
|
|
|
++ * Copyright (c) 2009 Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Zhang Le
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it
|
|
|
++ * and/or modify it under the terms of the GNU General
|
|
|
++ * Public License as published by the Free Software
|
|
|
++ * Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef __MACHINE_H
|
|
|
++#define __MACHINE_H
|
|
|
++
|
|
|
++#ifdef CONFIG_LEMOTE_FULOONG2E
|
|
|
++
|
|
|
++#define MACHTYPE MACH_LEMOTE_FL2E
|
|
|
++
|
|
|
++#define LOONGSON_UART_BASE (LOONGSON_PCIIO_BASE + 0x3f8)
|
|
|
++#define LOONGSON_UART_BAUD 1843200
|
|
|
++#define LOONGSON_UART_IOTYPE UPIO_PORT
|
|
|
++
|
|
|
++#define LOONGSON_NORTH_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 2)
|
|
|
++#define LOONGSON_UART_IRQ (MIPS_CPU_IRQ_BASE + 4)
|
|
|
++#define LOONGSON_SOUTH_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 5)
|
|
|
++#define LOONGSON_TIMER_IRQ (MIPS_CPU_IRQ_BASE + 7)
|
|
|
++#define LOONGSON_DMATIMEOUT_IRQ (LOONGSON_IRQ_BASE + 10)
|
|
|
++
|
|
|
++#elif defined(CONFIG_LEMOTE_FULOONG2F)
|
|
|
++
|
|
|
++#define MACHTYPE MACH_LEMOTE_FL2F
|
|
|
++
|
|
|
++#define LOONGSON_UART_BASE (LOONGSON_PCIIO_BASE + 0x2f8)
|
|
|
++#define LOONGSON_UART_BAUD 1843200
|
|
|
++#define LOONGSON_UART_IOTYPE UPIO_PORT
|
|
|
++
|
|
|
++#else /* CONFIG_CPU_YEELOONG2F */
|
|
|
++
|
|
|
++#define MACHTYPE MACH_LEMOTE_YL2F89
|
|
|
++
|
|
|
++/* yeeloong use the CPU serial port of Loongson2F */
|
|
|
++#define LOONGSON_UART_BASE (LOONGSON_LIO1_BASE + 0x3f8)
|
|
|
++#define LOONGSON_UART_BAUD 3686400
|
|
|
++#define LOONGSON_UART_IOTYPE UPIO_MEM
|
|
|
++
|
|
|
++#endif /* !CONFIG_LEMOTE_FULOONG2E */
|
|
|
++
|
|
|
++/* fuloong2f and yeeloong2f have the same IRQ control interface */
|
|
|
++#if defined(CONFIG_LEMOTE_FULOONG2F) || defined(CONFIG_LEMOTE_YEELOONG2F)
|
|
|
++
|
|
|
++#define LOONGSON_TIMER_IRQ (MIPS_CPU_IRQ_BASE + 7) /* cpu timer */
|
|
|
++#define LOONGSON_NORTH_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 6) /* bonito */
|
|
|
++#define LOONGSON_UART_IRQ (MIPS_CPU_IRQ_BASE + 3) /* cpu serial port */
|
|
|
++#define LOONGSON_SOUTH_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 2) /* i8259 */
|
|
|
++
|
|
|
++#define LOONGSON_INT_BIT_GPIO1 (1 << 1)
|
|
|
++#define LOONGSON_INT_BIT_GPIO2 (1 << 2)
|
|
|
++#define LOONGSON_INT_BIT_GPIO3 (1 << 3)
|
|
|
++#define LOONGSON_INT_BIT_PCI_INTA (1 << 4)
|
|
|
++#define LOONGSON_INT_BIT_PCI_INTB (1 << 5)
|
|
|
++#define LOONGSON_INT_BIT_PCI_INTC (1 << 6)
|
|
|
++#define LOONGSON_INT_BIT_PCI_INTD (1 << 7)
|
|
|
++#define LOONGSON_INT_BIT_PCI_PERR (1 << 8)
|
|
|
++#define LOONGSON_INT_BIT_PCI_SERR (1 << 9)
|
|
|
++#define LOONGSON_INT_BIT_DDR (1 << 10)
|
|
|
++#define LOONGSON_INT_BIT_INT0 (1 << 11)
|
|
|
++#define LOONGSON_INT_BIT_INT1 (1 << 12)
|
|
|
++#define LOONGSON_INT_BIT_INT2 (1 << 13)
|
|
|
++#define LOONGSON_INT_BIT_INT3 (1 << 14)
|
|
|
++
|
|
|
++#endif
|
|
|
++
|
|
|
++#endif /* ! __MACHINE_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/mc146818rtc.h rt4ls/arch/mips/include/asm/mach-loongson/mc146818rtc.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/mc146818rtc.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/mc146818rtc.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,36 @@
|
|
|
++/*
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle (ralf@linux-mips.org)
|
|
|
++ *
|
|
|
++ * RTC routines for PC style attached Dallas chip.
|
|
|
++ */
|
|
|
++#ifndef __ASM_MACH_LOONGSON_MC146818RTC_H
|
|
|
++#define __ASM_MACH_LOONGSON_MC146818RTC_H
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++
|
|
|
++#define RTC_PORT(x) (0x70 + (x))
|
|
|
++#define RTC_IRQ 8
|
|
|
++
|
|
|
++static inline unsigned char CMOS_READ(unsigned long addr)
|
|
|
++{
|
|
|
++ outb_p(addr, RTC_PORT(0));
|
|
|
++ return inb_p(RTC_PORT(1));
|
|
|
++}
|
|
|
++
|
|
|
++static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
|
|
|
++{
|
|
|
++ outb_p(addr, RTC_PORT(0));
|
|
|
++ outb_p(data, RTC_PORT(1));
|
|
|
++}
|
|
|
++
|
|
|
++#define RTC_ALWAYS_BCD 0
|
|
|
++
|
|
|
++#ifndef mc146818_decode_year
|
|
|
++#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1970)
|
|
|
++#endif
|
|
|
++
|
|
|
++#endif /* __ASM_MACH_LOONGSON_MC146818RTC_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/mem.h rt4ls/arch/mips/include/asm/mach-loongson/mem.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/mem.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/mem.h 2009-06-12 16:27:08.510427596 +0200
|
|
|
+@@ -0,0 +1,31 @@
|
|
|
++#ifndef __MEM_H
|
|
|
++#define __MEM_H
|
|
|
++
|
|
|
++/*
|
|
|
++ * high memory space
|
|
|
++ *
|
|
|
++ * in loongson2e, starts from 512M
|
|
|
++ * in loongson2f, starts from 2G + 256M
|
|
|
++ */
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2E
|
|
|
++#define LOONGSON_HIGHMEM_START 0x20000000
|
|
|
++#else
|
|
|
++#define LOONGSON_HIGHMEM_START 0x90000000
|
|
|
++#endif
|
|
|
++
|
|
|
++/*
|
|
|
++ * the peripheral registers(MMIO):
|
|
|
++ *
|
|
|
++ * On the Lemote Loongson 2e system, reside between 0x1000:0000 and 0x2000:0000.
|
|
|
++ * On the Lemote Loongson 2f system, reside between 0x1000:0000 and 0x8000:0000.
|
|
|
++ */
|
|
|
++
|
|
|
++#define LOONGSON_MMIO_MEM_START 0x10000000
|
|
|
++
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2E
|
|
|
++#define LOONGSON_MMIO_MEM_END 0x20000000
|
|
|
++#else
|
|
|
++#define LOONGSON_MMIO_MEM_END 0x80000000
|
|
|
++#endif
|
|
|
++
|
|
|
++#endif /* !__MEM_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/pci.h rt4ls/arch/mips/include/asm/mach-loongson/pci.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/pci.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/pci.h 2009-06-12 16:27:08.514429781 +0200
|
|
|
+@@ -0,0 +1,59 @@
|
|
|
++/*
|
|
|
++ * Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org>
|
|
|
++ * Copyright (c) 2009 Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it
|
|
|
++ * and/or modify it under the terms of the GNU General
|
|
|
++ * Public License as published by the Free Software
|
|
|
++ * Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * This program is distributed in the hope that it will be
|
|
|
++ * useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
|
++ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
++ * PURPOSE. See the GNU General Public License for more
|
|
|
++ * details.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public
|
|
|
++ * License along with this program; if not, write to the Free
|
|
|
++ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
|
|
|
++ * 02139, USA.
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef _LOONGSON_PCI_H_
|
|
|
++#define _LOONGSON_PCI_H_
|
|
|
++
|
|
|
++extern struct pci_ops loongson_pci_ops;
|
|
|
++
|
|
|
++/* this is an offset from mips_io_port_base */
|
|
|
++#define LOONGSON_PCI_IO_START 0x00004000UL
|
|
|
++
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
|
|
++
|
|
|
++/*
|
|
|
++ * we use address window2 to map cpu address space to pci space
|
|
|
++ * window2: cpu [1G, 2G] -> pci [1G, 2G]
|
|
|
++ * why not use window 0 & 1? because they are used by cpu when booting.
|
|
|
++ * window0: cpu [0, 256M] -> ddr [0, 256M]
|
|
|
++ * window1: cpu [256M, 512M] -> pci [256M, 512M]
|
|
|
++ */
|
|
|
++
|
|
|
++/* the smallest LOONGSON_CPU_MEM_SRC can be 512M */
|
|
|
++#define LOONGSON_CPU_MEM_SRC 0x40000000ul /* 1G */
|
|
|
++#define LOONGSON_PCI_MEM_DST LOONGSON_CPU_MEM_SRC
|
|
|
++
|
|
|
++#define LOONGSON_PCI_MEM_START LOONGSON_PCI_MEM_DST
|
|
|
++#define LOONGSON_PCI_MEM_END (0x80000000ul-1) /* 2G */
|
|
|
++
|
|
|
++#define MMAP_CPUTOPCI_SIZE (LOONGSON_PCI_MEM_END - \
|
|
|
++ LOONGSON_PCI_MEM_START + 1)
|
|
|
++
|
|
|
++#else /* loongson2f/32bit & loongson2e */
|
|
|
++
|
|
|
++#define LOONGSON_PCI_MEM_START 0x14000000UL
|
|
|
++#define LOONGSON_PCI_MEM_END 0x1fffffffUL
|
|
|
++
|
|
|
++#endif /* !(defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT))*/
|
|
|
++
|
|
|
++
|
|
|
++#endif /* !_LOONGSON_PCI_H_ */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mach-loongson/war.h rt4ls/arch/mips/include/asm/mach-loongson/war.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mach-loongson/war.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/include/asm/mach-loongson/war.h 2009-06-12 16:27:08.514429781 +0200
|
|
|
+@@ -0,0 +1,25 @@
|
|
|
++/*
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
|
|
|
++ */
|
|
|
++#ifndef __ASM_MIPS_MACH_LOONGSON_WAR_H
|
|
|
++#define __ASM_MIPS_MACH_LOONGSON_WAR_H
|
|
|
++
|
|
|
++#define R4600_V1_INDEX_ICACHEOP_WAR 0
|
|
|
++#define R4600_V1_HIT_CACHEOP_WAR 0
|
|
|
++#define R4600_V2_HIT_CACHEOP_WAR 0
|
|
|
++#define R5432_CP0_INTERRUPT_WAR 0
|
|
|
++#define BCM1250_M3_WAR 0
|
|
|
++#define SIBYTE_1956_WAR 0
|
|
|
++#define MIPS4K_ICACHE_REFILL_WAR 0
|
|
|
++#define MIPS_CACHE_SYNC_WAR 0
|
|
|
++#define TX49XX_ICACHE_INDEX_INV_WAR 0
|
|
|
++#define RM9000_CDEX_SMP_WAR 0
|
|
|
++#define ICACHE_REFILLS_WORKAROUND_WAR 0
|
|
|
++#define R10000_LLSC_WAR 0
|
|
|
++#define MIPS34K_MISSED_ITLB_WAR 0
|
|
|
++
|
|
|
++#endif /* __ASM_MIPS_MACH_LOONGSON_WAR_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/mips-boards/bonito64.h rt4ls/arch/mips/include/asm/mips-boards/bonito64.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/mips-boards/bonito64.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/mips-boards/bonito64.h 2009-06-12 16:27:08.574431556 +0200
|
|
|
+@@ -26,11 +26,6 @@
|
|
|
+ /* offsets from base register */
|
|
|
+ #define BONITO(x) (x)
|
|
|
+
|
|
|
+-#elif defined(CONFIG_LEMOTE_FULONG)
|
|
|
+-
|
|
|
+-#define BONITO(x) (*(volatile u32 *)((char *)CKSEG1ADDR(BONITO_REG_BASE) + (x)))
|
|
|
+-#define BONITO_IRQ_BASE 32
|
|
|
+-
|
|
|
+ #else
|
|
|
+
|
|
|
+ /*
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/page.h rt4ls/arch/mips/include/asm/page.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/page.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/page.h 2009-06-12 16:27:08.602426182 +0200
|
|
|
+@@ -179,8 +179,9 @@
|
|
|
+
|
|
|
+ #endif
|
|
|
+
|
|
|
+-#define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(virt_to_phys(kaddr)))
|
|
|
+-#define virt_addr_valid(kaddr) pfn_valid(PFN_DOWN(virt_to_phys(kaddr)))
|
|
|
++#define virt_to_page(kaddr) \
|
|
|
++ pfn_to_page(PFN_DOWN(virt_to_phys((void *)kaddr)))
|
|
|
++#define virt_addr_valid(kaddr) pfn_valid(PFN_DOWN(virt_to_phys((void *)kaddr)))
|
|
|
+
|
|
|
+ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
|
|
|
+ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/pci.h rt4ls/arch/mips/include/asm/pci.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/pci.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/pci.h 2009-06-12 16:27:08.606433396 +0200
|
|
|
+@@ -56,7 +56,7 @@
|
|
|
+ /*
|
|
|
+ * board supplied pci irq fixup routine
|
|
|
+ */
|
|
|
+-extern int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++extern int pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+
|
|
|
+
|
|
|
+ /* Can be used to override the logic in pci_scan_bus for skipping
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/pgtable.h rt4ls/arch/mips/include/asm/pgtable.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/pgtable.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/pgtable.h 2009-06-12 16:27:08.610435582 +0200
|
|
|
+@@ -370,6 +370,19 @@
|
|
|
+ #include <asm-generic/pgtable.h>
|
|
|
+
|
|
|
+ /*
|
|
|
++ * uncache accelerate for video memory access
|
|
|
++ */
|
|
|
++#ifdef CONFIG_LOONGSON2F
|
|
|
++#define __HAVE_PHYS_MEM_ACCESS_PROT
|
|
|
++
|
|
|
++struct file;
|
|
|
++pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
|
|
++ unsigned long size, pgprot_t vma_prot);
|
|
|
++int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
|
|
|
++ unsigned long size, pgprot_t *vma_prot);
|
|
|
++#endif
|
|
|
++
|
|
|
++/*
|
|
|
+ * We provide our own get_unmapped area to cope with the virtual aliasing
|
|
|
+ * constraints placed on us by the cache architecture.
|
|
|
+ */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/stackframe.h rt4ls/arch/mips/include/asm/stackframe.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/stackframe.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/stackframe.h 2009-06-12 16:27:08.674441225 +0200
|
|
|
+@@ -117,6 +117,20 @@
|
|
|
+ .endm
|
|
|
+ #else
|
|
|
+ .macro get_saved_sp /* Uniprocessor variation */
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2
|
|
|
++ move k0, ra
|
|
|
++ jal 2008f
|
|
|
++ nop
|
|
|
++2008 : jal 2008f
|
|
|
++ nop
|
|
|
++2008 : jal 2008f
|
|
|
++ nop
|
|
|
++2008 : jal 2008f
|
|
|
++ nop
|
|
|
++2008 : move ra, k0
|
|
|
++ li k0, 3
|
|
|
++ mtc0 k0, $22
|
|
|
++#endif
|
|
|
+ #if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
|
|
|
+ lui k1, %hi(kernelsp)
|
|
|
+ #else
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/suspend.h rt4ls/arch/mips/include/asm/suspend.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/suspend.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/suspend.h 2009-06-12 16:27:08.678439779 +0200
|
|
|
+@@ -1,6 +1,9 @@
|
|
|
+ #ifndef __ASM_SUSPEND_H
|
|
|
+ #define __ASM_SUSPEND_H
|
|
|
+
|
|
|
+-/* Somewhen... Maybe :-) */
|
|
|
++static inline int arch_prepare_suspend(void) { return 0; }
|
|
|
++
|
|
|
++/* References to section boundaries */
|
|
|
++extern const void __nosave_begin, __nosave_end;
|
|
|
+
|
|
|
+ #endif /* __ASM_SUSPEND_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/generic.h rt4ls/arch/mips/include/asm/txx9/generic.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/generic.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/generic.h 2009-06-12 16:27:08.686439682 +0200
|
|
|
+@@ -37,7 +37,7 @@
|
|
|
+ void (*arch_init)(void);
|
|
|
+ void (*device_init)(void);
|
|
|
+ #ifdef CONFIG_PCI
|
|
|
+- int (*pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++ int (*pci_map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+ #endif
|
|
|
+ };
|
|
|
+ extern struct txx9_board_vec *txx9_board_vec;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/jmr3927.h rt4ls/arch/mips/include/asm/txx9/jmr3927.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/jmr3927.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/jmr3927.h 2009-06-12 16:27:08.686439682 +0200
|
|
|
+@@ -175,6 +175,6 @@
|
|
|
+ void jmr3927_prom_init(void);
|
|
|
+ void jmr3927_irq_setup(void);
|
|
|
+ struct pci_dev;
|
|
|
+-int jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++int jmr3927_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+
|
|
|
+ #endif /* __ASM_TXX9_JMR3927_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/rbtx4927.h rt4ls/arch/mips/include/asm/txx9/rbtx4927.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/rbtx4927.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/rbtx4927.h 2009-06-12 16:27:08.690440751 +0200
|
|
|
+@@ -87,6 +87,6 @@
|
|
|
+ void rbtx4927_prom_init(void);
|
|
|
+ void rbtx4927_irq_setup(void);
|
|
|
+ struct pci_dev;
|
|
|
+-int rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++int rbtx4927_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+
|
|
|
+ #endif /* __ASM_TXX9_RBTX4927_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/rbtx4938.h rt4ls/arch/mips/include/asm/txx9/rbtx4938.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/rbtx4938.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/rbtx4938.h 2009-06-12 16:27:08.690440751 +0200
|
|
|
+@@ -140,6 +140,6 @@
|
|
|
+ void rbtx4938_prom_init(void);
|
|
|
+ void rbtx4938_irq_setup(void);
|
|
|
+ struct pci_dev;
|
|
|
+-int rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++int rbtx4938_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+
|
|
|
+ #endif /* __ASM_TXX9_RBTX4938_H */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/tx4938.h rt4ls/arch/mips/include/asm/txx9/tx4938.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/tx4938.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/tx4938.h 2009-06-12 16:27:08.690440751 +0200
|
|
|
+@@ -287,7 +287,7 @@
|
|
|
+ void tx4938_report_pci1clk(void);
|
|
|
+ int tx4938_pciclk66_setup(void);
|
|
|
+ struct pci_dev;
|
|
|
+-int tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot);
|
|
|
++int tx4938_pcic1_map_irq(struct pci_dev *dev, u8 slot);
|
|
|
+ void tx4938_setup_pcierr_irq(void);
|
|
|
+ void tx4938_irq_init(void);
|
|
|
+ void tx4938_mtd_init(int ch);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/include/asm/txx9/tx4939.h rt4ls/arch/mips/include/asm/txx9/tx4939.h
|
|
|
+--- linux-2.6.30/arch/mips/include/asm/txx9/tx4939.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/include/asm/txx9/tx4939.h 2009-06-12 16:27:08.694430645 +0200
|
|
|
+@@ -534,8 +534,8 @@
|
|
|
+ int tx4939_report_pciclk(void);
|
|
|
+ void tx4939_report_pci1clk(void);
|
|
|
+ struct pci_dev;
|
|
|
+-int tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot);
|
|
|
+-int tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
++int tx4939_pcic1_map_irq(struct pci_dev *dev, u8 slot);
|
|
|
++int tx4939_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
|
+ void tx4939_setup_pcierr_irq(void);
|
|
|
+ void tx4939_irq_init(void);
|
|
|
+ int tx4939_irq(void);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/kernel/Makefile rt4ls/arch/mips/kernel/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/kernel/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/kernel/Makefile 2009-06-12 16:27:08.710440787 +0200
|
|
|
+@@ -73,6 +73,7 @@
|
|
|
+ obj-$(CONFIG_MIPS32_COMPAT) += linux32.o ptrace32.o signal32.o
|
|
|
+ obj-$(CONFIG_MIPS32_N32) += binfmt_elfn32.o scall64-n32.o signal_n32.o
|
|
|
+ obj-$(CONFIG_MIPS32_O32) += binfmt_elfo32.o scall64-o32.o
|
|
|
++obj-$(CONFIG_LOONGSON2F_CPU_FREQ) += loongson2f_freq.o
|
|
|
+
|
|
|
+ obj-$(CONFIG_KGDB) += kgdb.o
|
|
|
+ obj-$(CONFIG_PROC_FS) += proc.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/kernel/asm-offsets.c rt4ls/arch/mips/kernel/asm-offsets.c
|
|
|
+--- linux-2.6.30/arch/mips/kernel/asm-offsets.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/kernel/asm-offsets.c 2009-06-12 16:27:08.710440787 +0200
|
|
|
+@@ -14,6 +14,7 @@
|
|
|
+ #include <linux/mm.h>
|
|
|
+ #include <linux/interrupt.h>
|
|
|
+ #include <linux/kbuild.h>
|
|
|
++#include <linux/suspend.h>
|
|
|
+ #include <asm/ptrace.h>
|
|
|
+ #include <asm/processor.h>
|
|
|
+
|
|
|
+@@ -326,3 +327,15 @@
|
|
|
+ BLANK();
|
|
|
+ }
|
|
|
+ #endif
|
|
|
++
|
|
|
++#ifdef CONFIG_HIBERNATION
|
|
|
++void output_pbe_defines(void)
|
|
|
++{
|
|
|
++ COMMENT(" Linux struct pbe offsets. ");
|
|
|
++ OFFSET(PBE_ADDRESS, pbe, address);
|
|
|
++ OFFSET(PBE_ORIG_ADDRESS, pbe, orig_address);
|
|
|
++ OFFSET(PBE_NEXT, pbe, next);
|
|
|
++ DEFINE(PBE_SIZE, sizeof(struct pbe));
|
|
|
++ BLANK();
|
|
|
++}
|
|
|
++#endif
|
|
|
+diff -Nur linux-2.6.30/arch/mips/kernel/i8259.c rt4ls/arch/mips/kernel/i8259.c
|
|
|
+--- linux-2.6.30/arch/mips/kernel/i8259.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/kernel/i8259.c 2009-06-12 16:27:08.722442317 +0200
|
|
|
+@@ -177,10 +177,12 @@
|
|
|
+ outb(cached_slave_mask, PIC_SLAVE_IMR);
|
|
|
+ outb(0x60+(irq&7), PIC_SLAVE_CMD);/* 'Specific EOI' to slave */
|
|
|
+ outb(0x60+PIC_CASCADE_IR, PIC_MASTER_CMD); /* 'Specific EOI' to master-IRQ2 */
|
|
|
++ inb(PIC_MASTER_CMD); /* flush posted write */
|
|
|
+ } else {
|
|
|
+ inb(PIC_MASTER_IMR); /* DUMMY - (do we need this?) */
|
|
|
+ outb(cached_master_mask, PIC_MASTER_IMR);
|
|
|
+ outb(0x60+irq, PIC_MASTER_CMD); /* 'Specific EOI to master */
|
|
|
++ inb(PIC_MASTER_CMD); /* flush posted write */
|
|
|
+ }
|
|
|
+ smtc_im_ack_irq(irq);
|
|
|
+ spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/kernel/loongson2f_freq.c rt4ls/arch/mips/kernel/loongson2f_freq.c
|
|
|
+--- linux-2.6.30/arch/mips/kernel/loongson2f_freq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/kernel/loongson2f_freq.c 2009-06-12 16:27:08.726441989 +0200
|
|
|
+@@ -0,0 +1,216 @@
|
|
|
++/*
|
|
|
++ * arch/mips/kernel/cpufreq.c
|
|
|
++ *
|
|
|
++ * cpufreq driver for the loongson-2f processors.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 - 2008 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Yanhua, yanh@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ */
|
|
|
++#include <linux/types.h>
|
|
|
++#include <linux/cpufreq.h>
|
|
|
++#include <linux/kernel.h>
|
|
|
++#include <linux/module.h>
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/err.h>
|
|
|
++#include <linux/cpumask.h>
|
|
|
++#include <linux/smp.h>
|
|
|
++#include <linux/sched.h> /* set_cpus_allowed() */
|
|
|
++#include <linux/clk.h>
|
|
|
++#include <linux/delay.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <clock.h>
|
|
|
++
|
|
|
++static uint nowait;
|
|
|
++
|
|
|
++static struct clk *cpuclk;
|
|
|
++
|
|
|
++static void (*saved_cpu_wait) (void);
|
|
|
++
|
|
|
++static int loongson2f_cpu_freq_notifier(struct notifier_block *nb,
|
|
|
++ unsigned long val, void *data);
|
|
|
++
|
|
|
++static struct notifier_block loongson2f_cpufreq_notifier_block = {
|
|
|
++ .notifier_call = loongson2f_cpu_freq_notifier
|
|
|
++};
|
|
|
++
|
|
|
++static int loongson2f_cpu_freq_notifier(struct notifier_block *nb,
|
|
|
++ unsigned long val, void *data)
|
|
|
++{
|
|
|
++ if (val == CPUFREQ_POSTCHANGE)
|
|
|
++ current_cpu_data.udelay_val = loops_per_jiffy;
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static unsigned int loongson2f_cpufreq_get(unsigned int cpu)
|
|
|
++{
|
|
|
++ return clk_get_rate(cpuclk);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Here we notify other drivers of the proposed change and the final change.
|
|
|
++ */
|
|
|
++static int loongson2f_cpufreq_target(struct cpufreq_policy *policy,
|
|
|
++ unsigned int target_freq,
|
|
|
++ unsigned int relation)
|
|
|
++{
|
|
|
++ unsigned int cpu = policy->cpu;
|
|
|
++ unsigned int newstate = 0;
|
|
|
++ cpumask_t cpus_allowed;
|
|
|
++ struct cpufreq_freqs freqs;
|
|
|
++ long freq;
|
|
|
++
|
|
|
++ if (!cpu_online(cpu))
|
|
|
++ return -ENODEV;
|
|
|
++
|
|
|
++ cpus_allowed = current->cpus_allowed;
|
|
|
++ set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
|
|
++
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ BUG_ON(smp_processor_id() != cpu);
|
|
|
++#endif
|
|
|
++
|
|
|
++ if (cpufreq_frequency_table_target
|
|
|
++ (policy, &loongson2f_clockmod_table[0], target_freq, relation,
|
|
|
++ &newstate))
|
|
|
++ return -EINVAL;
|
|
|
++
|
|
|
++ freq =
|
|
|
++ cpu_clock_freq / 1000 * loongson2f_clockmod_table[newstate].index /
|
|
|
++ 8;
|
|
|
++ if (freq < policy->min || freq > policy->max)
|
|
|
++ return -EINVAL;
|
|
|
++
|
|
|
++ pr_debug("cpufreq: requested frequency %u Hz\n", target_freq * 1000);
|
|
|
++
|
|
|
++ freqs.cpu = cpu;
|
|
|
++ freqs.old = loongson2f_cpufreq_get(cpu);
|
|
|
++ freqs.new = freq;
|
|
|
++ freqs.flags = 0;
|
|
|
++
|
|
|
++ if (freqs.new == freqs.old)
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ /* notifiers */
|
|
|
++ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
|
|
|
++
|
|
|
++ set_cpus_allowed(current, cpus_allowed);
|
|
|
++
|
|
|
++ /* setting the cpu frequency */
|
|
|
++ clk_set_rate(cpuclk, freq);
|
|
|
++
|
|
|
++ /* notifiers */
|
|
|
++ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
|
|
++
|
|
|
++ pr_debug("cpufreq: set frequency %lu kHz\n", freq);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static int loongson2f_cpufreq_cpu_init(struct cpufreq_policy *policy)
|
|
|
++{
|
|
|
++ int i;
|
|
|
++ int result;
|
|
|
++
|
|
|
++ if (!cpu_online(policy->cpu))
|
|
|
++ return -ENODEV;
|
|
|
++
|
|
|
++ cpuclk = clk_get(NULL, "cpu_clk");
|
|
|
++ if (IS_ERR(cpuclk)) {
|
|
|
++ printk(KERN_ERR "cpufreq: couldn't get CPU clk\n");
|
|
|
++ return PTR_ERR(cpuclk);
|
|
|
++ }
|
|
|
++
|
|
|
++ cpuclk->rate = cpu_clock_freq / 1000;
|
|
|
++ if (!cpuclk->rate)
|
|
|
++ return -EINVAL;
|
|
|
++
|
|
|
++ /* clock table init */
|
|
|
++ for (i = 2;
|
|
|
++ (loongson2f_clockmod_table[i].frequency != CPUFREQ_TABLE_END);
|
|
|
++ i++) {
|
|
|
++ loongson2f_clockmod_table[i].frequency = (cpuclk->rate * i) / 8;
|
|
|
++ }
|
|
|
++
|
|
|
++ policy->cur = loongson2f_cpufreq_get(policy->cpu);
|
|
|
++
|
|
|
++ cpufreq_frequency_table_get_attr(&loongson2f_clockmod_table[0],
|
|
|
++ policy->cpu);
|
|
|
++
|
|
|
++ result =
|
|
|
++ cpufreq_frequency_table_cpuinfo(policy,
|
|
|
++ &loongson2f_clockmod_table[0]);
|
|
|
++ if (result)
|
|
|
++ return result;
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static int loongson2f_cpufreq_verify(struct cpufreq_policy *policy)
|
|
|
++{
|
|
|
++ return cpufreq_frequency_table_verify(policy,
|
|
|
++ &loongson2f_clockmod_table[0]);
|
|
|
++}
|
|
|
++
|
|
|
++static int loongson2f_cpufreq_exit(struct cpufreq_policy *policy)
|
|
|
++{
|
|
|
++ clk_put(cpuclk);
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static struct freq_attr *loongson2f_table_attr[] = {
|
|
|
++ &cpufreq_freq_attr_scaling_available_freqs,
|
|
|
++ NULL,
|
|
|
++};
|
|
|
++
|
|
|
++static struct cpufreq_driver loongson2f_cpufreq_driver = {
|
|
|
++ .owner = THIS_MODULE,
|
|
|
++ .name = "loongson2f",
|
|
|
++ .init = loongson2f_cpufreq_cpu_init,
|
|
|
++ .verify = loongson2f_cpufreq_verify,
|
|
|
++ .target = loongson2f_cpufreq_target,
|
|
|
++ .get = loongson2f_cpufreq_get,
|
|
|
++ .exit = loongson2f_cpufreq_exit,
|
|
|
++ .attr = loongson2f_table_attr,
|
|
|
++};
|
|
|
++
|
|
|
++static int __init loongson2f_cpufreq_module_init(void)
|
|
|
++{
|
|
|
++ int result;
|
|
|
++
|
|
|
++ printk(KERN_INFO "cpufreq: Loongson-2F CPU frequency driver.\n");
|
|
|
++ result = cpufreq_register_driver(&loongson2f_cpufreq_driver);
|
|
|
++
|
|
|
++ if (!result && !nowait) {
|
|
|
++ saved_cpu_wait = cpu_wait;
|
|
|
++ cpu_wait = loongson2f_cpu_wait;
|
|
|
++ }
|
|
|
++
|
|
|
++ cpufreq_register_notifier(&loongson2f_cpufreq_notifier_block,
|
|
|
++ CPUFREQ_TRANSITION_NOTIFIER);
|
|
|
++ return result;
|
|
|
++}
|
|
|
++
|
|
|
++static void __exit loongson2f_cpufreq_module_exit(void)
|
|
|
++{
|
|
|
++ if (!nowait && saved_cpu_wait)
|
|
|
++ cpu_wait = saved_cpu_wait;
|
|
|
++ cpufreq_unregister_driver(&loongson2f_cpufreq_driver);
|
|
|
++ cpufreq_unregister_notifier(&loongson2f_cpufreq_notifier_block,
|
|
|
++ CPUFREQ_TRANSITION_NOTIFIER);
|
|
|
++}
|
|
|
++
|
|
|
++module_init(loongson2f_cpufreq_module_init);
|
|
|
++module_exit(loongson2f_cpufreq_module_exit);
|
|
|
++
|
|
|
++module_param(nowait, uint, 0644);
|
|
|
++MODULE_PARM_DESC(nowait, "Disable Loongson-2F specific wait");
|
|
|
++
|
|
|
++MODULE_AUTHOR("Yanhua <yanh@lemote.com>");
|
|
|
++MODULE_DESCRIPTION("cpufreq driver for Loongson2F");
|
|
|
++MODULE_LICENSE("GPL");
|
|
|
+diff -Nur linux-2.6.30/arch/mips/kernel/smtc.c rt4ls/arch/mips/kernel/smtc.c
|
|
|
+--- linux-2.6.30/arch/mips/kernel/smtc.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/kernel/smtc.c 2009-06-12 16:27:08.746436158 +0200
|
|
|
+@@ -924,6 +924,7 @@
|
|
|
+ int irq = MIPS_CPU_IRQ_BASE + 1;
|
|
|
+
|
|
|
+ smtc_ipi_nq(&freeIPIq, pipi);
|
|
|
++
|
|
|
+ switch (type_copy) {
|
|
|
+ case SMTC_CLOCK_TICK:
|
|
|
+ irq_enter();
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/Makefile rt4ls/arch/mips/lemote/lm2e/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,7 +0,0 @@
|
|
|
+-#
|
|
|
+-# Makefile for Lemote Fulong mini-PC board.
|
|
|
+-#
|
|
|
+-
|
|
|
+-obj-y += setup.o prom.o reset.o irq.o pci.o bonito-irq.o dbg_io.o mem.o
|
|
|
+-
|
|
|
+-EXTRA_CFLAGS += -Werror
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/bonito-irq.c rt4ls/arch/mips/lemote/lm2e/bonito-irq.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/bonito-irq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/bonito-irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,74 +0,0 @@
|
|
|
+-/*
|
|
|
+- * Copyright 2001 MontaVista Software Inc.
|
|
|
+- * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
|
|
+- * Copyright (C) 2000, 2001 Ralf Baechle (ralf@gnu.org)
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#include <linux/errno.h>
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/io.h>
|
|
|
+-#include <linux/types.h>
|
|
|
+-#include <linux/interrupt.h>
|
|
|
+-#include <linux/irq.h>
|
|
|
+-
|
|
|
+-#include <asm/mips-boards/bonito64.h>
|
|
|
+-
|
|
|
+-
|
|
|
+-static inline void bonito_irq_enable(unsigned int irq)
|
|
|
+-{
|
|
|
+- BONITO_INTENSET = (1 << (irq - BONITO_IRQ_BASE));
|
|
|
+- mmiowb();
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline void bonito_irq_disable(unsigned int irq)
|
|
|
+-{
|
|
|
+- BONITO_INTENCLR = (1 << (irq - BONITO_IRQ_BASE));
|
|
|
+- mmiowb();
|
|
|
+-}
|
|
|
+-
|
|
|
+-static struct irq_chip bonito_irq_type = {
|
|
|
+- .name = "bonito_irq",
|
|
|
+- .ack = bonito_irq_disable,
|
|
|
+- .mask = bonito_irq_disable,
|
|
|
+- .mask_ack = bonito_irq_disable,
|
|
|
+- .unmask = bonito_irq_enable,
|
|
|
+-};
|
|
|
+-
|
|
|
+-static struct irqaction dma_timeout_irqaction = {
|
|
|
+- .handler = no_action,
|
|
|
+- .name = "dma_timeout",
|
|
|
+-};
|
|
|
+-
|
|
|
+-void bonito_irq_init(void)
|
|
|
+-{
|
|
|
+- u32 i;
|
|
|
+-
|
|
|
+- for (i = BONITO_IRQ_BASE; i < BONITO_IRQ_BASE + 32; i++) {
|
|
|
+- set_irq_chip_and_handler(i, &bonito_irq_type, handle_level_irq);
|
|
|
+- }
|
|
|
+-
|
|
|
+- setup_irq(BONITO_IRQ_BASE + 10, &dma_timeout_irqaction);
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/dbg_io.c rt4ls/arch/mips/lemote/lm2e/dbg_io.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/dbg_io.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/dbg_io.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,146 +0,0 @@
|
|
|
+-/*
|
|
|
+- * Copyright 2001 MontaVista Software Inc.
|
|
|
+- * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
|
|
+- * Copyright (C) 2000, 2001 Ralf Baechle (ralf@gnu.org)
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-
|
|
|
+-#include <linux/io.h>
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/types.h>
|
|
|
+-
|
|
|
+-#include <asm/serial.h>
|
|
|
+-
|
|
|
+-#define UART16550_BAUD_2400 2400
|
|
|
+-#define UART16550_BAUD_4800 4800
|
|
|
+-#define UART16550_BAUD_9600 9600
|
|
|
+-#define UART16550_BAUD_19200 19200
|
|
|
+-#define UART16550_BAUD_38400 38400
|
|
|
+-#define UART16550_BAUD_57600 57600
|
|
|
+-#define UART16550_BAUD_115200 115200
|
|
|
+-
|
|
|
+-#define UART16550_PARITY_NONE 0
|
|
|
+-#define UART16550_PARITY_ODD 0x08
|
|
|
+-#define UART16550_PARITY_EVEN 0x18
|
|
|
+-#define UART16550_PARITY_MARK 0x28
|
|
|
+-#define UART16550_PARITY_SPACE 0x38
|
|
|
+-
|
|
|
+-#define UART16550_DATA_5BIT 0x0
|
|
|
+-#define UART16550_DATA_6BIT 0x1
|
|
|
+-#define UART16550_DATA_7BIT 0x2
|
|
|
+-#define UART16550_DATA_8BIT 0x3
|
|
|
+-
|
|
|
+-#define UART16550_STOP_1BIT 0x0
|
|
|
+-#define UART16550_STOP_2BIT 0x4
|
|
|
+-
|
|
|
+-/* ----------------------------------------------------- */
|
|
|
+-
|
|
|
+-/* === CONFIG === */
|
|
|
+-#ifdef CONFIG_64BIT
|
|
|
+-#define BASE (0xffffffffbfd003f8)
|
|
|
+-#else
|
|
|
+-#define BASE (0xbfd003f8)
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-#define MAX_BAUD BASE_BAUD
|
|
|
+-/* === END OF CONFIG === */
|
|
|
+-
|
|
|
+-#define REG_OFFSET 1
|
|
|
+-
|
|
|
+-/* register offset */
|
|
|
+-#define OFS_RCV_BUFFER 0
|
|
|
+-#define OFS_TRANS_HOLD 0
|
|
|
+-#define OFS_SEND_BUFFER 0
|
|
|
+-#define OFS_INTR_ENABLE (1*REG_OFFSET)
|
|
|
+-#define OFS_INTR_ID (2*REG_OFFSET)
|
|
|
+-#define OFS_DATA_FORMAT (3*REG_OFFSET)
|
|
|
+-#define OFS_LINE_CONTROL (3*REG_OFFSET)
|
|
|
+-#define OFS_MODEM_CONTROL (4*REG_OFFSET)
|
|
|
+-#define OFS_RS232_OUTPUT (4*REG_OFFSET)
|
|
|
+-#define OFS_LINE_STATUS (5*REG_OFFSET)
|
|
|
+-#define OFS_MODEM_STATUS (6*REG_OFFSET)
|
|
|
+-#define OFS_RS232_INPUT (6*REG_OFFSET)
|
|
|
+-#define OFS_SCRATCH_PAD (7*REG_OFFSET)
|
|
|
+-
|
|
|
+-#define OFS_DIVISOR_LSB (0*REG_OFFSET)
|
|
|
+-#define OFS_DIVISOR_MSB (1*REG_OFFSET)
|
|
|
+-
|
|
|
+-/* memory-mapped read/write of the port */
|
|
|
+-#define UART16550_READ(y) readb((char *)BASE + (y))
|
|
|
+-#define UART16550_WRITE(y, z) writeb(z, (char *)BASE + (y))
|
|
|
+-
|
|
|
+-void debugInit(u32 baud, u8 data, u8 parity, u8 stop)
|
|
|
+-{
|
|
|
+- u32 divisor;
|
|
|
+-
|
|
|
+- /* disable interrupts */
|
|
|
+- UART16550_WRITE(OFS_INTR_ENABLE, 0);
|
|
|
+-
|
|
|
+- /* set up buad rate */
|
|
|
+- /* set DIAB bit */
|
|
|
+- UART16550_WRITE(OFS_LINE_CONTROL, 0x80);
|
|
|
+-
|
|
|
+- /* set divisor */
|
|
|
+- divisor = MAX_BAUD / baud;
|
|
|
+- UART16550_WRITE(OFS_DIVISOR_LSB, divisor & 0xff);
|
|
|
+- UART16550_WRITE(OFS_DIVISOR_MSB, (divisor & 0xff00) >> 8);
|
|
|
+-
|
|
|
+- /* clear DIAB bit */
|
|
|
+- UART16550_WRITE(OFS_LINE_CONTROL, 0x0);
|
|
|
+-
|
|
|
+- /* set data format */
|
|
|
+- UART16550_WRITE(OFS_DATA_FORMAT, data | parity | stop);
|
|
|
+-}
|
|
|
+-
|
|
|
+-static int remoteDebugInitialized;
|
|
|
+-
|
|
|
+-u8 getDebugChar(void)
|
|
|
+-{
|
|
|
+- if (!remoteDebugInitialized) {
|
|
|
+- remoteDebugInitialized = 1;
|
|
|
+- debugInit(UART16550_BAUD_115200,
|
|
|
+- UART16550_DATA_8BIT,
|
|
|
+- UART16550_PARITY_NONE, UART16550_STOP_1BIT);
|
|
|
+- }
|
|
|
+-
|
|
|
+- while ((UART16550_READ(OFS_LINE_STATUS) & 0x1) == 0) ;
|
|
|
+- return UART16550_READ(OFS_RCV_BUFFER);
|
|
|
+-}
|
|
|
+-
|
|
|
+-int putDebugChar(u8 byte)
|
|
|
+-{
|
|
|
+- if (!remoteDebugInitialized) {
|
|
|
+- remoteDebugInitialized = 1;
|
|
|
+- /*
|
|
|
+- debugInit(UART16550_BAUD_115200,
|
|
|
+- UART16550_DATA_8BIT,
|
|
|
+- UART16550_PARITY_NONE, UART16550_STOP_1BIT); */
|
|
|
+- }
|
|
|
+-
|
|
|
+- while ((UART16550_READ(OFS_LINE_STATUS) & 0x20) == 0) ;
|
|
|
+- UART16550_WRITE(OFS_SEND_BUFFER, byte);
|
|
|
+- return 1;
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/irq.c rt4ls/arch/mips/lemote/lm2e/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/irq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,143 +0,0 @@
|
|
|
+-/*
|
|
|
+- * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#include <linux/delay.h>
|
|
|
+-#include <linux/io.h>
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/interrupt.h>
|
|
|
+-#include <linux/irq.h>
|
|
|
+-
|
|
|
+-#include <asm/irq_cpu.h>
|
|
|
+-#include <asm/i8259.h>
|
|
|
+-#include <asm/mipsregs.h>
|
|
|
+-#include <asm/mips-boards/bonito64.h>
|
|
|
+-
|
|
|
+-
|
|
|
+-/*
|
|
|
+- * the first level int-handler will jump here if it is a bonito irq
|
|
|
+- */
|
|
|
+-static void bonito_irqdispatch(void)
|
|
|
+-{
|
|
|
+- u32 int_status;
|
|
|
+- int i;
|
|
|
+-
|
|
|
+- /* workaround the IO dma problem: let cpu looping to allow DMA finish */
|
|
|
+- int_status = BONITO_INTISR;
|
|
|
+- if (int_status & (1 << 10)) {
|
|
|
+- while (int_status & (1 << 10)) {
|
|
|
+- udelay(1);
|
|
|
+- int_status = BONITO_INTISR;
|
|
|
+- }
|
|
|
+- }
|
|
|
+-
|
|
|
+- /* Get pending sources, masked by current enables */
|
|
|
+- int_status = BONITO_INTISR & BONITO_INTEN;
|
|
|
+-
|
|
|
+- if (int_status != 0) {
|
|
|
+- i = __ffs(int_status);
|
|
|
+- int_status &= ~(1 << i);
|
|
|
+- do_IRQ(BONITO_IRQ_BASE + i);
|
|
|
+- }
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void i8259_irqdispatch(void)
|
|
|
+-{
|
|
|
+- int irq;
|
|
|
+-
|
|
|
+- irq = i8259_irq();
|
|
|
+- if (irq >= 0) {
|
|
|
+- do_IRQ(irq);
|
|
|
+- } else {
|
|
|
+- spurious_interrupt();
|
|
|
+- }
|
|
|
+-
|
|
|
+-}
|
|
|
+-
|
|
|
+-asmlinkage void plat_irq_dispatch(void)
|
|
|
+-{
|
|
|
+- unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
|
|
|
+-
|
|
|
+- if (pending & CAUSEF_IP7) {
|
|
|
+- do_IRQ(MIPS_CPU_IRQ_BASE + 7);
|
|
|
+- } else if (pending & CAUSEF_IP5) {
|
|
|
+- i8259_irqdispatch();
|
|
|
+- } else if (pending & CAUSEF_IP2) {
|
|
|
+- bonito_irqdispatch();
|
|
|
+- } else {
|
|
|
+- spurious_interrupt();
|
|
|
+- }
|
|
|
+-}
|
|
|
+-
|
|
|
+-static struct irqaction cascade_irqaction = {
|
|
|
+- .handler = no_action,
|
|
|
+- .name = "cascade",
|
|
|
+-};
|
|
|
+-
|
|
|
+-void __init arch_init_irq(void)
|
|
|
+-{
|
|
|
+- extern void bonito_irq_init(void);
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * Clear all of the interrupts while we change the able around a bit.
|
|
|
+- * int-handler is not on bootstrap
|
|
|
+- */
|
|
|
+- clear_c0_status(ST0_IM | ST0_BEV);
|
|
|
+- local_irq_disable();
|
|
|
+-
|
|
|
+- /* most bonito irq should be level triggered */
|
|
|
+- BONITO_INTEDGE = BONITO_ICU_SYSTEMERR | BONITO_ICU_MASTERERR |
|
|
|
+- BONITO_ICU_RETRYERR | BONITO_ICU_MBOXES;
|
|
|
+- BONITO_INTSTEER = 0;
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * Mask out all interrupt by writing "1" to all bit position in
|
|
|
+- * the interrupt reset reg.
|
|
|
+- */
|
|
|
+- BONITO_INTENCLR = ~0;
|
|
|
+-
|
|
|
+- /* init all controller
|
|
|
+- * 0-15 ------> i8259 interrupt
|
|
|
+- * 16-23 ------> mips cpu interrupt
|
|
|
+- * 32-63 ------> bonito irq
|
|
|
+- */
|
|
|
+-
|
|
|
+- /* Sets the first-level interrupt dispatcher. */
|
|
|
+- mips_cpu_irq_init();
|
|
|
+- init_i8259_irqs();
|
|
|
+- bonito_irq_init();
|
|
|
+-
|
|
|
+- /*
|
|
|
+- printk("GPIODATA=%x, GPIOIE=%x\n", BONITO_GPIODATA, BONITO_GPIOIE);
|
|
|
+- printk("INTEN=%x, INTSET=%x, INTCLR=%x, INTISR=%x\n",
|
|
|
+- BONITO_INTEN, BONITO_INTENSET,
|
|
|
+- BONITO_INTENCLR, BONITO_INTISR);
|
|
|
+- */
|
|
|
+-
|
|
|
+- /* bonito irq at IP2 */
|
|
|
+- setup_irq(MIPS_CPU_IRQ_BASE + 2, &cascade_irqaction);
|
|
|
+- /* 8259 irq at IP5 */
|
|
|
+- setup_irq(MIPS_CPU_IRQ_BASE + 5, &cascade_irqaction);
|
|
|
+-
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/mem.c rt4ls/arch/mips/lemote/lm2e/mem.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/mem.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/mem.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,23 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- */
|
|
|
+-#include <linux/fs.h>
|
|
|
+-#include <linux/fcntl.h>
|
|
|
+-#include <linux/mm.h>
|
|
|
+-
|
|
|
+-/* override of arch/mips/mm/cache.c: __uncached_access */
|
|
|
+-int __uncached_access(struct file *file, unsigned long addr)
|
|
|
+-{
|
|
|
+- if (file->f_flags & O_SYNC)
|
|
|
+- return 1;
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * On the Lemote Loongson 2e system, the peripheral registers
|
|
|
+- * reside between 0x1000:0000 and 0x2000:0000.
|
|
|
+- */
|
|
|
+- return addr >= __pa(high_memory) ||
|
|
|
+- ((addr >= 0x10000000) && (addr < 0x20000000));
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/pci.c rt4ls/arch/mips/lemote/lm2e/pci.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/pci.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/pci.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,97 +0,0 @@
|
|
|
+-/*
|
|
|
+- * pci.c
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#include <linux/types.h>
|
|
|
+-#include <linux/pci.h>
|
|
|
+-#include <linux/kernel.h>
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <asm/mips-boards/bonito64.h>
|
|
|
+-#include <asm/mach-lemote/pci.h>
|
|
|
+-
|
|
|
+-extern struct pci_ops bonito64_pci_ops;
|
|
|
+-
|
|
|
+-static struct resource loongson2e_pci_mem_resource = {
|
|
|
+- .name = "LOONGSON2E PCI MEM",
|
|
|
+- .start = LOONGSON2E_PCI_MEM_START,
|
|
|
+- .end = LOONGSON2E_PCI_MEM_END,
|
|
|
+- .flags = IORESOURCE_MEM,
|
|
|
+-};
|
|
|
+-
|
|
|
+-static struct resource loongson2e_pci_io_resource = {
|
|
|
+- .name = "LOONGSON2E PCI IO MEM",
|
|
|
+- .start = LOONGSON2E_PCI_IO_START,
|
|
|
+- .end = IO_SPACE_LIMIT,
|
|
|
+- .flags = IORESOURCE_IO,
|
|
|
+-};
|
|
|
+-
|
|
|
+-static struct pci_controller loongson2e_pci_controller = {
|
|
|
+- .pci_ops = &bonito64_pci_ops,
|
|
|
+- .io_resource = &loongson2e_pci_io_resource,
|
|
|
+- .mem_resource = &loongson2e_pci_mem_resource,
|
|
|
+- .mem_offset = 0x00000000UL,
|
|
|
+- .io_offset = 0x00000000UL,
|
|
|
+-};
|
|
|
+-
|
|
|
+-static void __init ict_pcimap(void)
|
|
|
+-{
|
|
|
+- /*
|
|
|
+- * local to PCI mapping: [256M,512M] -> [256M,512M]; differ from PMON
|
|
|
+- *
|
|
|
+- * CPU address space [256M,448M] is window for accessing pci space
|
|
|
+- * we set pcimap_lo[0,1,2] to map it to pci space [256M,448M]
|
|
|
+- * pcimap: bit18,pcimap_2; bit[17-12],lo2;bit[11-6],lo1;bit[5-0],lo0
|
|
|
+- */
|
|
|
+- /* 1,00 0110 ,0001 01,00 0000 */
|
|
|
+- BONITO_PCIMAP = 0x46140;
|
|
|
+-
|
|
|
+- /* 1, 00 0010, 0000,01, 00 0000 */
|
|
|
+- /* BONITO_PCIMAP = 0x42040; */
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * PCI to local mapping: [2G,2G+256M] -> [0,256M]
|
|
|
+- */
|
|
|
+- BONITO_PCIBASE0 = 0x80000000;
|
|
|
+- BONITO_PCIBASE1 = 0x00800000;
|
|
|
+- BONITO_PCIBASE2 = 0x90000000;
|
|
|
+-
|
|
|
+-}
|
|
|
+-
|
|
|
+-static int __init pcibios_init(void)
|
|
|
+-{
|
|
|
+- ict_pcimap();
|
|
|
+-
|
|
|
+- loongson2e_pci_controller.io_map_base =
|
|
|
+- (unsigned long) ioremap(LOONGSON2E_IO_PORT_BASE,
|
|
|
+- loongson2e_pci_io_resource.end -
|
|
|
+- loongson2e_pci_io_resource.start + 1);
|
|
|
+-
|
|
|
+- register_pci_controller(&loongson2e_pci_controller);
|
|
|
+-
|
|
|
+- return 0;
|
|
|
+-}
|
|
|
+-
|
|
|
+-arch_initcall(pcibios_init);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/prom.c rt4ls/arch/mips/lemote/lm2e/prom.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/prom.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/prom.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,97 +0,0 @@
|
|
|
+-/*
|
|
|
+- * Based on Ocelot Linux port, which is
|
|
|
+- * Copyright 2001 MontaVista Software Inc.
|
|
|
+- * Author: jsun@mvista.com or jsun@junsun.net
|
|
|
+- *
|
|
|
+- * Copyright 2003 ICT CAS
|
|
|
+- * Author: Michael Guo <guoyi@ict.ac.cn>
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- */
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/bootmem.h>
|
|
|
+-#include <asm/bootinfo.h>
|
|
|
+-
|
|
|
+-extern unsigned long bus_clock;
|
|
|
+-extern unsigned long cpu_clock_freq;
|
|
|
+-extern unsigned int memsize, highmemsize;
|
|
|
+-extern int putDebugChar(unsigned char byte);
|
|
|
+-
|
|
|
+-static int argc;
|
|
|
+-/* pmon passes arguments in 32bit pointers */
|
|
|
+-static int *arg;
|
|
|
+-static int *env;
|
|
|
+-
|
|
|
+-const char *get_system_type(void)
|
|
|
+-{
|
|
|
+- return "lemote-fulong";
|
|
|
+-}
|
|
|
+-
|
|
|
+-void __init prom_init_cmdline(void)
|
|
|
+-{
|
|
|
+- int i;
|
|
|
+- long l;
|
|
|
+-
|
|
|
+- /* arg[0] is "g", the rest is boot parameters */
|
|
|
+- arcs_cmdline[0] = '\0';
|
|
|
+- for (i = 1; i < argc; i++) {
|
|
|
+- l = (long)arg[i];
|
|
|
+- if (strlen(arcs_cmdline) + strlen(((char *)l) + 1)
|
|
|
+- >= sizeof(arcs_cmdline))
|
|
|
+- break;
|
|
|
+- strcat(arcs_cmdline, ((char *)l));
|
|
|
+- strcat(arcs_cmdline, " ");
|
|
|
+- }
|
|
|
+-}
|
|
|
+-
|
|
|
+-void __init prom_init(void)
|
|
|
+-{
|
|
|
+- long l;
|
|
|
+- argc = fw_arg0;
|
|
|
+- arg = (int *)fw_arg1;
|
|
|
+- env = (int *)fw_arg2;
|
|
|
+-
|
|
|
+- prom_init_cmdline();
|
|
|
+-
|
|
|
+- if ((strstr(arcs_cmdline, "console=")) == NULL)
|
|
|
+- strcat(arcs_cmdline, " console=ttyS0,115200");
|
|
|
+- if ((strstr(arcs_cmdline, "root=")) == NULL)
|
|
|
+- strcat(arcs_cmdline, " root=/dev/hda1");
|
|
|
+-
|
|
|
+-#define parse_even_earlier(res, option, p) \
|
|
|
+-do { \
|
|
|
+- if (strncmp(option, (char *)p, strlen(option)) == 0) \
|
|
|
+- res = simple_strtol((char *)p + strlen(option"="), \
|
|
|
+- NULL, 10); \
|
|
|
+-} while (0)
|
|
|
+-
|
|
|
+- l = (long)*env;
|
|
|
+- while (l != 0) {
|
|
|
+- parse_even_earlier(bus_clock, "busclock", l);
|
|
|
+- parse_even_earlier(cpu_clock_freq, "cpuclock", l);
|
|
|
+- parse_even_earlier(memsize, "memsize", l);
|
|
|
+- parse_even_earlier(highmemsize, "highmemsize", l);
|
|
|
+- env++;
|
|
|
+- l = (long)*env;
|
|
|
+- }
|
|
|
+- if (memsize == 0)
|
|
|
+- memsize = 256;
|
|
|
+-
|
|
|
+- pr_info("busclock=%ld, cpuclock=%ld,memsize=%d,highmemsize=%d\n",
|
|
|
+- bus_clock, cpu_clock_freq, memsize, highmemsize);
|
|
|
+-}
|
|
|
+-
|
|
|
+-void __init prom_free_prom_memory(void)
|
|
|
+-{
|
|
|
+-}
|
|
|
+-
|
|
|
+-void prom_putchar(char c)
|
|
|
+-{
|
|
|
+- putDebugChar(c);
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/reset.c rt4ls/arch/mips/lemote/lm2e/reset.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/reset.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/reset.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,41 +0,0 @@
|
|
|
+-/*
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- */
|
|
|
+-#include <linux/pm.h>
|
|
|
+-
|
|
|
+-#include <asm/reboot.h>
|
|
|
+-
|
|
|
+-static void loongson2e_restart(char *command)
|
|
|
+-{
|
|
|
+-#ifdef CONFIG_32BIT
|
|
|
+- *(unsigned long *)0xbfe00104 &= ~(1 << 2);
|
|
|
+- *(unsigned long *)0xbfe00104 |= (1 << 2);
|
|
|
+-#else
|
|
|
+- *(unsigned long *)0xffffffffbfe00104 &= ~(1 << 2);
|
|
|
+- *(unsigned long *)0xffffffffbfe00104 |= (1 << 2);
|
|
|
+-#endif
|
|
|
+- __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000));
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void loongson2e_halt(void)
|
|
|
+-{
|
|
|
+- while (1) ;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void loongson2e_power_off(void)
|
|
|
+-{
|
|
|
+- loongson2e_halt();
|
|
|
+-}
|
|
|
+-
|
|
|
+-void mips_reboot_setup(void)
|
|
|
+-{
|
|
|
+- _machine_restart = loongson2e_restart;
|
|
|
+- _machine_halt = loongson2e_halt;
|
|
|
+- pm_power_off = loongson2e_power_off;
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lemote/lm2e/setup.c rt4ls/arch/mips/lemote/lm2e/setup.c
|
|
|
+--- linux-2.6.30/arch/mips/lemote/lm2e/setup.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lemote/lm2e/setup.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,111 +0,0 @@
|
|
|
+-/*
|
|
|
+- * BRIEF MODULE DESCRIPTION
|
|
|
+- * setup.c - board dependent boot routines
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#include <linux/bootmem.h>
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/irq.h>
|
|
|
+-
|
|
|
+-#include <asm/bootinfo.h>
|
|
|
+-#include <asm/mc146818-time.h>
|
|
|
+-#include <asm/time.h>
|
|
|
+-#include <asm/wbflush.h>
|
|
|
+-#include <asm/mach-lemote/pci.h>
|
|
|
+-
|
|
|
+-#ifdef CONFIG_VT
|
|
|
+-#include <linux/console.h>
|
|
|
+-#include <linux/screen_info.h>
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-extern void mips_reboot_setup(void);
|
|
|
+-
|
|
|
+-unsigned long cpu_clock_freq;
|
|
|
+-unsigned long bus_clock;
|
|
|
+-unsigned int memsize;
|
|
|
+-unsigned int highmemsize = 0;
|
|
|
+-
|
|
|
+-void __init plat_time_init(void)
|
|
|
+-{
|
|
|
+- /* setup mips r4k timer */
|
|
|
+- mips_hpt_frequency = cpu_clock_freq / 2;
|
|
|
+-}
|
|
|
+-
|
|
|
+-unsigned long read_persistent_clock(void)
|
|
|
+-{
|
|
|
+- return mc146818_get_cmos_time();
|
|
|
+-}
|
|
|
+-
|
|
|
+-void (*__wbflush)(void);
|
|
|
+-EXPORT_SYMBOL(__wbflush);
|
|
|
+-
|
|
|
+-static void wbflush_loongson2e(void)
|
|
|
+-{
|
|
|
+- asm(".set\tpush\n\t"
|
|
|
+- ".set\tnoreorder\n\t"
|
|
|
+- ".set mips3\n\t"
|
|
|
+- "sync\n\t"
|
|
|
+- "nop\n\t"
|
|
|
+- ".set\tpop\n\t"
|
|
|
+- ".set mips0\n\t");
|
|
|
+-}
|
|
|
+-
|
|
|
+-void __init plat_mem_setup(void)
|
|
|
+-{
|
|
|
+- set_io_port_base((unsigned long)ioremap(LOONGSON2E_IO_PORT_BASE,
|
|
|
+- IO_SPACE_LIMIT - LOONGSON2E_PCI_IO_START + 1));
|
|
|
+- mips_reboot_setup();
|
|
|
+-
|
|
|
+- __wbflush = wbflush_loongson2e;
|
|
|
+-
|
|
|
+- add_memory_region(0x0, (memsize << 20), BOOT_MEM_RAM);
|
|
|
+-#ifdef CONFIG_64BIT
|
|
|
+- if (highmemsize > 0) {
|
|
|
+- add_memory_region(0x20000000, highmemsize << 20, BOOT_MEM_RAM);
|
|
|
+- }
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-#ifdef CONFIG_VT
|
|
|
+-#if defined(CONFIG_VGA_CONSOLE)
|
|
|
+- conswitchp = &vga_con;
|
|
|
+-
|
|
|
+- screen_info = (struct screen_info) {
|
|
|
+- 0, 25, /* orig-x, orig-y */
|
|
|
+- 0, /* unused */
|
|
|
+- 0, /* orig-video-page */
|
|
|
+- 0, /* orig-video-mode */
|
|
|
+- 80, /* orig-video-cols */
|
|
|
+- 0, 0, 0, /* ega_ax, ega_bx, ega_cx */
|
|
|
+- 25, /* orig-video-lines */
|
|
|
+- VIDEO_TYPE_VGAC, /* orig-video-isVGA */
|
|
|
+- 16 /* orig-video-points */
|
|
|
+- };
|
|
|
+-#elif defined(CONFIG_DUMMY_CONSOLE)
|
|
|
+- conswitchp = &dummy_con;
|
|
|
+-#endif
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/lib/delay.c rt4ls/arch/mips/lib/delay.c
|
|
|
+--- linux-2.6.30/arch/mips/lib/delay.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/lib/delay.c 2009-06-12 16:27:08.762444064 +0200
|
|
|
+@@ -43,7 +43,7 @@
|
|
|
+ {
|
|
|
+ unsigned int lpj = current_cpu_data.udelay_val;
|
|
|
+
|
|
|
+- __delay((us * 0x000010c7 * HZ * lpj) >> 32);
|
|
|
++ __delay((us * 0x000010c7ull * HZ * lpj) >> 32);
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL(__udelay);
|
|
|
+
|
|
|
+@@ -51,6 +51,6 @@
|
|
|
+ {
|
|
|
+ unsigned int lpj = current_cpu_data.udelay_val;
|
|
|
+
|
|
|
+- __delay((us * 0x00000005 * HZ * lpj) >> 32);
|
|
|
++ __delay((ns * 0x00000005ull * HZ * lpj) >> 32);
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL(__ndelay);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/Kconfig rt4ls/arch/mips/loongson/Kconfig
|
|
|
+--- linux-2.6.30/arch/mips/loongson/Kconfig 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/Kconfig 2009-06-12 16:27:08.770446201 +0200
|
|
|
+@@ -0,0 +1,135 @@
|
|
|
++choice
|
|
|
++ prompt "Machine Type"
|
|
|
++ depends on MACH_LOONGSON
|
|
|
++
|
|
|
++config LEMOTE_FULOONG2E
|
|
|
++ bool "Lemote Fuloong(2e) mini-PC"
|
|
|
++ select ARCH_SPARSEMEM_ENABLE
|
|
|
++ select CEVT_R4K
|
|
|
++ select CSRC_R4K
|
|
|
++ select SYS_HAS_CPU_LOONGSON2E
|
|
|
++ select DMA_NONCOHERENT
|
|
|
++ select BOOT_ELF32
|
|
|
++ select BOARD_SCACHE
|
|
|
++ select HW_HAS_PCI
|
|
|
++ select I8259
|
|
|
++ select ISA
|
|
|
++ select IRQ_CPU
|
|
|
++ select SYS_SUPPORTS_32BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_64BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_LITTLE_ENDIAN
|
|
|
++ select SYS_SUPPORTS_HIGHMEM
|
|
|
++ select SYS_HAS_EARLY_PRINTK
|
|
|
++ select GENERIC_HARDIRQS_NO__DO_IRQ
|
|
|
++ select GENERIC_ISA_DMA_SUPPORT_BROKEN
|
|
|
++ select CPU_HAS_WB
|
|
|
++ help
|
|
|
++ Lemote Fuloong(2e) mini-PC board based on the Chinese Loongson-2E CPU and
|
|
|
++ an FPGA northbridge
|
|
|
++
|
|
|
++ Lemote Fuloong(2e) mini PC have a VIA686B south bridge.
|
|
|
++
|
|
|
++config LEMOTE_FULOONG2F
|
|
|
++ bool "Lemote Fuloong(2f) mini-PC"
|
|
|
++ select ARCH_SPARSEMEM_ENABLE
|
|
|
++ select CEVT_R4K if !CS5536_MFGPT
|
|
|
++ select CSRC_R4K if !CS5536_MFGPT
|
|
|
++ select SYS_HAS_CPU_LOONGSON2F
|
|
|
++ select DMA_NONCOHERENT
|
|
|
++ select BOOT_ELF32
|
|
|
++ select BOARD_SCACHE
|
|
|
++ select HW_HAS_PCI
|
|
|
++ select I8259
|
|
|
++ select ISA
|
|
|
++ select IRQ_CPU
|
|
|
++ select SYS_SUPPORTS_32BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_64BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_LITTLE_ENDIAN
|
|
|
++ select SYS_SUPPORTS_HIGHMEM
|
|
|
++ select SYS_HAS_EARLY_PRINTK
|
|
|
++ select GENERIC_HARDIRQS_NO__DO_IRQ
|
|
|
++ select GENERIC_ISA_DMA_SUPPORT_BROKEN
|
|
|
++ select CPU_HAS_WB
|
|
|
++ select CS5536
|
|
|
++ help
|
|
|
++ Lemote Fuloong(2f) mini-PC board based on the Chinese Loongson-2F
|
|
|
++ CPU, which has an internal DDR and PCIX controller. the PCIX
|
|
|
++ controller have the similiar programming interface of the FPGA north
|
|
|
++ bridge of LOONGSON2E.
|
|
|
++
|
|
|
++ Lemote Fuloong(2f) mini PC have an AMD CS5536 south bridge.
|
|
|
++
|
|
|
++config LEMOTE_YEELOONG2F
|
|
|
++ bool "Lemote Yeeloong(2f) mini Notebook"
|
|
|
++ select ARCH_SPARSEMEM_ENABLE
|
|
|
++ select CEVT_R4K if !CS5536_MFGPT
|
|
|
++ select CSRC_R4K if !CS5536_MFGPT
|
|
|
++ select SYS_HAS_CPU_LOONGSON2F
|
|
|
++ select DMA_NONCOHERENT
|
|
|
++ select BOOT_ELF32
|
|
|
++ select BOARD_SCACHE
|
|
|
++ select HW_HAS_PCI
|
|
|
++ select I8259
|
|
|
++ select ISA
|
|
|
++ select IRQ_CPU
|
|
|
++ select SYS_SUPPORTS_32BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_64BIT_KERNEL
|
|
|
++ select SYS_SUPPORTS_LITTLE_ENDIAN
|
|
|
++ select SYS_SUPPORTS_HIGHMEM
|
|
|
++ select SYS_HAS_EARLY_PRINTK
|
|
|
++ select SYS_HAS_MACH_PROM_INIT_CMDLINE
|
|
|
++ select GENERIC_HARDIRQS_NO__DO_IRQ
|
|
|
++ select GENERIC_ISA_DMA_SUPPORT_BROKEN
|
|
|
++ select CPU_HAS_WB
|
|
|
++ select CS5536
|
|
|
++ help
|
|
|
++ Lemote Laptop based on the Chinese Loongson-2F CPU, which has an
|
|
|
++ internal DDR and PCIX controller. the PCIX controller have the
|
|
|
++ similiar programming interface of the FPGA north bridge of
|
|
|
++ LOONGSON2E.
|
|
|
++
|
|
|
++ Lemote Yeeloong(2f) laptop have an AMD CS5536 south bridge and an EC
|
|
|
++ controller.
|
|
|
++
|
|
|
++endchoice
|
|
|
++
|
|
|
++config CS5536
|
|
|
++ bool
|
|
|
++
|
|
|
++config CS5536_FLASH
|
|
|
++ bool
|
|
|
++ depends on CS5536
|
|
|
++
|
|
|
++config CS5536_NOR_FLASH
|
|
|
++ bool
|
|
|
++ depends on CS5536_FLASH
|
|
|
++
|
|
|
++config CS5536_OTG
|
|
|
++ bool
|
|
|
++ depends on CS5536
|
|
|
++
|
|
|
++config CS5536_UDC
|
|
|
++ bool
|
|
|
++ depends on CS5536
|
|
|
++
|
|
|
++config SYS_HAS_MACH_PROM_INIT_CMDLINE
|
|
|
++ bool
|
|
|
++
|
|
|
++config CS5536_MFGPT
|
|
|
++ bool "Using cs5536's MFGPT as system clock"
|
|
|
++ depends on CS5536
|
|
|
++ help
|
|
|
++ This is needed if cpufreq and oprofile is enabled in Loongson2(F)
|
|
|
++ machines
|
|
|
++
|
|
|
++config UCA_SIZE
|
|
|
++ hex "Uncache Accelerated Region size"
|
|
|
++ depends on CPU_LOONGSON2F
|
|
|
++ default 0x400000 if LEMOTE_YEELOONG2F
|
|
|
++ default 0x2000000 if LEMOTE_FULOONG2F
|
|
|
++ help
|
|
|
++ Uncached Acceleration(UCA) can greatly improve video performance.
|
|
|
++ Normally the Video memory can be accessed in Uncached Accelerated mode,
|
|
|
++ other peripheral spaces not.
|
|
|
++
|
|
|
++ Specify a zeroed size to disable this feature.
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/Makefile rt4ls/arch/mips/loongson/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/Makefile 2009-06-12 16:27:08.770446201 +0200
|
|
|
+@@ -0,0 +1,23 @@
|
|
|
++#
|
|
|
++# Common code for all Loongson based systems
|
|
|
++#
|
|
|
++
|
|
|
++obj-$(CONFIG_MACH_LOONGSON) += common/
|
|
|
++
|
|
|
++#
|
|
|
++# Lemote Fuloong mini-PC (Loongson 2E-based)
|
|
|
++#
|
|
|
++
|
|
|
++obj-$(CONFIG_LEMOTE_FULOONG2E) += fuloong-2e/
|
|
|
++
|
|
|
++#
|
|
|
++# Lemote Fuloong mini-PC (Loongson 2F-based)
|
|
|
++#
|
|
|
++
|
|
|
++obj-$(CONFIG_LEMOTE_FULOONG2F) += fuloong-2f/
|
|
|
++
|
|
|
++#
|
|
|
++# Lemote Yeeloong mini-PC (Loongson 2F-based)
|
|
|
++#
|
|
|
++
|
|
|
++obj-$(CONFIG_LEMOTE_YEELOONG2F) += yeeloong-2f/
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/Makefile rt4ls/arch/mips/loongson/common/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/Makefile 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,37 @@
|
|
|
++#
|
|
|
++# Makefile for loongson based machines.
|
|
|
++#
|
|
|
++
|
|
|
++obj-y += setup.o init.o cmdline.o env.o time.o reset.o irq.o \
|
|
|
++ pci.o bonito-irq.o mem.o machtype.o
|
|
|
++
|
|
|
++#
|
|
|
++# Early printk support
|
|
|
++#
|
|
|
++obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
|
|
++
|
|
|
++#
|
|
|
++# Enable RTC Class support
|
|
|
++#
|
|
|
++# please enable CONFIG_RTC_DRV_CMOS
|
|
|
++#
|
|
|
++obj-$(CONFIG_RTC_DRV_CMOS) += rtc.o
|
|
|
++
|
|
|
++#
|
|
|
++# Enable CS5536 Virtual Support Module(VSM) for virtulize the PCI configure
|
|
|
++# space
|
|
|
++#
|
|
|
++obj-$(CONFIG_CS5536) += cs5536/
|
|
|
++
|
|
|
++#
|
|
|
++# Enable fuloong(2f) and yeeloong(2f) cpu frequency scaling support
|
|
|
++# This is based on CS5536 mfgpt timer
|
|
|
++#
|
|
|
++obj-$(CONFIG_LOONGSON2F_CPU_FREQ) += clock.o
|
|
|
++
|
|
|
++#
|
|
|
++# Enable serial port
|
|
|
++#
|
|
|
++obj-$(CONFIG_SERIAL_8250) += serial.o
|
|
|
++
|
|
|
++EXTRA_CFLAGS += -Werror
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/bonito-irq.c rt4ls/arch/mips/loongson/common/bonito-irq.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/bonito-irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/bonito-irq.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,78 @@
|
|
|
++/*
|
|
|
++ * Copyright 2001 MontaVista Software Inc.
|
|
|
++ * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
|
|
++ * Copyright (C) 2000, 2001 Ralf Baechle (ralf@gnu.org)
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License along
|
|
|
++ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
++ * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
++ *
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/interrupt.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++static inline void bonito_irq_enable(unsigned int irq)
|
|
|
++{
|
|
|
++ LOONGSON_INTENSET = (1 << (irq - LOONGSON_IRQ_BASE));
|
|
|
++ /* flush posted write */
|
|
|
++ (void)LOONGSON_INTENSET;
|
|
|
++ mmiowb();
|
|
|
++}
|
|
|
++
|
|
|
++static inline void bonito_irq_disable(unsigned int irq)
|
|
|
++{
|
|
|
++ LOONGSON_INTENCLR = (1 << (irq - LOONGSON_IRQ_BASE));
|
|
|
++ /* flush posted write */
|
|
|
++ (void)LOONGSON_INTENCLR;
|
|
|
++ mmiowb();
|
|
|
++}
|
|
|
++
|
|
|
++static struct irq_chip bonito_irq_type = {
|
|
|
++ .name = "bonito_irq",
|
|
|
++ .ack = bonito_irq_disable,
|
|
|
++ .mask = bonito_irq_disable,
|
|
|
++ .mask_ack = bonito_irq_disable,
|
|
|
++ .unmask = bonito_irq_enable,
|
|
|
++};
|
|
|
++
|
|
|
++/* there is no need to handle dma timeout in loongson-2f based machines */
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2E
|
|
|
++static struct irqaction dma_timeout_irqaction = {
|
|
|
++ .handler = no_action,
|
|
|
++ .name = "dma_timeout",
|
|
|
++};
|
|
|
++#endif
|
|
|
++
|
|
|
++void bonito_irq_init(void)
|
|
|
++{
|
|
|
++ u32 i;
|
|
|
++
|
|
|
++ for (i = LOONGSON_IRQ_BASE; i < LOONGSON_IRQ_BASE + 32; i++)
|
|
|
++ set_irq_chip_and_handler(i, &bonito_irq_type, handle_level_irq);
|
|
|
++
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2E
|
|
|
++ setup_irq(LOONGSON_DMATIMEOUT_IRQ, &dma_timeout_irqaction);
|
|
|
++#endif
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/clock.c rt4ls/arch/mips/loongson/common/clock.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/clock.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/clock.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,166 @@
|
|
|
++/*
|
|
|
++ * arch/mips/loongson/common/clock.c
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 - 2008 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Yanhua, yanh@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/cpufreq.h>
|
|
|
++#include <linux/platform_device.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <clock.h>
|
|
|
++
|
|
|
++static LIST_HEAD(clock_list);
|
|
|
++static DEFINE_SPINLOCK(clock_lock);
|
|
|
++static DEFINE_MUTEX(clock_list_sem);
|
|
|
++
|
|
|
++/* Minimum CLK support */
|
|
|
++enum {
|
|
|
++ DC_ZERO, DC_25PT = 2, DC_37PT, DC_50PT, DC_62PT, DC_75PT,
|
|
|
++ DC_87PT, DC_DISABLE, DC_RESV
|
|
|
++};
|
|
|
++
|
|
|
++struct cpufreq_frequency_table loongson2f_clockmod_table[] = {
|
|
|
++ {DC_RESV, CPUFREQ_ENTRY_INVALID},
|
|
|
++ {DC_ZERO, CPUFREQ_ENTRY_INVALID},
|
|
|
++ {DC_25PT, 0},
|
|
|
++ {DC_37PT, 0},
|
|
|
++ {DC_50PT, 0},
|
|
|
++ {DC_62PT, 0},
|
|
|
++ {DC_75PT, 0},
|
|
|
++ {DC_87PT, 0},
|
|
|
++ {DC_DISABLE, 0},
|
|
|
++ {DC_RESV, CPUFREQ_TABLE_END},
|
|
|
++};
|
|
|
++EXPORT_SYMBOL_GPL(loongson2f_clockmod_table);
|
|
|
++
|
|
|
++static struct clk cpu_clk = {
|
|
|
++ .name = "cpu_clk",
|
|
|
++ .flags = CLK_ALWAYS_ENABLED | CLK_RATE_PROPAGATES,
|
|
|
++ .rate = 800000000,
|
|
|
++};
|
|
|
++
|
|
|
++struct clk *clk_get(struct device *dev, const char *id)
|
|
|
++{
|
|
|
++ return &cpu_clk;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(clk_get);
|
|
|
++
|
|
|
++static void propagate_rate(struct clk *clk)
|
|
|
++{
|
|
|
++ struct clk *clkp;
|
|
|
++
|
|
|
++ list_for_each_entry(clkp, &clock_list, node) {
|
|
|
++ if (likely(clkp->parent != clk))
|
|
|
++ continue;
|
|
|
++ if (likely(clkp->ops && clkp->ops->recalc))
|
|
|
++ clkp->ops->recalc(clkp);
|
|
|
++ if (unlikely(clkp->flags & CLK_RATE_PROPAGATES))
|
|
|
++ propagate_rate(clkp);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++int clk_enable(struct clk *clk)
|
|
|
++{
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(clk_enable);
|
|
|
++
|
|
|
++void clk_disable(struct clk *clk)
|
|
|
++{
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(clk_disable);
|
|
|
++
|
|
|
++unsigned long clk_get_rate(struct clk *clk)
|
|
|
++{
|
|
|
++ return (unsigned long)clk->rate;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(clk_get_rate);
|
|
|
++
|
|
|
++void clk_put(struct clk *clk)
|
|
|
++{
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(clk_put);
|
|
|
++
|
|
|
++int clk_set_rate(struct clk *clk, unsigned long rate)
|
|
|
++{
|
|
|
++ return clk_set_rate_ex(clk, rate, 0);
|
|
|
++}
|
|
|
++EXPORT_SYMBOL_GPL(clk_set_rate);
|
|
|
++
|
|
|
++int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id)
|
|
|
++{
|
|
|
++ int ret = 0;
|
|
|
++ int regval;
|
|
|
++ int i;
|
|
|
++
|
|
|
++ if (likely(clk->ops && clk->ops->set_rate)) {
|
|
|
++ unsigned long flags;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&clock_lock, flags);
|
|
|
++ ret = clk->ops->set_rate(clk, rate, algo_id);
|
|
|
++ spin_unlock_irqrestore(&clock_lock, flags);
|
|
|
++ }
|
|
|
++
|
|
|
++ if (unlikely(clk->flags & CLK_RATE_PROPAGATES))
|
|
|
++ propagate_rate(clk);
|
|
|
++
|
|
|
++ for (i = 0; loongson2f_clockmod_table[i].frequency != CPUFREQ_TABLE_END;
|
|
|
++ i++) {
|
|
|
++ if (loongson2f_clockmod_table[i].frequency ==
|
|
|
++ CPUFREQ_ENTRY_INVALID)
|
|
|
++ continue;
|
|
|
++ if (rate == loongson2f_clockmod_table[i].frequency)
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ if (rate != loongson2f_clockmod_table[i].frequency)
|
|
|
++ return -ENOTSUPP;
|
|
|
++
|
|
|
++ clk->rate = rate;
|
|
|
++
|
|
|
++ regval = LOONGSON_CHIPCFG0;
|
|
|
++ regval = (regval & ~0x7) | (loongson2f_clockmod_table[i].index - 1);
|
|
|
++ LOONGSON_CHIPCFG0 = regval;
|
|
|
++
|
|
|
++ return ret;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL_GPL(clk_set_rate_ex);
|
|
|
++
|
|
|
++long clk_round_rate(struct clk *clk, unsigned long rate)
|
|
|
++{
|
|
|
++ if (likely(clk->ops && clk->ops->round_rate)) {
|
|
|
++ unsigned long flags, rounded;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&clock_lock, flags);
|
|
|
++ rounded = clk->ops->round_rate(clk, rate);
|
|
|
++ spin_unlock_irqrestore(&clock_lock, flags);
|
|
|
++
|
|
|
++ return rounded;
|
|
|
++ }
|
|
|
++
|
|
|
++ return rate;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL_GPL(clk_round_rate);
|
|
|
++
|
|
|
++/*
|
|
|
++ * This is the simple version of Loongson-2F wait
|
|
|
++ * Maybe we need do this in interrupt disabled content
|
|
|
++ */
|
|
|
++DEFINE_SPINLOCK(loongson2f_wait_lock);
|
|
|
++void loongson2f_cpu_wait(void)
|
|
|
++{
|
|
|
++ u32 cpu_freq;
|
|
|
++ unsigned long flags;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&loongson2f_wait_lock, flags);
|
|
|
++ cpu_freq = LOONGSON_CHIPCFG0;
|
|
|
++ LOONGSON_CHIPCFG0 &= ~0x7; /* Put CPU into wait mode */
|
|
|
++ LOONGSON_CHIPCFG0 = cpu_freq; /* Restore CPU state */
|
|
|
++ spin_unlock_irqrestore(&loongson2f_wait_lock, flags);
|
|
|
++}
|
|
|
++EXPORT_SYMBOL_GPL(loongson2f_cpu_wait);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cmdline.c rt4ls/arch/mips/loongson/common/cmdline.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cmdline.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cmdline.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,57 @@
|
|
|
++/*
|
|
|
++ * Based on Ocelot Linux port, which is
|
|
|
++ * Copyright 2001 MontaVista Software Inc.
|
|
|
++ * Author: jsun@mvista.com or jsun@junsun.net
|
|
|
++ *
|
|
|
++ * Copyright 2003 ICT CAS
|
|
|
++ * Author: Michael Guo <guoyi@ict.ac.cn>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <cmdline.h>
|
|
|
++
|
|
|
++int prom_argc;
|
|
|
++/* pmon passes arguments in 32bit pointers */
|
|
|
++int *_prom_argv;
|
|
|
++
|
|
|
++void __init prom_init_cmdline(void)
|
|
|
++{
|
|
|
++ int i;
|
|
|
++ long l;
|
|
|
++
|
|
|
++ /* firmware arguments are initialized in head.S */
|
|
|
++ prom_argc = fw_arg0;
|
|
|
++ _prom_argv = (int *)fw_arg1;
|
|
|
++
|
|
|
++ /* arg[0] is "g", the rest is boot parameters */
|
|
|
++ arcs_cmdline[0] = '\0';
|
|
|
++ for (i = 1; i < prom_argc; i++) {
|
|
|
++ l = (long)_prom_argv[i];
|
|
|
++ if (strlen(arcs_cmdline) + strlen(((char *)l) + 1)
|
|
|
++ >= sizeof(arcs_cmdline))
|
|
|
++ break;
|
|
|
++ strcat(arcs_cmdline, ((char *)l));
|
|
|
++ strcat(arcs_cmdline, " ");
|
|
|
++ }
|
|
|
++
|
|
|
++ /* machine specific prom_init_cmdline */
|
|
|
++ mach_prom_init_cmdline();
|
|
|
++
|
|
|
++ if ((strstr(arcs_cmdline, "console=")) == NULL)
|
|
|
++ strcat(arcs_cmdline, " console=ttyS0,115200");
|
|
|
++ if ((strstr(arcs_cmdline, "root=")) == NULL)
|
|
|
++ strcat(arcs_cmdline, " root=/dev/hda1");
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/Makefile rt4ls/arch/mips/loongson/common/cs5536/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/Makefile 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,25 @@
|
|
|
++#
|
|
|
++# Makefile for CS5536 support.
|
|
|
++#
|
|
|
++
|
|
|
++#
|
|
|
++# core modules
|
|
|
++#
|
|
|
++obj-$(CONFIG_CS5536) += cs5536_pci.o cs5536_ide.o cs5536_acc.o cs5536_ohci.o \
|
|
|
++ cs5536_isa.o cs5536_ehci.o
|
|
|
++#
|
|
|
++# selective modules
|
|
|
++#
|
|
|
++# add a CS5536_[MODULE] to your board in arch/mips/loongson/Kconfig
|
|
|
++#
|
|
|
++obj-$(CONFIG_CS5536_FLASH) += cs5536_flash.o
|
|
|
++obj-$(CONFIG_CS5536_NOR_FLASH) += cs5536_flash.o
|
|
|
++obj-$(CONFIG_CS5536_OTG) += cs5536_otg.o
|
|
|
++obj-$(CONFIG_CS5536_UDC) += cs5536_udc.o
|
|
|
++
|
|
|
++#
|
|
|
++# Enable cs5536 mfgpt Timer
|
|
|
++#
|
|
|
++obj-$(CONFIG_CS5536_MFGPT) += cs5536_mfgpt.o
|
|
|
++
|
|
|
++EXTRA_CFLAGS += -Werror
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_acc.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_acc.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_acc.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_acc.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,156 @@
|
|
|
++/*
|
|
|
++ * the ACC Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * acc_write: acc write transfering
|
|
|
++ */
|
|
|
++
|
|
|
++void pci_acc_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_PAE), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MASTER)
|
|
|
++ lo |= (0x03 << 8);
|
|
|
++ else
|
|
|
++ lo &= ~(0x03 << 8);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_PAE), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_ACC_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if (value & 0x01) {
|
|
|
++ value &= 0xfffffffc;
|
|
|
++ hi = 0xA0000000 | ((value & 0x000ff000) >> 12);
|
|
|
++ lo = 0x000fff80 | ((value & 0x00000fff) << 20);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_IOD_BM1), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_ACC_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), &hi, &lo);
|
|
|
++ /* disable all the usb interrupt in PIC */
|
|
|
++ lo &= ~(0xf << PIC_YSEL_LOW_ACC_SHIFT);
|
|
|
++ if (value) /* enable all the acc interrupt in PIC */
|
|
|
++ lo |= (CS5536_ACC_INTR << PIC_YSEL_LOW_ACC_SHIFT);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), hi, lo);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * acc_read: acc read transfering
|
|
|
++ */
|
|
|
++
|
|
|
++u32 pci_acc_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ u32 conf_data = 0;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_ACC_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_IOD_BM1), &hi, &lo);
|
|
|
++ if (((lo & 0xfff00000) || (hi & 0x000000ff))
|
|
|
++ && ((hi & 0xf0000000) == 0xa0000000))
|
|
|
++ conf_data |= PCI_COMMAND_IO;
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_PAE), &hi, &lo);
|
|
|
++ if ((lo & 0x300) == 0x300)
|
|
|
++ conf_data |= PCI_COMMAND_MASTER;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(ACC_MSR_REG(ACC_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_ACC_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_ACC_FLAG) {
|
|
|
++ conf_data = CS5536_ACC_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_IO;
|
|
|
++ lo &= ~SOFT_BAR_ACC_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_IOD_BM1), &hi, &lo);
|
|
|
++ conf_data = (hi & 0x000000ff) << 12;
|
|
|
++ conf_data |= (lo & 0xfff00000) >> 20;
|
|
|
++ conf_data |= 0x01;
|
|
|
++ conf_data &= ~0x02;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_ACC_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_USB_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_ACC_INTR);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ehci.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_ehci.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ehci.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_ehci.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,166 @@
|
|
|
++/*
|
|
|
++ * the EHCI Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++void pci_ehci_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MASTER)
|
|
|
++ hi |= PCI_COMMAND_MASTER;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MASTER;
|
|
|
++
|
|
|
++ if (value & PCI_COMMAND_MEMORY)
|
|
|
++ hi |= PCI_COMMAND_MEMORY;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MEMORY;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_EHCI), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_EHCI_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if ((value & 0x01) == 0x00) {
|
|
|
++ _wrmsr(USB_MSR_REG(USB_EHCI), hi, lo);
|
|
|
++
|
|
|
++ value &= 0xfffffff0;
|
|
|
++ hi = 0x40000000 | ((value & 0xff000000) >> 24);
|
|
|
++ lo = 0x000fffff | ((value & 0x00fff000) << 8);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_P2D_BM4), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_EHCI_LEGSMIEN_REG:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ hi &= 0x003f0000;
|
|
|
++ hi |= (value & 0x3f) << 16;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_EHCI), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_EHCI_FLADJ_REG:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ hi &= ~0x00003f00;
|
|
|
++ hi |= value & 0x00003f00;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_EHCI), hi, lo);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_ehci_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_EHCI_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ if (hi & PCI_COMMAND_MASTER)
|
|
|
++ conf_data |= PCI_COMMAND_MASTER;
|
|
|
++ if (hi & PCI_COMMAND_MEMORY)
|
|
|
++ conf_data |= PCI_COMMAND_MEMORY;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_EHCI_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_EHCI_FLAG) {
|
|
|
++ conf_data = CS5536_EHCI_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_MEMORY;
|
|
|
++ lo &= ~SOFT_BAR_EHCI_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ conf_data = lo & 0xfffff000;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_EHCI_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_USB_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_USB_INTR);
|
|
|
++ break;
|
|
|
++ case PCI_EHCI_LEGSMIEN_REG:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ conf_data = (hi & 0x003f0000) >> 16;
|
|
|
++ break;
|
|
|
++ case PCI_EHCI_LEGSMISTS_REG:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ conf_data = (hi & 0x3f000000) >> 24;
|
|
|
++ break;
|
|
|
++ case PCI_EHCI_FLADJ_REG:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_EHCI), &hi, &lo);
|
|
|
++ conf_data = hi & 0x00003f00;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_flash.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_flash.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_flash.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_flash.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,452 @@
|
|
|
++/*
|
|
|
++ * the FLASH Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * enable the region of flashs(NOR or NAND)
|
|
|
++ *
|
|
|
++ * the same as the DIVIL other modules above, two groups of regs should be
|
|
|
++ * modified here to control the region. DIVIL flash LBAR and the
|
|
|
++ * RCONFx(6~9 reserved).
|
|
|
++ */
|
|
|
++static void flash_lbar_enable(void)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ int offset;
|
|
|
++
|
|
|
++ for (offset = DIVIL_LBAR_FLSH0; offset <= DIVIL_LBAR_FLSH3; offset++) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(offset), &hi, &lo);
|
|
|
++ hi |= 0x1;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(offset), hi, lo);
|
|
|
++ }
|
|
|
++
|
|
|
++ for (offset = SB_R6; offset <= SB_R9; offset++) {
|
|
|
++ _rdmsr(SB_MSR_REG(offset), &hi, &lo);
|
|
|
++ lo |= 0x1;
|
|
|
++ _wrmsr(SB_MSR_REG(offset), hi, lo);
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * disable the region of flashs(NOR or NAND)
|
|
|
++ */
|
|
|
++static void flash_lbar_disable(void)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ int offset;
|
|
|
++
|
|
|
++ for (offset = DIVIL_LBAR_FLSH0; offset <= DIVIL_LBAR_FLSH3; offset++) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(offset), &hi, &lo);
|
|
|
++ hi &= ~0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(offset), hi, lo);
|
|
|
++ }
|
|
|
++ for (offset = SB_R6; offset <= SB_R9; offset++) {
|
|
|
++ _rdmsr(SB_MSR_REG(offset), &hi, &lo);
|
|
|
++ lo &= ~0x01;
|
|
|
++ _wrmsr(SB_MSR_REG(offset), hi, lo);
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++#ifndef CONFIG_CS5536_NOR_FLASH /* for nand flash */
|
|
|
++
|
|
|
++void pci_flash_write_bar(int n, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ /* make the flag for reading the bar length. */
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= (SOFT_BAR_FLSH0_FLAG << n);
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if ((value & 0x01) == 0x00) {
|
|
|
++ /* mem space nand flash native reg base addr */
|
|
|
++ hi = 0xfffff007;
|
|
|
++ lo &= CS5536_FLSH_RANGE;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0 + n), hi, lo);
|
|
|
++
|
|
|
++ /* RCONFx is 4KB in units for mem space. */
|
|
|
++ hi = ((value & 0xfffff000) << 12) |
|
|
|
++ ((CS5536_FLSH_LENGTH & 0xfffff000) - (1 << 12)) | 0x00;
|
|
|
++ lo = ((value & 0xfffff000) << 12) | 0x01;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_R6 + n), hi, lo);
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++void pci_flash_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ if (value & PCI_COMMAND_MEMORY)
|
|
|
++ flash_lbar_enable();
|
|
|
++ else
|
|
|
++ flash_lbar_disable();
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ pci_flash_write_bar(0, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ pci_flash_write_bar(1, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ pci_flash_write_bar(2, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ pci_flash_write_bar(3, value);
|
|
|
++ break;
|
|
|
++ case PCI_FLASH_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), &hi, &lo);
|
|
|
++ /* disable all the flash interrupt in PIC */
|
|
|
++ lo &= ~(0xf << PIC_YSEL_LOW_FLASH_SHIFT);
|
|
|
++ if (value) /* enable all the flash interrupt in PIC */
|
|
|
++ lo |= (CS5536_FLASH_INTR << PIC_YSEL_LOW_FLASH_SHIFT);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_TDATA_REG:
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NANDF_DATA), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_TCTRL_REG:
|
|
|
++ lo &= 0x00000fff;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NANDF_CTRL), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_RSVD_REG:
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NANDF_RSVD), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_FLASH_SELECT_REG:
|
|
|
++ if (value == CS5536_IDE_FLASH_SIGNATURE) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), &hi, &lo);
|
|
|
++ lo &= ~0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_flash_read_bar(int n)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ u32 conf_data = 0;
|
|
|
++
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & (SOFT_BAR_FLSH0_FLAG << n)) {
|
|
|
++ conf_data = CS5536_FLSH_RANGE | PCI_BASE_ADDRESS_SPACE_MEMORY;
|
|
|
++ lo &= ~(SOFT_BAR_FLSH0_FLAG << n);
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0 + n), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ conf_data &= ~0x0f;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_flash_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_FLASH_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ /* we just read one lbar for returning. */
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0), &hi, &lo);
|
|
|
++ if (hi & 0x1)
|
|
|
++ conf_data |= PCI_COMMAND_MEMORY;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_FLASH_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ return pci_flash_read_bar(0);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ return pci_flash_read_bar(1);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ return pci_flash_read_bar(2);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ return pci_flash_read_bar(3);
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_FLASH_SUB_ID,
|
|
|
++ CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_FLASH_INTR);
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_TDATA_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NANDF_DATA), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_TCTRL_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NANDF_CTRL), &hi, &lo);
|
|
|
++ conf_data = lo & 0x00000fff;
|
|
|
++ break;
|
|
|
++ case PCI_NAND_FLASH_RSVD_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NANDF_RSVD), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_FLASH_SELECT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), &hi, &lo);
|
|
|
++ conf_data = lo & 0x01;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++#else /* CONFIG_CS5536_NOR_FLASH */
|
|
|
++
|
|
|
++void pci_flash_write_bar(int n, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= (SOFT_BAR_FLSH0_FLAG << n);
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if (value & 0x01) {
|
|
|
++ /* IO space of 16bytes nor flash */
|
|
|
++ hi = 0x0000fff1;
|
|
|
++ lo &= CS5536_FLSH_RANGE;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0 + n), hi, lo);
|
|
|
++
|
|
|
++ /* RCONFx used for 16bytes reserved. */
|
|
|
++ hi = ((value & 0x000ffffc) << 12) | ((CS5536_FLSH_LENGTH - 4)
|
|
|
++ << 12) | 0x01;
|
|
|
++ lo = ((value & 0x000ffffc) << 12) | 0x01;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_R6 + n), hi, lo);
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++void pci_flash_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ if (value & PCI_COMMAND_IO)
|
|
|
++ flash_lbar_enable();
|
|
|
++ else
|
|
|
++ flash_lbar_disable();
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ pci_flash_write_bar(0, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ pci_flash_write_bar(1, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ pci_flash_write_bar(2, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ pci_flash_write_bar(3, value);
|
|
|
++ break;
|
|
|
++ case PCI_FLASH_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), &hi, &lo);
|
|
|
++ /* disable all the flash interrupt in PIC */
|
|
|
++ lo &= ~(0xf << PIC_YSEL_LOW_FLASH_SHIFT);
|
|
|
++ if (value) /* enable all the flash interrupt in PIC */
|
|
|
++ lo |= (CS5536_FLASH_INTR << PIC_YSEL_LOW_FLASH_SHIFT);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_CTRL_REG:
|
|
|
++ lo &= 0x000000ff;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NORF_CTRL), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_T01_REG:
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NORF_T01), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_T23_REG:
|
|
|
++ _wrmsr(DIVIL_MSR_REG(NORF_T23), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_FLASH_SELECT_REG:
|
|
|
++ if (value == CS5536_IDE_FLASH_SIGNATURE) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), &hi, &lo);
|
|
|
++ lo &= ~0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_flash_read_bar(int n)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ u32 conf_data = 0;
|
|
|
++
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & (SOFT_BAR_FLSH0_FLAG << n)) {
|
|
|
++ conf_data = CS5536_FLSH_RANGE | PCI_BASE_ADDRESS_SPACE_IO;
|
|
|
++ lo &= ~(SOFT_BAR_FLSH0_FLAG << n);
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0 + n), &hi, &lo);
|
|
|
++ conf_data = lo & 0x0000ffff;
|
|
|
++ conf_data |= 0x01;
|
|
|
++ conf_data &= ~0x02;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_flash_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_FLASH_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ /* we just check one flash bar for returning. */
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_FLSH0), &hi, &lo);
|
|
|
++ if (hi & PCI_COMMAND_IO)
|
|
|
++ conf_data |= PCI_COMMAND_IO;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_FLASH_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ return pci_flash_read_bar(0);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ return pci_flash_read_bar(1);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ return pci_flash_read_bar(2);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ return pci_flash_read_bar(3);
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_FLASH_SUB_ID,
|
|
|
++ CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_FLASH_INTR);
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_CTRL_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NORF_CTRL), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_T01_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NORF_T01), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_NOR_FLASH_T23_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(NORF_T23), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
++#endif /* CONFIG_CS5536_NOR_FLASH */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ide.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_ide.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ide.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_ide.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,194 @@
|
|
|
++/*
|
|
|
++ * the IDE Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * ide_write : ide write transfering
|
|
|
++ */
|
|
|
++void pci_ide_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_PAE), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MASTER)
|
|
|
++ lo |= (0x03 << 4);
|
|
|
++ else
|
|
|
++ lo &= ~(0x03 << 4);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_PAE), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ value &= 0x0000ff00;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_CTRL), &hi, &lo);
|
|
|
++ hi &= 0xffffff00;
|
|
|
++ hi |= (value >> 8);
|
|
|
++ _wrmsr(SB_MSR_REG(SB_CTRL), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_IDE_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if (value & 0x01) {
|
|
|
++ lo = (value & 0xfffffff0) | 0x1;
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_IO_BAR), hi, lo);
|
|
|
++
|
|
|
++ value &= 0xfffffffc;
|
|
|
++ hi = 0x60000000 | ((value & 0x000ff000) >> 12);
|
|
|
++ lo = 0x000ffff0 | ((value & 0x00000fff) << 20);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_IOD_BM2), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_IDE_CFG_REG:
|
|
|
++ if (value == CS5536_IDE_FLASH_SIGNATURE) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), &hi, &lo);
|
|
|
++ lo |= 0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_BALL_OPTS), hi, lo);
|
|
|
++ } else
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_CFG), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_IDE_DTC_REG:
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_DTC), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_IDE_CAST_REG:
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_CAST), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_IDE_ETC_REG:
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_ETC), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_IDE_PM_REG:
|
|
|
++ _wrmsr(IDE_MSR_REG(IDE_INTERNAL_PM), hi, lo);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * ide_read : ide read tranfering.
|
|
|
++ */
|
|
|
++u32 pci_ide_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_IDE_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_IO_BAR), &hi, &lo);
|
|
|
++ if (lo & 0xfffffff0)
|
|
|
++ conf_data |= PCI_COMMAND_IO;
|
|
|
++ _rdmsr(GLIU_MSR_REG(GLIU_PAE), &hi, &lo);
|
|
|
++ if ((lo & 0x30) == 0x30)
|
|
|
++ conf_data |= PCI_COMMAND_MASTER;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_IDE_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ _rdmsr(SB_MSR_REG(SB_CTRL), &hi, &lo);
|
|
|
++ hi &= 0x000000f8;
|
|
|
++ conf_data = CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE, hi);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ break;
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_IDE_FLAG) {
|
|
|
++ conf_data = CS5536_IDE_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_IO;
|
|
|
++ lo &= ~SOFT_BAR_IDE_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_IO_BAR), &hi, &lo);
|
|
|
++ conf_data = lo & 0xfffffff0;
|
|
|
++ conf_data |= 0x01;
|
|
|
++ conf_data &= ~0x02;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_IDE_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_IDE_INTR);
|
|
|
++ break;
|
|
|
++ case PCI_IDE_CFG_REG:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_CFG), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_IDE_DTC_REG:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_DTC), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_IDE_CAST_REG:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_CAST), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ case PCI_IDE_ETC_REG:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_ETC), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ case PCI_IDE_PM_REG:
|
|
|
++ _rdmsr(IDE_MSR_REG(IDE_INTERNAL_PM), &hi, &lo);
|
|
|
++ conf_data = lo;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_isa.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_isa.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_isa.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_isa.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,376 @@
|
|
|
++/*
|
|
|
++ * the ISA Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/* common variables for PCI_ISA_READ/WRITE_BAR */
|
|
|
++static const u32 divil_msr_reg[6] = {
|
|
|
++ DIVIL_MSR_REG(DIVIL_LBAR_SMB), DIVIL_MSR_REG(DIVIL_LBAR_GPIO),
|
|
|
++ DIVIL_MSR_REG(DIVIL_LBAR_MFGPT), DIVIL_MSR_REG(DIVIL_LBAR_IRQ),
|
|
|
++ DIVIL_MSR_REG(DIVIL_LBAR_PMS), DIVIL_MSR_REG(DIVIL_LBAR_ACPI),
|
|
|
++};
|
|
|
++
|
|
|
++static const u32 soft_bar_flag[6] = {
|
|
|
++ SOFT_BAR_SMB_FLAG, SOFT_BAR_GPIO_FLAG, SOFT_BAR_MFGPT_FLAG,
|
|
|
++ SOFT_BAR_IRQ_FLAG, SOFT_BAR_PMS_FLAG, SOFT_BAR_ACPI_FLAG,
|
|
|
++};
|
|
|
++
|
|
|
++static const u32 sb_msr_reg[6] = {
|
|
|
++ SB_MSR_REG(SB_R0), SB_MSR_REG(SB_R1), SB_MSR_REG(SB_R2),
|
|
|
++ SB_MSR_REG(SB_R3), SB_MSR_REG(SB_R4), SB_MSR_REG(SB_R5),
|
|
|
++};
|
|
|
++
|
|
|
++static const u32 bar_space_range[6] = {
|
|
|
++ CS5536_SMB_RANGE, CS5536_GPIO_RANGE, CS5536_MFGPT_RANGE,
|
|
|
++ CS5536_IRQ_RANGE, CS5536_PMS_RANGE, CS5536_ACPI_RANGE,
|
|
|
++};
|
|
|
++
|
|
|
++static const int bar_space_len[6] = {
|
|
|
++ CS5536_SMB_LENGTH, CS5536_GPIO_LENGTH, CS5536_MFGPT_LENGTH,
|
|
|
++ CS5536_IRQ_LENGTH, CS5536_PMS_LENGTH, CS5536_ACPI_LENGTH,
|
|
|
++};
|
|
|
++
|
|
|
++/*
|
|
|
++ * enable the divil module bar space.
|
|
|
++ *
|
|
|
++ * For all the DIVIL module LBAR, you should control the DIVIL LBAR reg
|
|
|
++ * and the RCONFx(0~5) reg to use the modules.
|
|
|
++ */
|
|
|
++static void divil_lbar_enable(void)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ int offset;
|
|
|
++
|
|
|
++ /*
|
|
|
++ * The DIVIL IRQ is not used yet. and make the RCONF0 reserved.
|
|
|
++ */
|
|
|
++
|
|
|
++ for (offset = DIVIL_LBAR_SMB; offset <= DIVIL_LBAR_PMS; offset++) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(offset), &hi, &lo);
|
|
|
++ hi |= 0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_LBAR_SMB), hi, lo);
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * disable the divil module bar space.
|
|
|
++ */
|
|
|
++static void divil_lbar_disable(void)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++ int offset;
|
|
|
++
|
|
|
++ for (offset = DIVIL_LBAR_SMB; offset <= DIVIL_LBAR_PMS; offset++) {
|
|
|
++ _rdmsr(DIVIL_MSR_REG(offset), &hi, &lo);
|
|
|
++ hi &= ~0x01;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_LBAR_SMB), hi, lo);
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * BAR write: write value to the n BAR
|
|
|
++ */
|
|
|
++
|
|
|
++void pci_isa_write_bar(int n, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= soft_bar_flag[n];
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if (value & 0x01) {
|
|
|
++ /* NATIVE reg */
|
|
|
++ hi = 0x0000f001;
|
|
|
++ lo &= bar_space_range[n];
|
|
|
++ _wrmsr(divil_msr_reg[n], hi, lo);
|
|
|
++
|
|
|
++ /* RCONFx is 4bytes in units for I/O space */
|
|
|
++ hi = ((value & 0x000ffffc) << 12) |
|
|
|
++ ((bar_space_len[n] - 4) << 12) | 0x01;
|
|
|
++ lo = ((value & 0x000ffffc) << 12) | 0x01;
|
|
|
++ _wrmsr(sb_msr_reg[n], hi, lo);
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * BAR read: read the n BAR
|
|
|
++ */
|
|
|
++
|
|
|
++u32 pci_isa_read_bar(int n)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & soft_bar_flag[n]) {
|
|
|
++ conf_data = bar_space_range[n] | PCI_BASE_ADDRESS_SPACE_IO;
|
|
|
++ lo &= ~soft_bar_flag[n];
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(divil_msr_reg[n], &hi, &lo);
|
|
|
++ conf_data = lo & bar_space_range[n];
|
|
|
++ conf_data |= 0x01;
|
|
|
++ conf_data &= ~0x02;
|
|
|
++ }
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * isa_write : isa write transfering.
|
|
|
++ * WE assume that the ISA is not the BUS MASTER.!!!
|
|
|
++ */
|
|
|
++/* FAST BACK TO BACK '1' for BUS MASTER '0' for BUS SALVE */
|
|
|
++/* COMMAND :
|
|
|
++ * bit0 : IO SPACE ENABLE
|
|
|
++ * bit1 : MEMORY SPACE ENABLE(ignore)
|
|
|
++ * bit2 : BUS MASTER ENABLE(ignore)
|
|
|
++ * bit3 : SPECIAL CYCLE(ignore)? default is ignored.
|
|
|
++ * bit4 : MEMORY WRITE and INVALIDATE(ignore)
|
|
|
++ * bit5 : VGA PALETTE(ignore)
|
|
|
++ * bit6 : PARITY ERROR(ignore)? : default is ignored.
|
|
|
++ * bit7 : WAIT CYCLE CONTROL(ignore)
|
|
|
++ * bit8 : SYSTEM ERROR(ignore)
|
|
|
++ * bit9 : FAST BACK TO BACK(ignore)
|
|
|
++ * bit10-bit15 : RESERVED
|
|
|
++ * STATUS :
|
|
|
++ * bit0-bit3 : RESERVED
|
|
|
++ * bit4 : CAPABILITY LIST(ignore)
|
|
|
++ * bit5 : 66MHZ CAPABLE
|
|
|
++ * bit6 : RESERVED
|
|
|
++ * bit7 : FAST BACK TO BACK(ignore)
|
|
|
++ * bit8 : DATA PARITY ERROR DETECED(ignore)
|
|
|
++ * bit9-bit10 : DEVSEL TIMING(ALL MEDIUM)
|
|
|
++ * bit11: SIGNALED TARGET ABORT
|
|
|
++ * bit12: RECEIVED TARGET ABORT
|
|
|
++ * bit13: RECEIVED MASTER ABORT
|
|
|
++ * bit14: SIGNALED SYSTEM ERROR
|
|
|
++ * bit15: DETECTED PARITY ERROR
|
|
|
++ */
|
|
|
++
|
|
|
++void pci_isa_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++ u32 temp;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ if (value & PCI_COMMAND_IO)
|
|
|
++ divil_lbar_enable();
|
|
|
++ else
|
|
|
++ divil_lbar_disable();
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ temp = lo & 0x0000ffff;
|
|
|
++ if ((value & PCI_STATUS_SIG_TARGET_ABORT) &&
|
|
|
++ (lo & SB_TAS_ERR_EN))
|
|
|
++ temp |= SB_TAS_ERR_FLAG;
|
|
|
++
|
|
|
++ if ((value & PCI_STATUS_REC_TARGET_ABORT) &&
|
|
|
++ (lo & SB_TAR_ERR_EN))
|
|
|
++ temp |= SB_TAR_ERR_FLAG;
|
|
|
++
|
|
|
++ if ((value & PCI_STATUS_REC_MASTER_ABORT)
|
|
|
++ && (lo & SB_MAR_ERR_EN))
|
|
|
++ temp |= SB_MAR_ERR_FLAG;
|
|
|
++
|
|
|
++ if ((value & PCI_STATUS_DETECTED_PARITY)
|
|
|
++ && (lo & SB_PARE_ERR_EN))
|
|
|
++ temp |= SB_PARE_ERR_FLAG;
|
|
|
++
|
|
|
++ lo = temp;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ value &= 0x0000ff00;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_CTRL), &hi, &lo);
|
|
|
++ hi &= 0xffffff00;
|
|
|
++ hi |= (value >> 8);
|
|
|
++ _wrmsr(SB_MSR_REG(SB_CTRL), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ pci_isa_write_bar(0, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ pci_isa_write_bar(1, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ pci_isa_write_bar(2, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ pci_isa_write_bar(3, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ pci_isa_write_bar(4, value);
|
|
|
++ break;
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ pci_isa_write_bar(5, value);
|
|
|
++ break;
|
|
|
++ case PCI_UART1_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_HIGH), &hi, &lo);
|
|
|
++ /* disable uart1 interrupt in PIC */
|
|
|
++ lo &= ~(0xf << 24);
|
|
|
++ if (value) /* enable uart1 interrupt in PIC */
|
|
|
++ lo |= (CS5536_UART1_INTR << 24);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_HIGH), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_UART2_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_HIGH), &hi, &lo);
|
|
|
++ /* disable uart2 interrupt in PIC */
|
|
|
++ lo &= ~(0xf << 28);
|
|
|
++ if (value) /* enable uart2 interrupt in PIC */
|
|
|
++ lo |= (CS5536_UART2_INTR << 28);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_HIGH), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_ISA_FIXUP_REG:
|
|
|
++ if (value) {
|
|
|
++ /* enable the TARGET ABORT/MASTER ABORT etc. */
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ lo |= 0x00000063;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++
|
|
|
++ default:
|
|
|
++ /* ALL OTHER PCI CONFIG SPACE HEADER IS NOT IMPLEMENTED. */
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * isa_read : isa read transfering.
|
|
|
++ * we assume that the ISA is not the BUS MASTER.
|
|
|
++ */
|
|
|
++
|
|
|
++ /* COMMAND :
|
|
|
++ * bit0 : IO SPACE ENABLE
|
|
|
++ * bit1 : MEMORY SPACE ENABLE(ignore)
|
|
|
++ * bit2 : BUS MASTER ENABLE(ignore)
|
|
|
++ * bit3 : SPECIAL CYCLE(ignore)? default is ignored.
|
|
|
++ * bit4 : MEMORY WRITE and INVALIDATE(ignore)
|
|
|
++ * bit5 : VGA PALETTE(ignore)
|
|
|
++ * bit6 : PARITY ERROR(ignore)? : default is ignored.
|
|
|
++ * bit7 : WAIT CYCLE CONTROL(ignore)
|
|
|
++ * bit8 : SYSTEM ERROR(ignore)
|
|
|
++ * bit9 : FAST BACK TO BACK(ignore)
|
|
|
++ * bit10-bit15 : RESERVED
|
|
|
++ * STATUS :
|
|
|
++ * bit0-bit3 : RESERVED
|
|
|
++ * bit4 : CAPABILITY LIST(ignore)
|
|
|
++ * bit5 : 66MHZ CAPABLE
|
|
|
++ * bit6 : RESERVED
|
|
|
++ * bit7 : FAST BACK TO BACK(ignore)
|
|
|
++ * bit8 : DATA PARITY ERROR DETECED(ignore)?
|
|
|
++ * bit9-bit10 : DEVSEL TIMING(ALL MEDIUM)
|
|
|
++ * bit11: SIGNALED TARGET ABORT
|
|
|
++ * bit12: RECEIVED TARGET ABORT
|
|
|
++ * bit13: RECEIVED MASTER ABORT
|
|
|
++ * bit14: SIGNALED SYSTEM ERROR
|
|
|
++ * bit15: DETECTED PARITY ERROR(?)
|
|
|
++ */
|
|
|
++
|
|
|
++u32 pci_isa_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_ISA_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ /* we just check the first LBAR for the IO enable bit, */
|
|
|
++ /* maybe we should changed later. */
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_SMB), &hi, &lo);
|
|
|
++ if (hi & 0x01)
|
|
|
++ conf_data |= PCI_COMMAND_IO;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_TAS_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_SIG_TARGET_ABORT;
|
|
|
++ if (lo & SB_TAR_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_REC_TARGET_ABORT;
|
|
|
++ if (lo & SB_MAR_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_REC_MASTER_ABORT;
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_DETECTED_PARITY;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_CHIP_REV_ID), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_ISA_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ _rdmsr(SB_MSR_REG(SB_CTRL), &hi, &lo);
|
|
|
++ hi &= 0x000000f8;
|
|
|
++ conf_data = CFG_PCI_CACHE_LINE_SIZE(PCI_BRIDGE_HEADER_TYPE, hi);
|
|
|
++ break;
|
|
|
++ /*
|
|
|
++ * we only use the LBAR of DIVIL, no RCONF used.
|
|
|
++ * all of them are IO space.
|
|
|
++ */
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ return pci_isa_read_bar(0);
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ return pci_isa_read_bar(1);
|
|
|
++ break;
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ return pci_isa_read_bar(2);
|
|
|
++ break;
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ break;
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ return pci_isa_read_bar(4);
|
|
|
++ break;
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ return pci_isa_read_bar(5);
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_ISA_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ /* no interrupt used here */
|
|
|
++ conf_data = CFG_PCI_INTERRUPT_LINE(0x00, 0x00);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c 2009-06-12 16:27:08.774444476 +0200
|
|
|
+@@ -0,0 +1,257 @@
|
|
|
++/*
|
|
|
++ * CS5536 General timer functions
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Yanhua, yanh@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * Reference: 'AMD Geode(TM) CS5536 Companion Device Data Book'
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/module.h>
|
|
|
++#include <linux/jiffies.h>
|
|
|
++#include <linux/spinlock.h>
|
|
|
++#include <linux/interrupt.h>
|
|
|
++#include <linux/clockchips.h>
|
|
|
++
|
|
|
++#include <asm/time.h>
|
|
|
++
|
|
|
++#include <cs5536/cs5536_mfgpt.h>
|
|
|
++
|
|
|
++DEFINE_SPINLOCK(mfgpt_lock);
|
|
|
++EXPORT_SYMBOL(mfgpt_lock);
|
|
|
++
|
|
|
++static u32 mfgpt_base;
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize the MFGPT timer.
|
|
|
++ *
|
|
|
++ * This is also called after resume to bring the MFGPT into operation again.
|
|
|
++ */
|
|
|
++/* setup register bit fields:
|
|
|
++ * 15: counter enable
|
|
|
++ * 14: compare2 output status, write 1 to clear when in event mode
|
|
|
++ * 13: compare1 output status
|
|
|
++ * 12: setup(ro)
|
|
|
++ * 11: stop enable, stop on sleep
|
|
|
++ * 10: external enable
|
|
|
++ * 9:8 compare2 mode; 00: disable, 01: compare on equal; 10: compare on GE,
|
|
|
++ * 11 event: GE + irq
|
|
|
++ * 7:6 compare1 mode
|
|
|
++ * 5: reverse enable, bit reverse of the counter
|
|
|
++ * 4: clock select. 0: 32KHz, 1: 14.318MHz
|
|
|
++ * 3:0 counter prescaler scale factor.
|
|
|
++ * select the input clock divide-by value. 2^n
|
|
|
++ * bit 11:0 is write once
|
|
|
++ */
|
|
|
++
|
|
|
++static void init_mfgpt_timer(enum clock_event_mode mode,
|
|
|
++ struct clock_event_device *evt)
|
|
|
++{
|
|
|
++ spin_lock(&mfgpt_lock);
|
|
|
++
|
|
|
++ switch (mode) {
|
|
|
++ case CLOCK_EVT_MODE_PERIODIC:
|
|
|
++ outw(COMPARE, MFGPT0_CMP2); /* set comparator2 */
|
|
|
++ outw(0, MFGPT0_CNT); /* set counter to 0 */
|
|
|
++ /* enable counter, comparator2 to event mode, 14.318MHz clock */
|
|
|
++ outw(0xe310, MFGPT0_SETUP);
|
|
|
++ break;
|
|
|
++
|
|
|
++ case CLOCK_EVT_MODE_SHUTDOWN:
|
|
|
++ case CLOCK_EVT_MODE_UNUSED:
|
|
|
++ if (evt->mode == CLOCK_EVT_MODE_PERIODIC ||
|
|
|
++ evt->mode == CLOCK_EVT_MODE_ONESHOT) {
|
|
|
++ /* disable counter */
|
|
|
++ outw(inw(MFGPT0_SETUP) & 0x7fff, MFGPT0_SETUP);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++
|
|
|
++ case CLOCK_EVT_MODE_ONESHOT:
|
|
|
++ /* One shot setup */
|
|
|
++ outw(0xe300, MFGPT0_SETUP);
|
|
|
++ break;
|
|
|
++
|
|
|
++ case CLOCK_EVT_MODE_RESUME:
|
|
|
++ /* Nothing to do here */
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ spin_unlock(&mfgpt_lock);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Program the next event in oneshot mode
|
|
|
++ *
|
|
|
++ * Delta is given in MFGPT ticks
|
|
|
++ */
|
|
|
++static int mfgpt_next_event(unsigned long delta, struct clock_event_device *evt)
|
|
|
++{
|
|
|
++ spin_lock(&mfgpt_lock);
|
|
|
++ outw(delta & 0xffff, MFGPT0_CMP2); /* set comparator2 */
|
|
|
++ outw(0, MFGPT0_CNT); /* set counter to 0 */
|
|
|
++ spin_unlock(&mfgpt_lock);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static struct clock_event_device mfgpt_clockevent = {
|
|
|
++ .name = "mfgpt",
|
|
|
++ .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_MODE_ONESHOT,
|
|
|
++ .set_mode = init_mfgpt_timer,
|
|
|
++ .set_next_event = mfgpt_next_event,
|
|
|
++ .irq = CS5536_MFGPT_INTR,
|
|
|
++};
|
|
|
++
|
|
|
++static irqreturn_t timer_interrupt(int irq, void *dev_id)
|
|
|
++{
|
|
|
++ u32 basehi;
|
|
|
++
|
|
|
++ /*
|
|
|
++ * get MFGPT base address
|
|
|
++ *
|
|
|
++ * NOTE: do not remove me, it's need for the value of mfgpt_base is
|
|
|
++ * variable
|
|
|
++ */
|
|
|
++ _rdmsr(CS5536_DIVIL_MSR_BASE + DIVIL_LBAR_MFGPT, &basehi, &mfgpt_base);
|
|
|
++
|
|
|
++ /* ack */
|
|
|
++ outw(inw(MFGPT0_SETUP) | 0x4000, MFGPT0_SETUP);
|
|
|
++
|
|
|
++ mfgpt_clockevent.event_handler(&mfgpt_clockevent);
|
|
|
++
|
|
|
++ return IRQ_HANDLED;
|
|
|
++}
|
|
|
++
|
|
|
++static struct irqaction irq5 = {
|
|
|
++ .handler = timer_interrupt,
|
|
|
++ .flags = IRQF_DISABLED | IRQF_NOBALANCING,
|
|
|
++ .name = "timer"
|
|
|
++};
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize the conversion factor and the min/max deltas of the clock event
|
|
|
++ * structure and register the clock event source with the framework.
|
|
|
++ */
|
|
|
++void __init setup_mfgpt_timer(void)
|
|
|
++{
|
|
|
++ u32 basehi;
|
|
|
++ struct clock_event_device *cd = &mfgpt_clockevent;
|
|
|
++ unsigned int cpu = smp_processor_id();
|
|
|
++
|
|
|
++ cd->cpumask = cpumask_of(cpu);
|
|
|
++ clockevent_set_clock(cd, MFGPT_TICK_RATE);
|
|
|
++ cd->max_delta_ns = clockevent_delta2ns(0xffff, cd);
|
|
|
++ cd->min_delta_ns = clockevent_delta2ns(0xf, cd);
|
|
|
++
|
|
|
++ /* Enable MFGPT0 Comparator 2 Output to the Interrupt Mapper */
|
|
|
++ _wrmsr(CS5536_DIVIL_MSR_BASE + MFGPT_IRQ, 0, 0x100);
|
|
|
++
|
|
|
++ /* Enable Interrupt Gate 5 */
|
|
|
++ _wrmsr(CS5536_DIVIL_MSR_BASE + PIC_ZSEL_LOW, 0, 0x50000);
|
|
|
++
|
|
|
++ /* get MFGPT base address */
|
|
|
++ _rdmsr(CS5536_DIVIL_MSR_BASE + DIVIL_LBAR_MFGPT, &basehi, &mfgpt_base);
|
|
|
++
|
|
|
++ irq5.mask = cpumask_of_cpu(cpu);
|
|
|
++
|
|
|
++ clockevents_register_device(cd);
|
|
|
++
|
|
|
++ setup_irq(CS5536_MFGPT_INTR, &irq5);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Since the MFGPT overflows every tick, its not very useful
|
|
|
++ * to just read by itself. So use jiffies to emulate a free
|
|
|
++ * running counter:
|
|
|
++ */
|
|
|
++static cycle_t mfgpt_read(struct clocksource *cs)
|
|
|
++{
|
|
|
++ unsigned long flags;
|
|
|
++ int count;
|
|
|
++ u32 jifs;
|
|
|
++ static int old_count;
|
|
|
++ static u32 old_jifs;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&mfgpt_lock, flags);
|
|
|
++ /*
|
|
|
++ * Although our caller may have the read side of xtime_lock,
|
|
|
++ * this is now a seqlock, and we are cheating in this routine
|
|
|
++ * by having side effects on state that we cannot undo if
|
|
|
++ * there is a collision on the seqlock and our caller has to
|
|
|
++ * retry. (Namely, old_jifs and old_count.) So we must treat
|
|
|
++ * jiffies as volatile despite the lock. We read jiffies
|
|
|
++ * before latching the timer count to guarantee that although
|
|
|
++ * the jiffies value might be older than the count (that is,
|
|
|
++ * the counter may underflow between the last point where
|
|
|
++ * jiffies was incremented and the point where we latch the
|
|
|
++ * count), it cannot be newer.
|
|
|
++ */
|
|
|
++ jifs = jiffies;
|
|
|
++ /* latch the counter */
|
|
|
++ outw(inw(MFGPT0_SETUP) | 0x0200, MFGPT0_SETUP);
|
|
|
++ /* read the latched count */
|
|
|
++ count = inw(MFGPT0_CNT);
|
|
|
++ /* restart the counter */
|
|
|
++ outw(inw(MFGPT0_SETUP) & 0xfdff, MFGPT0_SETUP);
|
|
|
++
|
|
|
++ /* reset the latch if count > max + 1 */
|
|
|
++ if (count > COMPARE) {
|
|
|
++ /* set comparator2 */
|
|
|
++ outw(COMPARE, MFGPT0_CMP2);
|
|
|
++ /* set counter to 0 */
|
|
|
++ outw(0, MFGPT0_CNT);
|
|
|
++ /* enable counter, comparator2 to event mode, 14.318MHz clock */
|
|
|
++ outw(0xe310, MFGPT0_SETUP);
|
|
|
++
|
|
|
++ count = COMPARE - 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
++ * It's possible for count to appear to go the wrong way for this
|
|
|
++ * reason:
|
|
|
++ *
|
|
|
++ * The timer counter underflows, but we haven't handled the resulting
|
|
|
++ * interrupt and incremented jiffies yet.
|
|
|
++ *
|
|
|
++ * Previous attempts to handle these cases intelligently were buggy, so
|
|
|
++ * we just do the simple thing now.
|
|
|
++ */
|
|
|
++ if (count > old_count && jifs == old_jifs)
|
|
|
++ count = old_count;
|
|
|
++
|
|
|
++ old_count = count;
|
|
|
++ old_jifs = jifs;
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&mfgpt_lock, flags);
|
|
|
++
|
|
|
++ return (cycle_t) (jifs * COMPARE) + count;
|
|
|
++}
|
|
|
++
|
|
|
++static struct clocksource clocksource_mfgpt = {
|
|
|
++ .name = "mfgpt",
|
|
|
++ .rating = 120, /* Functional for real use, but not desired */
|
|
|
++ .read = mfgpt_read,
|
|
|
++ .mask = CLOCKSOURCE_MASK(32),
|
|
|
++ .mult = 0,
|
|
|
++ .shift = 22,
|
|
|
++};
|
|
|
++
|
|
|
++int __init init_mfgpt_clocksource(void)
|
|
|
++{
|
|
|
++ if (num_possible_cpus() > 1) /* MFGPT does not scale! */
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ clocksource_mfgpt.mult = clocksource_hz2mult(MFGPT_TICK_RATE, 22);
|
|
|
++ return clocksource_register(&clocksource_mfgpt);
|
|
|
++}
|
|
|
++
|
|
|
++arch_initcall(init_mfgpt_clocksource);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ohci.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_ohci.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_ohci.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_ohci.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,168 @@
|
|
|
++/*
|
|
|
++ * the OHCI Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * ohci_write : ohci write transfering.
|
|
|
++ */
|
|
|
++void pci_ohci_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OHCI), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MASTER)
|
|
|
++ hi |= PCI_COMMAND_MASTER;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MASTER;
|
|
|
++
|
|
|
++ if (value & PCI_COMMAND_MEMORY)
|
|
|
++ hi |= PCI_COMMAND_MEMORY;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MEMORY;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_OHCI), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_OHCI_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if ((value & 0x01) == 0x00) {
|
|
|
++ _wrmsr(USB_MSR_REG(USB_OHCI), hi, lo);
|
|
|
++
|
|
|
++ value &= 0xfffffff0;
|
|
|
++ hi = 0x40000000 | ((value & 0xff000000) >> 24);
|
|
|
++ lo = 0x000fffff | ((value & 0x00fff000) << 8);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_P2D_BM3), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ value &= 0x000000ff;
|
|
|
++ break;
|
|
|
++ case PCI_OHCI_PM_REG:
|
|
|
++ break;
|
|
|
++ case PCI_OHCI_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), &hi, &lo);
|
|
|
++ lo &= ~(0xf << PIC_YSEL_LOW_USB_SHIFT);
|
|
|
++ if (value) /* enable all the usb interrupt in PIC */
|
|
|
++ lo |= (CS5536_USB_INTR << PIC_YSEL_LOW_USB_SHIFT);
|
|
|
++ _wrmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), hi, lo);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * ohci_read : ohci read transfering.
|
|
|
++ */
|
|
|
++u32 pci_ohci_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_OHCI_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OHCI), &hi, &lo);
|
|
|
++ if (hi & PCI_COMMAND_MASTER)
|
|
|
++ conf_data |= PCI_COMMAND_MASTER;
|
|
|
++ if (hi & PCI_COMMAND_MEMORY)
|
|
|
++ conf_data |= PCI_COMMAND_MEMORY;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_OHCI_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_OHCI_FLAG) {
|
|
|
++ conf_data = CS5536_OHCI_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_MEMORY;
|
|
|
++ lo &= ~SOFT_BAR_OHCI_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OHCI), &hi, &lo);
|
|
|
++ conf_data = lo & 0xffffff00;
|
|
|
++ conf_data &= ~0x0000000f; /* 32bit mem */
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_OHCI_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_USB_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_USB_INTR);
|
|
|
++ break;
|
|
|
++ case PCI_OHCI_PM_REG:
|
|
|
++ break;
|
|
|
++ case PCI_OHCI_INT_REG:
|
|
|
++ _rdmsr(DIVIL_MSR_REG(PIC_YSEL_LOW), &hi, &lo);
|
|
|
++ if ((lo & 0x00000f00) == CS5536_USB_INTR)
|
|
|
++ conf_data = 1;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_otg.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_otg.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_otg.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_otg.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,138 @@
|
|
|
++/*
|
|
|
++ * the OTG Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++void pci_otg_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OTG), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MEMORY)
|
|
|
++ hi |= PCI_COMMAND_MEMORY;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MEMORY;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_OTG), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_OTG_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if ((value & 0x01) == 0x00) {
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OTG), &hi, &lo);
|
|
|
++ lo &= 0xffffff00;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_OTG), hi, lo);
|
|
|
++
|
|
|
++ value &= 0xfffffff0;
|
|
|
++ hi = 0x40000000 | ((value & 0xff000000) >> 24);
|
|
|
++ lo = 0x000fffff | ((value & 0x00fff000) << 8);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_P2D_BM1), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_otg_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_OTG_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OTG), &hi, &lo);
|
|
|
++ if (hi & PCI_COMMAND_MEMORY)
|
|
|
++ conf_data |= PCI_COMMAND_MEMORY;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_OTG_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_OTG_FLAG) {
|
|
|
++ conf_data = CS5536_OTG_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_MEMORY;
|
|
|
++ lo &= ~SOFT_BAR_OTG_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(USB_MSR_REG(USB_OTG), &hi, &lo);
|
|
|
++ conf_data = lo & 0xffffff00;
|
|
|
++ conf_data &= ~0x0000000f;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_OTG_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_USB_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_USB_INTR);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_pci.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_pci.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_pci.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_pci.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,126 @@
|
|
|
++/*
|
|
|
++ * read/write operation to the PCI config space of CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * the Virtual Support Module(VSM) for virtulizing the PCI
|
|
|
++ * configure space are defined in cs5536_modulename.c respectively,
|
|
|
++ * so you can select modules which have been used in his/her board.
|
|
|
++ * to archive this, you just need to add a "select CS5536_[MODULE]"
|
|
|
++ * option in your board in arch/mips/loongson/Kconfig
|
|
|
++ *
|
|
|
++ * after this virtulizing, user can access the PCI configure space
|
|
|
++ * directly as a normal multi-function PCI device which following
|
|
|
++ * the PCI-2.2 spec.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++#include <cs5536/cs5536_vsm.h>
|
|
|
++
|
|
|
++enum {
|
|
|
++ CS5536_FUNC_START = -1,
|
|
|
++ CS5536_ISA_FUNC,
|
|
|
++ CS5536_FLASH_FUNC,
|
|
|
++ CS5536_IDE_FUNC,
|
|
|
++ CS5536_ACC_FUNC,
|
|
|
++ CS5536_OHCI_FUNC,
|
|
|
++ CS5536_EHCI_FUNC,
|
|
|
++ CS5536_UDC_FUNC,
|
|
|
++ CS5536_OTG_FUNC,
|
|
|
++ CS5536_FUNC_END,
|
|
|
++};
|
|
|
++
|
|
|
++/*
|
|
|
++ * write to PCI config space and transfer it to MSR write.
|
|
|
++ */
|
|
|
++void cs5536_pci_conf_write4(int function, int reg, u32 value)
|
|
|
++{
|
|
|
++ if ((function <= CS5536_FUNC_START) || (function >= CS5536_FUNC_END))
|
|
|
++ return;
|
|
|
++ if ((reg < 0) || (reg > 0x100) || ((reg & 0x03) != 0))
|
|
|
++ return;
|
|
|
++
|
|
|
++ switch (function) {
|
|
|
++ case CS5536_ISA_FUNC:
|
|
|
++ pci_isa_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_FLASH_FUNC:
|
|
|
++ pci_flash_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_IDE_FUNC:
|
|
|
++ pci_ide_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_ACC_FUNC:
|
|
|
++ pci_acc_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_OHCI_FUNC:
|
|
|
++ pci_ohci_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_EHCI_FUNC:
|
|
|
++ pci_ehci_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_UDC_FUNC:
|
|
|
++ pci_udc_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ case CS5536_OTG_FUNC:
|
|
|
++ pci_otg_write_reg(reg, value);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * read PCI config space and transfer it to MSR access.
|
|
|
++ */
|
|
|
++u32 cs5536_pci_conf_read4(int function, int reg)
|
|
|
++{
|
|
|
++ u32 data = 0;
|
|
|
++
|
|
|
++ if ((function <= CS5536_FUNC_START) || (function >= CS5536_FUNC_END))
|
|
|
++ return 0;
|
|
|
++ if ((reg < 0) || ((reg & 0x03) != 0))
|
|
|
++ return 0;
|
|
|
++ if (reg > 0x100)
|
|
|
++ return 0xffffffff;
|
|
|
++
|
|
|
++ switch (function) {
|
|
|
++ case CS5536_ISA_FUNC:
|
|
|
++ data = pci_isa_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_FLASH_FUNC:
|
|
|
++ data = pci_flash_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_IDE_FUNC:
|
|
|
++ data = pci_ide_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_ACC_FUNC:
|
|
|
++ data = pci_acc_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_OHCI_FUNC:
|
|
|
++ data = pci_ohci_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_EHCI_FUNC:
|
|
|
++ data = pci_ehci_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_UDC_FUNC:
|
|
|
++ data = pci_udc_read_reg(reg);
|
|
|
++ break;
|
|
|
++ case CS5536_OTG_FUNC:
|
|
|
++ data = pci_otg_read_reg(reg);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_udc.c rt4ls/arch/mips/loongson/common/cs5536/cs5536_udc.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/cs5536/cs5536_udc.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/cs5536/cs5536_udc.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,143 @@
|
|
|
++/*
|
|
|
++ * the UDC Virtual Support Module of AMD CS5536
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author : jlliu, liujl@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++void pci_udc_write_reg(int reg, u32 value)
|
|
|
++{
|
|
|
++ u32 hi = 0, lo = value;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_UDC), &hi, &lo);
|
|
|
++ if (value & PCI_COMMAND_MASTER)
|
|
|
++ hi |= PCI_COMMAND_MASTER;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MASTER;
|
|
|
++
|
|
|
++ if (value & PCI_COMMAND_MEMORY)
|
|
|
++ hi |= PCI_COMMAND_MEMORY;
|
|
|
++ else
|
|
|
++ hi &= ~PCI_COMMAND_MEMORY;
|
|
|
++ _wrmsr(USB_MSR_REG(USB_UDC), hi, lo);
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ if (value & PCI_STATUS_PARITY) {
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG) {
|
|
|
++ lo = (lo & 0x0000ffff) | SB_PARE_ERR_FLAG;
|
|
|
++ _wrmsr(SB_MSR_REG(SB_ERROR), hi, lo);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ if (value == PCI_BAR_RANGE_MASK) {
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ lo |= SOFT_BAR_UDC_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else if ((value & 0x01) == 0x00) {
|
|
|
++ _wrmsr(USB_MSR_REG(USB_UDC), hi, lo);
|
|
|
++
|
|
|
++ value &= 0xfffffff0;
|
|
|
++ hi = 0x40000000 | ((value & 0xff000000) >> 24);
|
|
|
++ lo = 0x000fffff | ((value & 0x00fff000) << 8);
|
|
|
++ _wrmsr(GLIU_MSR_REG(GLIU_P2D_BM0), hi, lo);
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++u32 pci_udc_read_reg(int reg)
|
|
|
++{
|
|
|
++ u32 conf_data = 0;
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ switch (reg) {
|
|
|
++ case PCI_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_UDC_DEVICE_ID, CS5536_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_COMMAND:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_UDC), &hi, &lo);
|
|
|
++ if (hi & PCI_COMMAND_MASTER)
|
|
|
++ conf_data |= PCI_COMMAND_MASTER;
|
|
|
++ if (hi & PCI_COMMAND_MEMORY)
|
|
|
++ conf_data |= PCI_COMMAND_MEMORY;
|
|
|
++ break;
|
|
|
++ case PCI_STATUS:
|
|
|
++ conf_data |= PCI_STATUS_66MHZ;
|
|
|
++ conf_data |= PCI_STATUS_FAST_BACK;
|
|
|
++ _rdmsr(SB_MSR_REG(SB_ERROR), &hi, &lo);
|
|
|
++ if (lo & SB_PARE_ERR_FLAG)
|
|
|
++ conf_data |= PCI_STATUS_PARITY;
|
|
|
++ conf_data |= PCI_STATUS_DEVSEL_MEDIUM;
|
|
|
++ break;
|
|
|
++ case PCI_CLASS_REVISION:
|
|
|
++ _rdmsr(USB_MSR_REG(USB_CAP), &hi, &lo);
|
|
|
++ conf_data = lo & 0x000000ff;
|
|
|
++ conf_data |= (CS5536_UDC_CLASS_CODE << 8);
|
|
|
++ break;
|
|
|
++ case PCI_CACHE_LINE_SIZE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_CACHE_LINE_SIZE(PCI_NORMAL_HEADER_TYPE,
|
|
|
++ PCI_NORMAL_LATENCY_TIMER);
|
|
|
++ break;
|
|
|
++ case PCI_BAR0_REG:
|
|
|
++ _rdmsr(GLCP_MSR_REG(GLCP_SOFT_COM), &hi, &lo);
|
|
|
++ if (lo & SOFT_BAR_UDC_FLAG) {
|
|
|
++ conf_data = CS5536_UDC_RANGE |
|
|
|
++ PCI_BASE_ADDRESS_SPACE_MEMORY;
|
|
|
++ lo &= ~SOFT_BAR_UDC_FLAG;
|
|
|
++ _wrmsr(GLCP_MSR_REG(GLCP_SOFT_COM), hi, lo);
|
|
|
++ } else {
|
|
|
++ _rdmsr(USB_MSR_REG(USB_UDC), &hi, &lo);
|
|
|
++ conf_data = lo & 0xfffff000;
|
|
|
++ conf_data &= ~0x0000000f; /* 32bit mem */
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ case PCI_BAR1_REG:
|
|
|
++ case PCI_BAR2_REG:
|
|
|
++ case PCI_BAR3_REG:
|
|
|
++ case PCI_BAR4_REG:
|
|
|
++ case PCI_BAR5_REG:
|
|
|
++ break;
|
|
|
++ case PCI_CARDBUS_CIS:
|
|
|
++ conf_data = PCI_CARDBUS_CIS_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_SUBSYSTEM_VENDOR_ID:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_VENDOR_ID(CS5536_UDC_SUB_ID, CS5536_SUB_VENDOR_ID);
|
|
|
++ break;
|
|
|
++ case PCI_ROM_ADDRESS:
|
|
|
++ conf_data = PCI_EXPANSION_ROM_BAR;
|
|
|
++ break;
|
|
|
++ case PCI_CAPABILITY_LIST:
|
|
|
++ conf_data = PCI_CAPLIST_USB_POINTER;
|
|
|
++ break;
|
|
|
++ case PCI_INTERRUPT_LINE:
|
|
|
++ conf_data =
|
|
|
++ CFG_PCI_INTERRUPT_LINE(PCI_DEFAULT_PIN, CS5536_USB_INTR);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ return conf_data;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/early_printk.c rt4ls/arch/mips/loongson/common/early_printk.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/early_printk.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/early_printk.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,28 @@
|
|
|
++/* early printk support
|
|
|
++ *
|
|
|
++ * Copyright (c) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++#include <linux/serial_reg.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++void prom_putchar(char c)
|
|
|
++{
|
|
|
++ int timeout;
|
|
|
++ phys_addr_t uart_base =
|
|
|
++ (phys_addr_t) ioremap_nocache(LOONGSON_UART_BASE, 8);
|
|
|
++ char reg = readb((u8 *) (uart_base + UART_LSR)) & UART_LSR_THRE;
|
|
|
++
|
|
|
++ for (timeout = 1024; reg == 0 && timeout > 0; timeout--)
|
|
|
++ reg = readb((u8 *) (uart_base + UART_LSR)) & UART_LSR_THRE;
|
|
|
++
|
|
|
++ writeb(c, (u8 *) (uart_base + UART_TX));
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/env.c rt4ls/arch/mips/loongson/common/env.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/env.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/env.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,59 @@
|
|
|
++/*
|
|
|
++ * Based on Ocelot Linux port, which is
|
|
|
++ * Copyright 2001 MontaVista Software Inc.
|
|
|
++ * Author: jsun@mvista.com or jsun@junsun.net
|
|
|
++ *
|
|
|
++ * Copyright 2003 ICT CAS
|
|
|
++ * Author: Michael Guo <guoyi@ict.ac.cn>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++unsigned long bus_clock, cpu_clock_freq;
|
|
|
++unsigned long memsize, highmemsize;
|
|
|
++
|
|
|
++/* pmon passes arguments in 32bit pointers */
|
|
|
++int *_prom_envp;
|
|
|
++
|
|
|
++#define parse_even_earlier(res, option, p) \
|
|
|
++do { \
|
|
|
++ if (strncmp(option, (char *)p, strlen(option)) == 0) \
|
|
|
++ strict_strtol((char *)p + strlen(option"="), \
|
|
|
++ 10, &res); \
|
|
|
++} while (0)
|
|
|
++
|
|
|
++void __init prom_init_env(void)
|
|
|
++{
|
|
|
++ long l;
|
|
|
++
|
|
|
++ /* firmware arguments are initialized in head.S */
|
|
|
++ _prom_envp = (int *)fw_arg2;
|
|
|
++
|
|
|
++ l = (long)*_prom_envp;
|
|
|
++ while (l != 0) {
|
|
|
++ parse_even_earlier(bus_clock, "busclock", l);
|
|
|
++ parse_even_earlier(cpu_clock_freq, "cpuclock", l);
|
|
|
++ parse_even_earlier(memsize, "memsize", l);
|
|
|
++ parse_even_earlier(highmemsize, "highmemsize", l);
|
|
|
++ _prom_envp++;
|
|
|
++ l = (long)*_prom_envp;
|
|
|
++ }
|
|
|
++ if (memsize == 0)
|
|
|
++ memsize = 256;
|
|
|
++
|
|
|
++ pr_info("busclock=%ld, cpuclock=%ld, memsize=%ld, highmemsize=%ld\n",
|
|
|
++ bus_clock, cpu_clock_freq, memsize, highmemsize);
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/init.c rt4ls/arch/mips/loongson/common/init.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/init.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/init.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,54 @@
|
|
|
++/*
|
|
|
++ * Based on Ocelot Linux port, which is
|
|
|
++ * Copyright 2001 MontaVista Software Inc.
|
|
|
++ * Author: jsun@mvista.com or jsun@junsun.net
|
|
|
++ *
|
|
|
++ * Copyright 2003 ICT CAS
|
|
|
++ * Author: Michael Guo <guoyi@ict.ac.cn>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/bootmem.h>
|
|
|
++
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
|
|
++unsigned long _loongson_addrwincfg_base;
|
|
|
++
|
|
|
++/* Loongson CPU address windows config space base address */
|
|
|
++static inline void set_loongson_addrwincfg_base(unsigned long base)
|
|
|
++{
|
|
|
++ *(unsigned long *)&_loongson_addrwincfg_base = base;
|
|
|
++ barrier();
|
|
|
++}
|
|
|
++#endif
|
|
|
++
|
|
|
++void __init prom_init(void)
|
|
|
++{
|
|
|
++ /* init several base address */
|
|
|
++ set_io_port_base((unsigned long)
|
|
|
++ ioremap(LOONGSON_PCIIO_BASE, LOONGSON_PCIIO_SIZE));
|
|
|
++
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
|
|
++ set_loongson_addrwincfg_base((unsigned long)
|
|
|
++ ioremap(LOONGSON_ADDRWINCFG_BASE,
|
|
|
++ LOONGSON_ADDRWINCFG_SIZE));
|
|
|
++#endif
|
|
|
++
|
|
|
++ prom_init_cmdline();
|
|
|
++ prom_init_env();
|
|
|
++ prom_init_memory();
|
|
|
++}
|
|
|
++
|
|
|
++void __init prom_free_prom_memory(void)
|
|
|
++{
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/irq.c rt4ls/arch/mips/loongson/common/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/irq.c 2009-06-12 16:27:08.778446663 +0200
|
|
|
+@@ -0,0 +1,132 @@
|
|
|
++/*
|
|
|
++ * Copyright 2001 MontaVista Software Inc.
|
|
|
++ * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
|
|
++ * Copyright (C) 2000, 2001 Ralf Baechle (ralf@gnu.org)
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/delay.h>
|
|
|
++#include <linux/interrupt.h>
|
|
|
++
|
|
|
++#include <asm/irq_cpu.h>
|
|
|
++#include <asm/i8259.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * the first level int-handler will jump here if it is a loongson irq
|
|
|
++ */
|
|
|
++void bonito_irqdispatch(void)
|
|
|
++{
|
|
|
++ u32 int_status;
|
|
|
++ int i;
|
|
|
++
|
|
|
++ /* workaround the IO dma problem: let cpu looping to allow DMA finish */
|
|
|
++ int_status = LOONGSON_INTISR;
|
|
|
++ while (int_status & (1 << 10)) {
|
|
|
++ udelay(1);
|
|
|
++ int_status = LOONGSON_INTISR;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Get pending sources, masked by current enables */
|
|
|
++ int_status = LOONGSON_INTISR & LOONGSON_INTEN;
|
|
|
++
|
|
|
++ if (int_status != 0) {
|
|
|
++ i = __ffs(int_status);
|
|
|
++ int_status &= ~(1 << i);
|
|
|
++ do_IRQ(LOONGSON_IRQ_BASE + i);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++void i8259_irqdispatch(void)
|
|
|
++{
|
|
|
++ int irq;
|
|
|
++
|
|
|
++ irq = mach_i8259_irq();
|
|
|
++ if (irq < 0)
|
|
|
++ spurious_interrupt();
|
|
|
++ else
|
|
|
++ do_IRQ(irq);
|
|
|
++}
|
|
|
++
|
|
|
++asmlinkage void plat_irq_dispatch(void)
|
|
|
++{
|
|
|
++ unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
|
|
|
++
|
|
|
++ mach_irq_dispatch(pending);
|
|
|
++}
|
|
|
++
|
|
|
++
|
|
|
++static struct irqaction cascade_irqaction = {
|
|
|
++ .handler = no_action,
|
|
|
++ .name = "cascade",
|
|
|
++};
|
|
|
++
|
|
|
++/*
|
|
|
++ * fuloong2f and yeeloong2f share the cpu perf counter interrupt and the north
|
|
|
++ * bridge interrupt in IP6, so, the ip6_irqaction should be sharable.
|
|
|
++ * otherwise, we will can not request the perf counter irq(setup the perf
|
|
|
++ * counter irq handler) in op_model_loongson2.c.
|
|
|
++ */
|
|
|
++
|
|
|
++#if defined(CONFIG_OPROFILE) && \
|
|
|
++ (defined(CONFIG_LEMOTE_FULOONG2F) || defined(CONFIG_LEMOTE_YEELOONG2F))
|
|
|
++irqreturn_t ip6_action(int cpl, void *dev_id)
|
|
|
++{
|
|
|
++ return IRQ_HANDLED;
|
|
|
++}
|
|
|
++
|
|
|
++static struct irqaction ip6_irqaction = {
|
|
|
++ .handler = ip6_action,
|
|
|
++ .name = "cascade",
|
|
|
++ .flags = IRQF_SHARED,
|
|
|
++};
|
|
|
++#else
|
|
|
++#define ip6_irqaction cascade_irqaction
|
|
|
++#endif
|
|
|
++
|
|
|
++void __init arch_init_irq(void)
|
|
|
++{
|
|
|
++ /*
|
|
|
++ * Clear all of the interrupts while we change the able around a bit.
|
|
|
++ * int-handler is not on bootstrap
|
|
|
++ */
|
|
|
++ clear_c0_status(ST0_IM | ST0_BEV);
|
|
|
++ local_irq_disable();
|
|
|
++
|
|
|
++ /* setting irq trigger mode */
|
|
|
++ set_irq_trigger_mode();
|
|
|
++
|
|
|
++ /* no steer */
|
|
|
++ LOONGSON_INTSTEER = 0;
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Mask out all interrupt by writing "1" to all bit position in
|
|
|
++ * the interrupt reset reg.
|
|
|
++ */
|
|
|
++ LOONGSON_INTENCLR = ~0;
|
|
|
++
|
|
|
++ /* init all controller
|
|
|
++ * 0-15 ------> i8259 interrupt
|
|
|
++ * 16-23 ------> mips cpu interrupt
|
|
|
++ * 32-63 ------> bonito irq
|
|
|
++ */
|
|
|
++
|
|
|
++ /* Sets the first-level interrupt dispatcher. */
|
|
|
++ mips_cpu_irq_init();
|
|
|
++ init_i8259_irqs();
|
|
|
++ bonito_irq_init();
|
|
|
++
|
|
|
++ /* setup north bridge irq (bonito) */
|
|
|
++ setup_irq(LOONGSON_NORTH_BRIDGE_IRQ, &ip6_irqaction);
|
|
|
++ /* setup source bridge irq (i8259) */
|
|
|
++ setup_irq(LOONGSON_SOUTH_BRIDGE_IRQ, &cascade_irqaction);
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/machtype.c rt4ls/arch/mips/loongson/common/machtype.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/machtype.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/machtype.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,50 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (c) 2009 Zhang Le <r0bertz@gentoo.org>
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/errno.h>
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++static const char *system_types[] = {
|
|
|
++ [MACH_LOONGSON_UNKNOWN] "unknown loongson machine",
|
|
|
++ [MACH_LEMOTE_FL2E] "lemote-fuloong-2e-box",
|
|
|
++ [MACH_LEMOTE_FL2F] "lemote-fuloong-2f-box",
|
|
|
++ [MACH_LEMOTE_YL2F89] "lemote-yeeloong-2f-8.9inches",
|
|
|
++ [MACH_LEMOTE_YL2F7] "lemote-yeeloong-2f-7inches",
|
|
|
++ [MACH_LOONGSON_END] NULL,
|
|
|
++};
|
|
|
++
|
|
|
++const char *get_system_type(void)
|
|
|
++{
|
|
|
++ if (mips_machtype == MACH_UNKNOWN)
|
|
|
++ mips_machtype = MACHTYPE;
|
|
|
++
|
|
|
++ return system_types[mips_machtype];
|
|
|
++}
|
|
|
++
|
|
|
++static __init int machtype_setup(char *str)
|
|
|
++{
|
|
|
++ int machtype = MACH_LEMOTE_FL2E;
|
|
|
++
|
|
|
++ if (!str)
|
|
|
++ return -EINVAL;
|
|
|
++
|
|
|
++ for (; system_types[machtype]; machtype++)
|
|
|
++ if (strstr(system_types[machtype], str)) {
|
|
|
++ mips_machtype = machtype;
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++__setup("machtype=", machtype_setup);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/mem.c rt4ls/arch/mips/loongson/common/mem.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/mem.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/mem.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,116 @@
|
|
|
++/*
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/fs.h>
|
|
|
++#include <linux/mm.h>
|
|
|
++
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <mem.h>
|
|
|
++
|
|
|
++void __init prom_init_memory(void)
|
|
|
++{
|
|
|
++ add_memory_region(0x0, (memsize << 20), BOOT_MEM_RAM);
|
|
|
++#ifdef CONFIG_64BIT
|
|
|
++#ifdef CONFIG_CPU_LOONGSON2F
|
|
|
++ {
|
|
|
++ int bit;
|
|
|
++
|
|
|
++ bit = fls(memsize + highmemsize);
|
|
|
++ if (bit != ffs(memsize + highmemsize))
|
|
|
++ bit += 20;
|
|
|
++ else
|
|
|
++ bit = bit + 20 - 1;
|
|
|
++
|
|
|
++ /* set cpu window3 to map CPU to DDR: 2G -> 2G */
|
|
|
++ LOONGSON_ADDRWIN_CPUTODDR(ADDRWIN_WIN3, 0x80000000ul,
|
|
|
++ 0x80000000ul, (1 << bit));
|
|
|
++ mmiowb();
|
|
|
++ }
|
|
|
++#endif /* CONFIG_CPU_LOONGSON2F */
|
|
|
++
|
|
|
++ if (highmemsize > 0) {
|
|
|
++ add_memory_region(LOONGSON_HIGHMEM_START,
|
|
|
++ highmemsize << 20, BOOT_MEM_RAM);
|
|
|
++ }
|
|
|
++#endif /* CONFIG_64BIT */
|
|
|
++}
|
|
|
++
|
|
|
++/* override of arch/mips/mm/cache.c: __uncached_access */
|
|
|
++int __uncached_access(struct file *file, unsigned long addr)
|
|
|
++{
|
|
|
++ if (file->f_flags & O_SYNC)
|
|
|
++ return 1;
|
|
|
++
|
|
|
++ return addr >= __pa(high_memory) ||
|
|
|
++ ((addr >= LOONGSON_MMIO_MEM_START) && \
|
|
|
++ (addr < LOONGSON_MMIO_MEM_END));
|
|
|
++}
|
|
|
++
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F)
|
|
|
++
|
|
|
++#include <linux/pci.h>
|
|
|
++#include <linux/sched.h>
|
|
|
++#include <asm/current.h>
|
|
|
++
|
|
|
++static unsigned long uca_start;
|
|
|
++static unsigned long uca_size = CONFIG_UCA_SIZE;
|
|
|
++
|
|
|
++pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
|
|
++ unsigned long size, pgprot_t vma_prot)
|
|
|
++{
|
|
|
++ unsigned long offset = pfn << PAGE_SHIFT;
|
|
|
++ unsigned long end = offset + size;
|
|
|
++
|
|
|
++ if (__uncached_access(file, offset)) {
|
|
|
++ if (((uca_start && offset) >= uca_start) && \
|
|
|
++ (end <= (uca_start + uca_size)))
|
|
|
++ return __pgprot((pgprot_val(vma_prot) & \
|
|
|
++ ~_CACHE_MASK) | \
|
|
|
++ _CACHE_UNCACHED_ACCELERATED);
|
|
|
++ else
|
|
|
++ return pgprot_noncached(vma_prot);
|
|
|
++ }
|
|
|
++ return vma_prot;
|
|
|
++}
|
|
|
++
|
|
|
++static int __init find_vga_mem_init(void)
|
|
|
++{
|
|
|
++ struct pci_dev *dev = 0;
|
|
|
++ struct resource *r;
|
|
|
++ int idx;
|
|
|
++
|
|
|
++ if (uca_start)
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ for_each_pci_dev(dev) {
|
|
|
++ if ((dev->class >> 8) == PCI_CLASS_DISPLAY_VGA) {
|
|
|
++ for (idx = 0; idx < PCI_NUM_RESOURCES; idx++) {
|
|
|
++ r = &dev->resource[idx];
|
|
|
++ if (!r->start && r->end)
|
|
|
++ continue;
|
|
|
++ if (r->flags & IORESOURCE_IO)
|
|
|
++ continue;
|
|
|
++ if (r->flags & IORESOURCE_MEM) {
|
|
|
++ uca_start = r->start;
|
|
|
++
|
|
|
++ printk(KERN_INFO
|
|
|
++ "find the frame buffer:start=%lx\n",
|
|
|
++ uca_start);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ }
|
|
|
++ }
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++late_initcall(find_vga_mem_init);
|
|
|
++#endif /* !CONFIG_CPU_LOONGSON2F */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/pci.c rt4ls/arch/mips/loongson/common/pci.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/pci.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/pci.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,109 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License along
|
|
|
++ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
++ * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
++ *
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/pci.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <pci.h>
|
|
|
++
|
|
|
++static struct resource loongson_pci_mem_resource = {
|
|
|
++ .name = "pci memory space",
|
|
|
++ .start = LOONGSON_PCI_MEM_START,
|
|
|
++ .end = LOONGSON_PCI_MEM_END,
|
|
|
++ .flags = IORESOURCE_MEM,
|
|
|
++};
|
|
|
++
|
|
|
++static struct resource loongson_pci_io_resource = {
|
|
|
++ .name = "pci io space",
|
|
|
++ .start = LOONGSON_PCI_IO_START, /* reserve regacy I/O space */
|
|
|
++ .end = IO_SPACE_LIMIT,
|
|
|
++ .flags = IORESOURCE_IO,
|
|
|
++};
|
|
|
++
|
|
|
++static struct pci_controller loongson_pci_controller = {
|
|
|
++ .pci_ops = &loongson_pci_ops,
|
|
|
++ .io_resource = &loongson_pci_io_resource,
|
|
|
++ .mem_resource = &loongson_pci_mem_resource,
|
|
|
++ .mem_offset = 0x00000000UL,
|
|
|
++ .io_offset = 0x00000000UL,
|
|
|
++};
|
|
|
++
|
|
|
++static void __init ict_pcimap(void)
|
|
|
++{
|
|
|
++ /*
|
|
|
++ * local to PCI mapping for CPU accessing PCI space
|
|
|
++ *
|
|
|
++ * CPU address space [256M,448M] is window for accessing pci space
|
|
|
++ * we set pcimap_lo[0,1,2] to map it to pci space[0M,64M], [320M,448M]
|
|
|
++ *
|
|
|
++ * pcimap: PCI_MAP2 PCI_Mem_Lo2 PCI_Mem_Lo1 PCI_Mem_Lo0
|
|
|
++ * [<2G] [384M,448M] [320M,384M] [0M,64M]
|
|
|
++ */
|
|
|
++ LOONGSON_PCIMAP = LOONGSON_PCIMAP_PCIMAP_2 |
|
|
|
++ LOONGSON_PCIMAP_WIN(2, 0x18000000) |
|
|
|
++ LOONGSON_PCIMAP_WIN(1, 0x14000000) |
|
|
|
++ LOONGSON_PCIMAP_WIN(0, 0);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * PCI-DMA to local mapping: [2G,2G+256M] -> [0M,256M]
|
|
|
++ */
|
|
|
++ LOONGSON_PCIBASE0 = 0x80000000ul; /* base: 2G -> mmap: 0M */
|
|
|
++ /* size: 256M, burst transmission, pre-fetch enable, 64bit */
|
|
|
++ LOONGSON_PCI_HIT0_SEL_L = 0xc000000cul;
|
|
|
++ LOONGSON_PCI_HIT0_SEL_H = 0xfffffffful;
|
|
|
++ LOONGSON_PCI_HIT1_SEL_L = 0x00000006ul; /* set this BAR as invalid */
|
|
|
++ LOONGSON_PCI_HIT1_SEL_H = 0x00000000ul;
|
|
|
++ LOONGSON_PCI_HIT2_SEL_L = 0x00000006ul; /* set this BAR as invalid */
|
|
|
++ LOONGSON_PCI_HIT2_SEL_H = 0x00000000ul;
|
|
|
++
|
|
|
++ /* avoid deadlock of PCI reading/writing lock operation */
|
|
|
++ LOONGSON_PCI_ISR4C = 0xd2000001ul;
|
|
|
++
|
|
|
++ /* can not change gnt to break pci transfer when device's gnt not
|
|
|
++ deassert for some broken device */
|
|
|
++ LOONGSON_PXARB_CFG = 0x00fe0105ul;
|
|
|
++
|
|
|
++#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
|
|
++ /*
|
|
|
++ * set cpu addr window2 to map CPU address space to PCI address space
|
|
|
++ */
|
|
|
++ LOONGSON_ADDRWIN_CPUTOPCI(ADDRWIN_WIN2, LOONGSON_CPU_MEM_SRC,
|
|
|
++ LOONGSON_PCI_MEM_DST, MMAP_CPUTOPCI_SIZE);
|
|
|
++#endif
|
|
|
++}
|
|
|
++
|
|
|
++static int __init pcibios_init(void)
|
|
|
++{
|
|
|
++ ict_pcimap();
|
|
|
++
|
|
|
++ loongson_pci_controller.io_map_base = mips_io_port_base;
|
|
|
++
|
|
|
++ register_pci_controller(&loongson_pci_controller);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++arch_initcall(pcibios_init);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/reset.c rt4ls/arch/mips/loongson/common/reset.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/reset.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/reset.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,38 @@
|
|
|
++/*
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/pm.h>
|
|
|
++
|
|
|
++#include <asm/reboot.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++static void loongson_restart(char *command)
|
|
|
++{
|
|
|
++ /* perform board-specific pre-reboot operations */
|
|
|
++ mach_prepare_reboot();
|
|
|
++
|
|
|
++ /* reboot via jumping to 0xbfc00000 */
|
|
|
++ ((void (*)(void))ioremap_nocache(LOONGSON_BOOT_BASE, 4)) ();
|
|
|
++}
|
|
|
++
|
|
|
++static void loongson_halt(void)
|
|
|
++{
|
|
|
++ mach_prepare_shutdown();
|
|
|
++ while (1)
|
|
|
++ ;
|
|
|
++}
|
|
|
++
|
|
|
++void __init loongson_reboot_setup(void)
|
|
|
++{
|
|
|
++ _machine_restart = loongson_restart;
|
|
|
++ _machine_halt = loongson_halt;
|
|
|
++ pm_power_off = loongson_halt;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/rtc.c rt4ls/arch/mips/loongson/common/rtc.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/rtc.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/rtc.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,54 @@
|
|
|
++/*
|
|
|
++ * Registration of Cobalt RTC platform device.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
|
|
|
++ * Copyright (C) 2009 Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify
|
|
|
++ * it under the terms of the GNU General Public License as published by
|
|
|
++ * the Free Software Foundation; either version 2 of the License, or
|
|
|
++ * (at your option) any later version.
|
|
|
++ *
|
|
|
++ * This program is distributed in the hope that it will be useful,
|
|
|
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
++ * GNU General Public License for more details.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License
|
|
|
++ * along with this program; if not, write to the Free Software
|
|
|
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
|
++ * MA 02110-1301 USA
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/ioport.h>
|
|
|
++#include <linux/mc146818rtc.h>
|
|
|
++#include <linux/platform_device.h>
|
|
|
++
|
|
|
++static struct resource rtc_cmos_resource[] = {
|
|
|
++ {
|
|
|
++ .start = RTC_PORT(0),
|
|
|
++ .end = RTC_PORT(1),
|
|
|
++ .flags = IORESOURCE_IO,
|
|
|
++ },
|
|
|
++ {
|
|
|
++ .start = RTC_IRQ,
|
|
|
++ .end = RTC_IRQ,
|
|
|
++ .flags = IORESOURCE_IRQ,
|
|
|
++ },
|
|
|
++};
|
|
|
++
|
|
|
++static struct platform_device rtc_cmos_device = {
|
|
|
++ .name = "rtc_cmos",
|
|
|
++ .id = -1,
|
|
|
++ .num_resources = ARRAY_SIZE(rtc_cmos_resource),
|
|
|
++ .resource = rtc_cmos_resource
|
|
|
++};
|
|
|
++
|
|
|
++static __init int rtc_cmos_init(void)
|
|
|
++{
|
|
|
++ platform_device_register(&rtc_cmos_device);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++device_initcall(rtc_cmos_init);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/serial.c rt4ls/arch/mips/loongson/common/serial.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/serial.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/serial.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,66 @@
|
|
|
++/*
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Ralf Baechle (ralf@linux-mips.org)
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: yanhua (yanhua@lemote.com)
|
|
|
++ * Author: Wu Zhangjin (wuzj@lemote.com)
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/serial_8250.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++#define PORT(int, base_baud, io_type) \
|
|
|
++{ \
|
|
|
++ .irq = int, \
|
|
|
++ .uartclk = base_baud, \
|
|
|
++ .iotype = io_type, \
|
|
|
++ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, \
|
|
|
++ .regshift = 0, \
|
|
|
++}
|
|
|
++
|
|
|
++static struct plat_serial8250_port uart8250_data[] = {
|
|
|
++ PORT(LOONGSON_UART_IRQ, LOONGSON_UART_BAUD, LOONGSON_UART_IOTYPE),
|
|
|
++ {},
|
|
|
++};
|
|
|
++
|
|
|
++static struct platform_device uart8250_device = {
|
|
|
++ .name = "serial8250",
|
|
|
++ .id = PLAT8250_DEV_PLATFORM,
|
|
|
++ .dev = {
|
|
|
++ .platform_data = uart8250_data,
|
|
|
++ },
|
|
|
++};
|
|
|
++
|
|
|
++static inline void uart8250_init(void)
|
|
|
++{
|
|
|
++#if (LOONGSON_UART_IOTYPE == UPIO_MEM)
|
|
|
++ uart8250_data[0].membase =
|
|
|
++ ioremap_nocache(LOONGSON_UART_BASE, 8);
|
|
|
++#elif (LOONGSON_UART_IOTYPE == UPIO_PORT)
|
|
|
++ uart8250_data[0].iobase =
|
|
|
++ LOONGSON_UART_BASE - LOONGSON_PCIIO_BASE;
|
|
|
++ uart8250_data[0].irq -= MIPS_CPU_IRQ_BASE;
|
|
|
++#else
|
|
|
++#warning currently, no such iotype of uart used in loongson-based machines
|
|
|
++
|
|
|
++#endif
|
|
|
++}
|
|
|
++
|
|
|
++static int __init serial_init(void)
|
|
|
++{
|
|
|
++ uart8250_init();
|
|
|
++
|
|
|
++ platform_device_register(&uart8250_device);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++device_initcall(serial_init);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/setup.c rt4ls/arch/mips/loongson/common/setup.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/setup.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/setup.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,74 @@
|
|
|
++/*
|
|
|
++ * board dependent setup routines
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/module.h>
|
|
|
++
|
|
|
++#include <asm/wbflush.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++void (*__wbflush) (void);
|
|
|
++EXPORT_SYMBOL(__wbflush);
|
|
|
++
|
|
|
++static void loongson_wbflush(void)
|
|
|
++{
|
|
|
++ asm(".set\tpush\n\t"
|
|
|
++ ".set\tnoreorder\n\t"
|
|
|
++ ".set mips3\n\t"
|
|
|
++ "sync\n\t"
|
|
|
++ "nop\n\t"
|
|
|
++ ".set\tpop\n\t"
|
|
|
++ ".set mips0\n\t");
|
|
|
++}
|
|
|
++
|
|
|
++void __init loongson_wbflush_setup(void)
|
|
|
++{
|
|
|
++ __wbflush = loongson_wbflush;
|
|
|
++}
|
|
|
++
|
|
|
++#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE)
|
|
|
++#include <linux/screen_info.h>
|
|
|
++
|
|
|
++void __init loongson_screeninfo_setup(void)
|
|
|
++{
|
|
|
++ screen_info = (struct screen_info) {
|
|
|
++ 0, /* orig-x */
|
|
|
++ 25, /* orig-y */
|
|
|
++ 0, /* unused */
|
|
|
++ 0, /* orig-video-page */
|
|
|
++ 0, /* orig-video-mode */
|
|
|
++ 80, /* orig-video-cols */
|
|
|
++ 0, /* ega_ax */
|
|
|
++ 0, /* ega_bx */
|
|
|
++ 0, /* ega_cx */
|
|
|
++ 25, /* orig-video-lines */
|
|
|
++ VIDEO_TYPE_VGAC, /* orig-video-isVGA */
|
|
|
++ 16 /* orig-video-points */
|
|
|
++ };
|
|
|
++}
|
|
|
++#else
|
|
|
++void __init loongson_screeninfo_setup(void)
|
|
|
++{
|
|
|
++}
|
|
|
++#endif
|
|
|
++
|
|
|
++void __init plat_mem_setup(void)
|
|
|
++{
|
|
|
++ loongson_reboot_setup();
|
|
|
++
|
|
|
++ loongson_wbflush_setup();
|
|
|
++
|
|
|
++ loongson_screeninfo_setup();
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/common/time.c rt4ls/arch/mips/loongson/common/time.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/common/time.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/common/time.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,34 @@
|
|
|
++/*
|
|
|
++ * board dependent boot routines
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <asm/mc146818-time.h>
|
|
|
++#include <asm/time.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#ifdef CONFIG_CS5536_MFGPT
|
|
|
++#include <cs5536/cs5536_mfgpt.h>
|
|
|
++#endif
|
|
|
++
|
|
|
++unsigned long read_persistent_clock(void)
|
|
|
++{
|
|
|
++ return mc146818_get_cmos_time();
|
|
|
++}
|
|
|
++
|
|
|
++void __init plat_time_init(void)
|
|
|
++{
|
|
|
++ /* setup mips r4k timer */
|
|
|
++ mips_hpt_frequency = cpu_clock_freq / 2;
|
|
|
++
|
|
|
++#ifdef CONFIG_CS5536_MFGPT
|
|
|
++ setup_mfgpt_timer();
|
|
|
++#endif
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2e/Makefile rt4ls/arch/mips/loongson/fuloong-2e/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2e/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2e/Makefile 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,7 @@
|
|
|
++#
|
|
|
++# Makefile for fuloong-2e
|
|
|
++#
|
|
|
++
|
|
|
++obj-y += irq.o reset.o
|
|
|
++
|
|
|
++EXTRA_CFLAGS += -Werror
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2e/irq.c rt4ls/arch/mips/loongson/fuloong-2e/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2e/irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2e/irq.c 2009-06-12 16:27:08.782445496 +0200
|
|
|
+@@ -0,0 +1,58 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License along
|
|
|
++ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
++ * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
++ *
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/interrupt.h>
|
|
|
++
|
|
|
++#include <asm/i8259.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++int mach_i8259_irq(void)
|
|
|
++{
|
|
|
++ return i8259_irq();
|
|
|
++}
|
|
|
++
|
|
|
++void mach_irq_dispatch(unsigned int pending)
|
|
|
++{
|
|
|
++ if (pending & CAUSEF_IP7)
|
|
|
++ do_IRQ(LOONGSON_TIMER_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP6) /* perf counter loverflow */
|
|
|
++ do_IRQ(LOONGSON_PERFCNT_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP5)
|
|
|
++ i8259_irqdispatch();
|
|
|
++ else if (pending & CAUSEF_IP2)
|
|
|
++ bonito_irqdispatch();
|
|
|
++ else
|
|
|
++ spurious_interrupt();
|
|
|
++}
|
|
|
++
|
|
|
++void __init set_irq_trigger_mode(void)
|
|
|
++{
|
|
|
++ /* most bonito irq should be level triggered */
|
|
|
++ LOONGSON_INTEDGE = LOONGSON_ICU_SYSTEMERR | LOONGSON_ICU_MASTERERR |
|
|
|
++ LOONGSON_ICU_RETRYERR | LOONGSON_ICU_MBOXES;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2e/reset.c rt4ls/arch/mips/loongson/fuloong-2e/reset.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2e/reset.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2e/reset.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,26 @@
|
|
|
++/* Board-specific reboot/shutdown routines
|
|
|
++ * Copyright (c) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/delay.h>
|
|
|
++#include <linux/types.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++void mach_prepare_reboot(void)
|
|
|
++{
|
|
|
++ LOONGSON_GENCFG &= ~LOONGSON_GENCFG_CPUSELFRESET;
|
|
|
++ LOONGSON_GENCFG |= LOONGSON_GENCFG_CPUSELFRESET;
|
|
|
++}
|
|
|
++
|
|
|
++void mach_prepare_shutdown(void)
|
|
|
++{
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2f/Makefile rt4ls/arch/mips/loongson/fuloong-2f/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2f/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2f/Makefile 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,5 @@
|
|
|
++#
|
|
|
++# Makefile for fuloong-2f
|
|
|
++#
|
|
|
++
|
|
|
++obj-y += irq.o reset.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2f/irq.c rt4ls/arch/mips/loongson/fuloong-2f/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2f/irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2f/irq.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,53 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/interrupt.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++int mach_i8259_irq(void)
|
|
|
++{
|
|
|
++ int irq, isr, imr;
|
|
|
++
|
|
|
++ irq = -1;
|
|
|
++
|
|
|
++ if ((LOONGSON_INTISR & LOONGSON_INTEN) & LOONGSON_INT_BIT_INT0) {
|
|
|
++ imr = inb(0x21) | (inb(0xa1) << 8);
|
|
|
++ isr = inb(0x20) | (inb(0xa0) << 8);
|
|
|
++ isr &= ~0x4; /* irq2 for cascade */
|
|
|
++ isr &= ~imr;
|
|
|
++ irq = ffs(isr) - 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ return irq;
|
|
|
++}
|
|
|
++
|
|
|
++void mach_irq_dispatch(unsigned int pending)
|
|
|
++{
|
|
|
++ if (pending & CAUSEF_IP7)
|
|
|
++ do_IRQ(LOONGSON_TIMER_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP6) {
|
|
|
++ do_IRQ(LOONGSON_PERFCNT_IRQ); /* Perf counter overflow */
|
|
|
++ bonito_irqdispatch(); /* North Bridge */
|
|
|
++ } else if (pending & CAUSEF_IP3) /* CPU UART */
|
|
|
++ do_IRQ(LOONGSON_UART_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP2) /* South Bridge */
|
|
|
++ i8259_irqdispatch();
|
|
|
++ else
|
|
|
++ spurious_interrupt();
|
|
|
++}
|
|
|
++
|
|
|
++void __init set_irq_trigger_mode(void)
|
|
|
++{
|
|
|
++ /* setup cs5536 as high level trigger */
|
|
|
++ LOONGSON_INTPOL = LOONGSON_INT_BIT_INT0 | LOONGSON_INT_BIT_INT1;
|
|
|
++ LOONGSON_INTEDGE &= ~(LOONGSON_INT_BIT_INT0 | LOONGSON_INT_BIT_INT1);
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/fuloong-2f/reset.c rt4ls/arch/mips/loongson/fuloong-2f/reset.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/fuloong-2f/reset.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/fuloong-2f/reset.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,65 @@
|
|
|
++/* Board-specific reboot/shutdown routines
|
|
|
++ *
|
|
|
++ * Copyright (c) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++#include <linux/delay.h>
|
|
|
++#include <linux/types.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++/* cs5536 is the south bridge used by fuloong2f mini PC */
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++
|
|
|
++void mach_prepare_reboot(void)
|
|
|
++{
|
|
|
++ /*
|
|
|
++ * reset cpu to full speed, this is needed when enabling cpu frequency
|
|
|
++ * scalling
|
|
|
++ */
|
|
|
++ LOONGSON_CHIPCFG0 |= 0x7;
|
|
|
++
|
|
|
++ /* send a reset signal to south bridge.
|
|
|
++ *
|
|
|
++ * NOTE: if enable "Power Management" in kernel, rtl8169 will not reset
|
|
|
++ * normally with this reset operation and it will not work in PMON, but
|
|
|
++ * you can type halt command and then reboot, seems the hardware reset
|
|
|
++ * logic not work normally.
|
|
|
++ */
|
|
|
++ {
|
|
|
++ u32 hi, lo;
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_SOFT_RESET), &hi, &lo);
|
|
|
++ lo |= 0x00000001;
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_SOFT_RESET), hi, lo);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++void mach_prepare_shutdown(void)
|
|
|
++{
|
|
|
++ u32 hi, lo, val;
|
|
|
++ phys_addr_t gpio_base;
|
|
|
++
|
|
|
++ _rdmsr(DIVIL_MSR_REG(DIVIL_LBAR_GPIO), &hi, &lo);
|
|
|
++
|
|
|
++ gpio_base = mips_io_port_base | (lo & 0xff00);
|
|
|
++
|
|
|
++ /* make cs5536 gpio13 output enable */
|
|
|
++ val = (readl((u32 *) (gpio_base + GPIOL_OUT_EN)) & ~(1 << (16 + 13)))
|
|
|
++ | (1 << 13);
|
|
|
++ writel(val, (u32 *) (gpio_base + GPIOL_OUT_EN));
|
|
|
++ mmiowb();
|
|
|
++ /* make cs5536 gpio13 output low level voltage. */
|
|
|
++ val = (readl((u32 *) (gpio_base + GPIOL_OUT_VAL)) & ~(1 << (13)))
|
|
|
++ | (1 << (16 + 13));
|
|
|
++ writel(val, (u32 *) (gpio_base + GPIOL_OUT_VAL));
|
|
|
++ mmiowb();
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/yeeloong-2f/Makefile rt4ls/arch/mips/loongson/yeeloong-2f/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/loongson/yeeloong-2f/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/yeeloong-2f/Makefile 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,5 @@
|
|
|
++#
|
|
|
++# Makefile for fuloong-2f
|
|
|
++#
|
|
|
++
|
|
|
++obj-y += init.o irq.o reset.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/yeeloong-2f/init.c rt4ls/arch/mips/loongson/yeeloong-2f/init.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/yeeloong-2f/init.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/yeeloong-2f/init.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,81 @@
|
|
|
++/*
|
|
|
++ * board specific init routines
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/bootmem.h>
|
|
|
++
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++
|
|
|
++void __init mach_prom_init_cmdline(void)
|
|
|
++{
|
|
|
++ /* set lpc irq to quiet mode */
|
|
|
++ _wrmsr(DIVIL_MSR_REG(DIVIL_LEG_IO), 0x00, 0x16000003);
|
|
|
++
|
|
|
++ /*Emulate post for usb */
|
|
|
++ _wrmsr(USB_MSR_REG(USB_CONFIG), 0x4, 0xBF000);
|
|
|
++
|
|
|
++ if (strstr(arcs_cmdline, "no_auto_cmd") == NULL) {
|
|
|
++ unsigned char default_root[50] = "/dev/hda1";
|
|
|
++ char *pmon_ver, *ec_ver, *p, version[60], ec_version[64];
|
|
|
++
|
|
|
++ p = arcs_cmdline;
|
|
|
++
|
|
|
++ pmon_ver = strstr(arcs_cmdline, "PMON_VER");
|
|
|
++ if (pmon_ver) {
|
|
|
++ p = strstr(pmon_ver, " ");
|
|
|
++ if (p)
|
|
|
++ *p++ = '\0';
|
|
|
++ strncpy(version, pmon_ver, 60);
|
|
|
++ } else
|
|
|
++ strncpy(version, "PMON_VER=Unknown", 60);
|
|
|
++
|
|
|
++ ec_ver = strstr(p, "EC_VER");
|
|
|
++ if (ec_ver) {
|
|
|
++ p = strstr(ec_ver, " ");
|
|
|
++ if (p)
|
|
|
++ *p = '\0';
|
|
|
++ strncpy(ec_version, ec_ver, 64);
|
|
|
++ } else
|
|
|
++ strncpy(ec_version, "EC_VER=Unknown", 64);
|
|
|
++
|
|
|
++ p = strstr(arcs_cmdline, "root=");
|
|
|
++ if (p) {
|
|
|
++ strncpy(default_root, p, sizeof(default_root));
|
|
|
++ p = strstr(default_root, " ");
|
|
|
++ if (p)
|
|
|
++ *p = '\0';
|
|
|
++ }
|
|
|
++
|
|
|
++ memset(arcs_cmdline, 0, sizeof(arcs_cmdline));
|
|
|
++ strcat(arcs_cmdline, version);
|
|
|
++ strcat(arcs_cmdline, " ");
|
|
|
++ strcat(arcs_cmdline, ec_version);
|
|
|
++ strcat(arcs_cmdline, " ");
|
|
|
++ strcat(arcs_cmdline, default_root);
|
|
|
++ strcat(arcs_cmdline, " console=tty2");
|
|
|
++ strcat(arcs_cmdline, " quiet");
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
++ * automatically pass the vga argument via machtype argument if
|
|
|
++ * vga is not passed: yeeloong-7inch's vga mode is 800x480x24
|
|
|
++ */
|
|
|
++
|
|
|
++ if ((strstr(arcs_cmdline, "vga") == NULL)
|
|
|
++ && (strstr(arcs_cmdline, "machtype") != NULL)
|
|
|
++ && (strstr(arcs_cmdline, "7inch") != NULL))
|
|
|
++ strcat(arcs_cmdline, " vga=800x480x16");
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/yeeloong-2f/irq.c rt4ls/arch/mips/loongson/yeeloong-2f/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/yeeloong-2f/irq.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/yeeloong-2f/irq.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,53 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/interrupt.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++int mach_i8259_irq(void)
|
|
|
++{
|
|
|
++ int irq, isr, imr;
|
|
|
++
|
|
|
++ irq = -1;
|
|
|
++
|
|
|
++ if ((LOONGSON_INTISR & LOONGSON_INTEN) & LOONGSON_INT_BIT_INT0) {
|
|
|
++ imr = inb(0x21) | (inb(0xa1) << 8);
|
|
|
++ isr = inb(0x20) | (inb(0xa0) << 8);
|
|
|
++ isr &= ~0x4; /* irq2 for cascade */
|
|
|
++ isr &= ~imr;
|
|
|
++ irq = ffs(isr) - 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ return irq;
|
|
|
++}
|
|
|
++
|
|
|
++void mach_irq_dispatch(unsigned int pending)
|
|
|
++{
|
|
|
++ if (pending & CAUSEF_IP7)
|
|
|
++ do_IRQ(LOONGSON_TIMER_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP6) {
|
|
|
++ do_IRQ(LOONGSON_PERFCNT_IRQ); /* Perf counter overflow */
|
|
|
++ bonito_irqdispatch(); /* North Bridge */
|
|
|
++ } else if (pending & CAUSEF_IP3) /* CPU UART */
|
|
|
++ do_IRQ(LOONGSON_UART_IRQ);
|
|
|
++ else if (pending & CAUSEF_IP2) /* South Bridge */
|
|
|
++ i8259_irqdispatch();
|
|
|
++ else
|
|
|
++ spurious_interrupt();
|
|
|
++}
|
|
|
++
|
|
|
++void __init set_irq_trigger_mode(void)
|
|
|
++{
|
|
|
++ /* setup cs5536 as high level trigger */
|
|
|
++ LOONGSON_INTPOL = LOONGSON_INT_BIT_INT0 | LOONGSON_INT_BIT_INT1;
|
|
|
++ LOONGSON_INTEDGE &= ~(LOONGSON_INT_BIT_INT0 | LOONGSON_INT_BIT_INT1);
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/loongson/yeeloong-2f/reset.c rt4ls/arch/mips/loongson/yeeloong-2f/reset.c
|
|
|
+--- linux-2.6.30/arch/mips/loongson/yeeloong-2f/reset.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/loongson/yeeloong-2f/reset.c 2009-06-12 16:27:08.786446844 +0200
|
|
|
+@@ -0,0 +1,91 @@
|
|
|
++/* Board-specific reboot/shutdown routines
|
|
|
++ * Copyright (c) 2009 Philippe Vachon <philippe@cowpig.ca>
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/types.h>
|
|
|
++#include <asm/bootinfo.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <machine.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * The following registers are determined by the EC index configuration.
|
|
|
++ * 1, fill the PORT_HIGH as EC register high part.
|
|
|
++ * 2, fill the PORT_LOW as EC register low part.
|
|
|
++ * 3, fill the PORT_DATA as EC register write data or get the data from it.
|
|
|
++ */
|
|
|
++#define EC_RESET_IO_PORT_HIGH 0x0381
|
|
|
++#define EC_RESET_IO_PORT_LOW 0x0382
|
|
|
++#define EC_RESET_IO_PORT_DATA 0x0383
|
|
|
++#define REG_RESET_HIGH 0xF4 /* reset the machine auto-clear : rd/wr */
|
|
|
++#define REG_RESET_LOW 0xEC
|
|
|
++#define BIT_RESET_ON (1 << 0)
|
|
|
++
|
|
|
++/* 7inch yeeloong have the different shutdown hardware logic from 8.9inch */
|
|
|
++#define EC_SHUTDOWN_IO_PORT_HIGH 0xff2d
|
|
|
++#define EC_SHUTDOWN_IO_PORT_LOW 0xff2e
|
|
|
++#define EC_SHUTDOWN_IO_PORT_DATA 0xff2f
|
|
|
++#define REG_SHUTDOWN_HIGH 0xFC
|
|
|
++#define REG_SHUTDOWN_LOW 0x29
|
|
|
++#define BIT_SHUTDOWN_ON (1 << 1)
|
|
|
++
|
|
|
++void mach_prepare_reboot(void)
|
|
|
++{
|
|
|
++ /*
|
|
|
++ * reset cpu to full speed, this is needed when enabling cpu frequency
|
|
|
++ * scalling
|
|
|
++ */
|
|
|
++ LOONGSON_CHIPCFG0 |= 0x7;
|
|
|
++
|
|
|
++ /* sending an reset signal to EC(embedded controller) */
|
|
|
++ writeb(REG_RESET_HIGH,
|
|
|
++ (u8 *) (mips_io_port_base + EC_RESET_IO_PORT_HIGH));
|
|
|
++ writeb(REG_RESET_LOW,
|
|
|
++ (u8 *) (mips_io_port_base + EC_RESET_IO_PORT_LOW));
|
|
|
++ mmiowb();
|
|
|
++ writeb(BIT_RESET_ON,
|
|
|
++ (u8 *) (mips_io_port_base + EC_RESET_IO_PORT_DATA));
|
|
|
++ mmiowb();
|
|
|
++}
|
|
|
++
|
|
|
++void mach_prepare_shutdown(void)
|
|
|
++{
|
|
|
++ const char *system_type = get_system_type();
|
|
|
++
|
|
|
++ if (strstr(system_type, "8.9inch") != NULL) {
|
|
|
++ /* cpu-gpio0 output low */
|
|
|
++ LOONGSON_GPIODATA &= ~0x00000001;
|
|
|
++ /* cpu-gpio0 as output */
|
|
|
++ LOONGSON_GPIOIE &= ~0x00000001;
|
|
|
++ } else if (strstr(system_type, "7inch") != NULL) {
|
|
|
++ u8 val;
|
|
|
++ u64 i;
|
|
|
++
|
|
|
++ writeb(REG_SHUTDOWN_HIGH,
|
|
|
++ (u8 *) (mips_io_port_base + EC_SHUTDOWN_IO_PORT_HIGH));
|
|
|
++ writeb(REG_SHUTDOWN_LOW,
|
|
|
++ (u8 *) (mips_io_port_base + EC_SHUTDOWN_IO_PORT_LOW));
|
|
|
++ mmiowb();
|
|
|
++ val =
|
|
|
++ readb((u8 *) (mips_io_port_base +
|
|
|
++ EC_SHUTDOWN_IO_PORT_DATA));
|
|
|
++ writeb(val & (~BIT_SHUTDOWN_ON),
|
|
|
++ (u8 *) (mips_io_port_base + EC_SHUTDOWN_IO_PORT_DATA));
|
|
|
++ mmiowb();
|
|
|
++ /* need enough wait here... how many microseconds needs? */
|
|
|
++ for (i = 0; i < 0x10000; i++)
|
|
|
++ delay();
|
|
|
++ writeb(val | BIT_SHUTDOWN_ON,
|
|
|
++ (u8 *) (mips_io_port_base + EC_SHUTDOWN_IO_PORT_DATA));
|
|
|
++ mmiowb();
|
|
|
++ } else
|
|
|
++ printk(KERN_INFO "you can shutdown the power safely now!\n");
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/oprofile/Makefile rt4ls/arch/mips/oprofile/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/oprofile/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/oprofile/Makefile 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -15,3 +15,4 @@
|
|
|
+ oprofile-$(CONFIG_CPU_R10000) += op_model_mipsxx.o
|
|
|
+ oprofile-$(CONFIG_CPU_SB1) += op_model_mipsxx.o
|
|
|
+ oprofile-$(CONFIG_CPU_RM9000) += op_model_rm9000.o
|
|
|
++oprofile-$(CONFIG_CPU_LOONGSON2) += op_model_loongson2.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/oprofile/common.c rt4ls/arch/mips/oprofile/common.c
|
|
|
+--- linux-2.6.30/arch/mips/oprofile/common.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/oprofile/common.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -16,6 +16,7 @@
|
|
|
+
|
|
|
+ extern struct op_mips_model op_model_mipsxx_ops __attribute__((weak));
|
|
|
+ extern struct op_mips_model op_model_rm9000_ops __attribute__((weak));
|
|
|
++extern struct op_mips_model op_model_loongson2_ops __attribute__((weak));
|
|
|
+
|
|
|
+ static struct op_mips_model *model;
|
|
|
+
|
|
|
+@@ -93,6 +94,10 @@
|
|
|
+ case CPU_RM9000:
|
|
|
+ lmodel = &op_model_rm9000_ops;
|
|
|
+ break;
|
|
|
++
|
|
|
++ case CPU_LOONGSON2:
|
|
|
++ lmodel = &op_model_loongson2_ops;
|
|
|
++ break;
|
|
|
+ };
|
|
|
+
|
|
|
+ if (!lmodel)
|
|
|
+diff -Nur linux-2.6.30/arch/mips/oprofile/op_model_loongson2.c rt4ls/arch/mips/oprofile/op_model_loongson2.c
|
|
|
+--- linux-2.6.30/arch/mips/oprofile/op_model_loongson2.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/oprofile/op_model_loongson2.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -0,0 +1,186 @@
|
|
|
++/*
|
|
|
++ * Loongson2 performance counter driver for oprofile
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Yanhua <yanh@lemote.com>
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file "COPYING" in the main directory of this archive
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ */
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/oprofile.h>
|
|
|
++#include <linux/interrupt.h>
|
|
|
++#include <linux/smp.h>
|
|
|
++#include <linux/spinlock.h>
|
|
|
++#include <linux/proc_fs.h>
|
|
|
++#include <linux/uaccess.h>
|
|
|
++
|
|
|
++#include <irq.h>
|
|
|
++#include <loongson.h> /* LOONGSON_PERFCNT_IRQ */
|
|
|
++#include "op_impl.h"
|
|
|
++
|
|
|
++/*
|
|
|
++ * a patch should be sent to oprofile with the loongson-specific support.
|
|
|
++ * otherwise, the oprofile tool will not recognize this and complain about
|
|
|
++ * "cpu_type 'unset' is not valid".
|
|
|
++ */
|
|
|
++#define LOONGSON_CPU_TYPE "mips/loongson2"
|
|
|
++
|
|
|
++#define LOONGSON_COUNTER1_EVENT(event) ((event & 0x0f) << 5)
|
|
|
++#define LOONGSON_COUNTER2_EVENT(event) ((event & 0x0f) << 9)
|
|
|
++
|
|
|
++#define LOONGSON_PERFCNT_EXL (1UL << 0)
|
|
|
++#define LOONGSON_PERFCNT_KERNEL (1UL << 1)
|
|
|
++#define LOONGSON_PERFCNT_SUPERVISOR (1UL << 2)
|
|
|
++#define LOONGSON_PERFCNT_USER (1UL << 3)
|
|
|
++#define LOONGSON_PERFCNT_INT_EN (1UL << 4)
|
|
|
++#define LOONGSON_PERFCNT_OVERFLOW (1ULL << 31)
|
|
|
++
|
|
|
++/* Loongson2 performance counter register */
|
|
|
++#define read_c0_perflo() __read_64bit_c0_register($24, 0)
|
|
|
++#define write_c0_perflo(val) __write_64bit_c0_register($24, 0, val)
|
|
|
++#define read_c0_perfhi() __read_64bit_c0_register($25, 0)
|
|
|
++#define write_c0_perfhi(val) __write_64bit_c0_register($25, 0, val)
|
|
|
++
|
|
|
++static struct loongson2_register_config {
|
|
|
++ unsigned int ctrl;
|
|
|
++ unsigned long long reset_counter1;
|
|
|
++ unsigned long long reset_counter2;
|
|
|
++ int cnt1_enable, cnt2_enable;
|
|
|
++} reg;
|
|
|
++
|
|
|
++DEFINE_SPINLOCK(sample_lock);
|
|
|
++
|
|
|
++static char *oprofid = "LoongsonPerf";
|
|
|
++static irqreturn_t loongson2_perfcount_handler(int irq, void *dev_id);
|
|
|
++/* Compute all of the registers in preparation for enabling profiling. */
|
|
|
++
|
|
|
++static void loongson2_reg_setup(struct op_counter_config *cfg)
|
|
|
++{
|
|
|
++ unsigned int ctrl = 0;
|
|
|
++
|
|
|
++ reg.reset_counter1 = 0;
|
|
|
++ reg.reset_counter2 = 0;
|
|
|
++ /* Compute the performance counter ctrl word. */
|
|
|
++ /* For now count kernel and user mode */
|
|
|
++ if (cfg[0].enabled) {
|
|
|
++ ctrl |= LOONGSON_COUNTER1_EVENT(cfg[0].event) |
|
|
|
++ LOONGSON_PERFCNT_INT_EN;
|
|
|
++ if (cfg[0].kernel)
|
|
|
++ ctrl |= LOONGSON_PERFCNT_KERNEL;
|
|
|
++ if (cfg[0].user)
|
|
|
++ ctrl |= LOONGSON_PERFCNT_USER;
|
|
|
++ reg.reset_counter1 = 0x80000000ULL - cfg[0].count;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (cfg[1].enabled) {
|
|
|
++ ctrl |= LOONGSON_COUNTER2_EVENT(cfg[1].event) |
|
|
|
++ LOONGSON_PERFCNT_INT_EN;
|
|
|
++ if (cfg[1].kernel)
|
|
|
++ ctrl |= LOONGSON_PERFCNT_KERNEL;
|
|
|
++ if (cfg[1].user)
|
|
|
++ ctrl |= LOONGSON_PERFCNT_USER;
|
|
|
++ reg.reset_counter2 = (0x80000000ULL - cfg[1].count);
|
|
|
++ }
|
|
|
++
|
|
|
++ if (cfg[0].enabled || cfg[1].enabled)
|
|
|
++ ctrl |= LOONGSON_PERFCNT_EXL;
|
|
|
++
|
|
|
++ reg.ctrl = ctrl;
|
|
|
++
|
|
|
++ reg.cnt1_enable = cfg[0].enabled;
|
|
|
++ reg.cnt2_enable = cfg[1].enabled;
|
|
|
++
|
|
|
++}
|
|
|
++
|
|
|
++/* Program all of the registers in preparation for enabling profiling. */
|
|
|
++
|
|
|
++static void loongson2_cpu_setup(void *args)
|
|
|
++{
|
|
|
++ uint64_t perfcount;
|
|
|
++
|
|
|
++ perfcount = (reg.reset_counter2 << 32) | reg.reset_counter1;
|
|
|
++ write_c0_perfhi(perfcount);
|
|
|
++}
|
|
|
++
|
|
|
++static void loongson2_cpu_start(void *args)
|
|
|
++{
|
|
|
++ /* Start all counters on current CPU */
|
|
|
++ if (reg.cnt1_enable || reg.cnt2_enable)
|
|
|
++ write_c0_perflo(reg.ctrl);
|
|
|
++}
|
|
|
++
|
|
|
++static void loongson2_cpu_stop(void *args)
|
|
|
++{
|
|
|
++ /* Stop all counters on current CPU */
|
|
|
++ write_c0_perflo(0);
|
|
|
++ memset(®, 0, sizeof(reg));
|
|
|
++}
|
|
|
++
|
|
|
++static irqreturn_t loongson2_perfcount_handler(int irq, void *dev_id)
|
|
|
++{
|
|
|
++ uint64_t counter, counter1, counter2;
|
|
|
++ struct pt_regs *regs = get_irq_regs();
|
|
|
++ int enabled;
|
|
|
++ unsigned long flags;
|
|
|
++
|
|
|
++ /*
|
|
|
++ * LOONGSON2 defines two 32-bit performance counters.
|
|
|
++ * To avoid a race updating the registers we need to stop the counters
|
|
|
++ * while we're messing with
|
|
|
++ * them ...
|
|
|
++ */
|
|
|
++
|
|
|
++ /* Check whether the irq belongs to me */
|
|
|
++ enabled = reg.cnt1_enable | reg.cnt2_enable;
|
|
|
++ if (!enabled)
|
|
|
++ return IRQ_NONE;
|
|
|
++
|
|
|
++ counter = read_c0_perfhi();
|
|
|
++ counter1 = counter & 0xffffffff;
|
|
|
++ counter2 = counter >> 32;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&sample_lock, flags);
|
|
|
++
|
|
|
++ if (counter1 & LOONGSON_PERFCNT_OVERFLOW) {
|
|
|
++ if (reg.cnt1_enable)
|
|
|
++ oprofile_add_sample(regs, 0);
|
|
|
++ counter1 = reg.reset_counter1;
|
|
|
++ }
|
|
|
++ if (counter2 & LOONGSON_PERFCNT_OVERFLOW) {
|
|
|
++ if (reg.cnt2_enable)
|
|
|
++ oprofile_add_sample(regs, 1);
|
|
|
++ counter2 = reg.reset_counter2;
|
|
|
++ }
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&sample_lock, flags);
|
|
|
++
|
|
|
++ write_c0_perfhi((counter2 << 32) | counter1);
|
|
|
++
|
|
|
++ return IRQ_HANDLED;
|
|
|
++}
|
|
|
++
|
|
|
++static int __init loongson2_init(void)
|
|
|
++{
|
|
|
++ return request_irq(LOONGSON_PERFCNT_IRQ, loongson2_perfcount_handler,
|
|
|
++ IRQF_SHARED, "Perfcounter", oprofid);
|
|
|
++}
|
|
|
++
|
|
|
++static void loongson2_exit(void)
|
|
|
++{
|
|
|
++ write_c0_perflo(0);
|
|
|
++ free_irq(LOONGSON_PERFCNT_IRQ, oprofid);
|
|
|
++}
|
|
|
++
|
|
|
++struct op_mips_model op_model_loongson2_ops = {
|
|
|
++ .reg_setup = loongson2_reg_setup,
|
|
|
++ .cpu_setup = loongson2_cpu_setup,
|
|
|
++ .init = loongson2_init,
|
|
|
++ .exit = loongson2_exit,
|
|
|
++ .cpu_start = loongson2_cpu_start,
|
|
|
++ .cpu_stop = loongson2_cpu_stop,
|
|
|
++ .cpu_type = LOONGSON_CPU_TYPE,
|
|
|
++ .num_counters = 2
|
|
|
++};
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/Makefile rt4ls/arch/mips/pci/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/pci/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/Makefile 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -26,7 +26,9 @@
|
|
|
+ obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o
|
|
|
+ obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o
|
|
|
+ obj-$(CONFIG_SOC_PNX8550) += fixup-pnx8550.o ops-pnx8550.o
|
|
|
+-obj-$(CONFIG_LEMOTE_FULONG) += fixup-lm2e.o ops-bonito64.o
|
|
|
++obj-$(CONFIG_LEMOTE_FULOONG2E) += fixup-fuloong2e.o ops-loongson2.o
|
|
|
++obj-$(CONFIG_LEMOTE_FULOONG2F) += fixup-lemote2f.o ops-loongson2.o
|
|
|
++obj-$(CONFIG_LEMOTE_YEELOONG2F) += fixup-lemote2f.o ops-loongson2.o
|
|
|
+ obj-$(CONFIG_MIPS_MALTA) += fixup-malta.o
|
|
|
+ obj-$(CONFIG_PMC_MSP7120_GW) += fixup-pmcmsp.o ops-pmcmsp.o
|
|
|
+ obj-$(CONFIG_PMC_MSP7120_EVAL) += fixup-pmcmsp.o ops-pmcmsp.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-au1000.c rt4ls/arch/mips/pci/fixup-au1000.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-au1000.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-au1000.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -31,7 +31,7 @@
|
|
|
+
|
|
|
+ extern char irq_tab_alchemy[][5];
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return irq_tab_alchemy[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-capcella.c rt4ls/arch/mips/pci/fixup-capcella.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-capcella.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-capcella.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -38,7 +38,7 @@
|
|
|
+ [14] = { -1, INTA, INTB, INTC, INTD }
|
|
|
+ };
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return irq_tab_capcella[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-cobalt.c rt4ls/arch/mips/pci/fixup-cobalt.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-cobalt.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-cobalt.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -175,7 +175,7 @@
|
|
|
+ [COBALT_PCICONF_ETH1] = ETH1_IRQ
|
|
|
+ };
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ if (cobalt_board_id <= COBALT_BRD_ID_QUBE1)
|
|
|
+ return irq_tab_qube1[slot];
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-emma2rh.c rt4ls/arch/mips/pci/fixup-emma2rh.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-emma2rh.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-emma2rh.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -88,7 +88,7 @@
|
|
|
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_EMMA2RH,
|
|
|
+ emma2rh_pci_host_fixup);
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return irq_map[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-excite.c rt4ls/arch/mips/pci/fixup-excite.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-excite.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-excite.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -21,7 +21,7 @@
|
|
|
+ #include <linux/pci.h>
|
|
|
+ #include <excite.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ if (pin == 0)
|
|
|
+ return -1;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-fuloong2e.c rt4ls/arch/mips/pci/fixup-fuloong2e.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-fuloong2e.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/pci/fixup-fuloong2e.c 2009-06-12 16:27:08.846439406 +0200
|
|
|
+@@ -0,0 +1,243 @@
|
|
|
++/*
|
|
|
++ * fixup-fuloong2e.c
|
|
|
++ *
|
|
|
++ * Copyright (C) 2004 ICT CAS
|
|
|
++ * Author: Li xiaoyu, ICT CAS
|
|
|
++ * lixy@ict.ac.cn
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ *
|
|
|
++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License along
|
|
|
++ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
++ * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
++ *
|
|
|
++ */
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/pci.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++/* South bridge slot number is set by the pci probe process */
|
|
|
++static u8 sb_slot = 5;
|
|
|
++
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++{
|
|
|
++ int irq = 0;
|
|
|
++
|
|
|
++ if (slot == sb_slot) {
|
|
|
++ switch (PCI_FUNC(dev->devfn)) {
|
|
|
++ case 2:
|
|
|
++ irq = 10;
|
|
|
++ break;
|
|
|
++ case 3:
|
|
|
++ irq = 11;
|
|
|
++ break;
|
|
|
++ case 5:
|
|
|
++ irq = 9;
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ } else {
|
|
|
++ irq = LOONGSON_IRQ_BASE + 25 + pin;
|
|
|
++ }
|
|
|
++ return irq;
|
|
|
++
|
|
|
++}
|
|
|
++
|
|
|
++/* Do platform specific device initialization at pci_enable_device() time */
|
|
|
++int pcibios_plat_dev_init(struct pci_dev *dev)
|
|
|
++{
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_nec_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ unsigned int val;
|
|
|
++
|
|
|
++ /* Configues port 1, 2, 3, 4 to be validate*/
|
|
|
++ pci_read_config_dword(pdev, 0xe0, &val);
|
|
|
++ pci_write_config_dword(pdev, 0xe0, (val & ~7) | 0x4);
|
|
|
++
|
|
|
++ /* System clock is 48-MHz Oscillator. */
|
|
|
++ pci_write_config_dword(pdev, 0xe4, 1 << 5);
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_686b_func0_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ unsigned char c;
|
|
|
++
|
|
|
++ sb_slot = PCI_SLOT(pdev->devfn);
|
|
|
++
|
|
|
++ printk(KERN_INFO "via686b fix: ISA bridge\n");
|
|
|
++
|
|
|
++ /* Enable I/O Recovery time */
|
|
|
++ pci_write_config_byte(pdev, 0x40, 0x08);
|
|
|
++
|
|
|
++ /* Enable ISA refresh */
|
|
|
++ pci_write_config_byte(pdev, 0x41, 0x01);
|
|
|
++
|
|
|
++ /* disable ISA line buffer */
|
|
|
++ pci_write_config_byte(pdev, 0x45, 0x00);
|
|
|
++
|
|
|
++ /* Gate INTR, and flush line buffer */
|
|
|
++ pci_write_config_byte(pdev, 0x46, 0xe0);
|
|
|
++
|
|
|
++ /* Disable PCI Delay Transaction, Enable EISA ports 4D0/4D1. */
|
|
|
++ /* pci_write_config_byte(pdev, 0x47, 0x20); */
|
|
|
++
|
|
|
++ /*
|
|
|
++ * enable PCI Delay Transaction, Enable EISA ports 4D0/4D1.
|
|
|
++ * enable time-out timer
|
|
|
++ */
|
|
|
++ pci_write_config_byte(pdev, 0x47, 0xe6);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * enable level trigger on pci irqs: 9,10,11,13
|
|
|
++ * important! without this PCI interrupts won't work
|
|
|
++ */
|
|
|
++ outb(0x2e, 0x4d1);
|
|
|
++
|
|
|
++ /* 512 K PCI Decode */
|
|
|
++ pci_write_config_byte(pdev, 0x48, 0x01);
|
|
|
++
|
|
|
++ /* Wait for PGNT before grant to ISA Master/DMA */
|
|
|
++ pci_write_config_byte(pdev, 0x4a, 0x84);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Plug'n'Play
|
|
|
++ *
|
|
|
++ * Parallel DRQ 3, Floppy DRQ 2 (default)
|
|
|
++ */
|
|
|
++ pci_write_config_byte(pdev, 0x50, 0x0e);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * IRQ Routing for Floppy and Parallel port
|
|
|
++ *
|
|
|
++ * IRQ 6 for floppy, IRQ 7 for parallel port
|
|
|
++ */
|
|
|
++ pci_write_config_byte(pdev, 0x51, 0x76);
|
|
|
++
|
|
|
++ /* IRQ Routing for serial ports (take IRQ 3 and 4) */
|
|
|
++ pci_write_config_byte(pdev, 0x52, 0x34);
|
|
|
++
|
|
|
++ /* All IRQ's level triggered. */
|
|
|
++ pci_write_config_byte(pdev, 0x54, 0x00);
|
|
|
++
|
|
|
++ /* route PIRQA-D irq */
|
|
|
++ pci_write_config_byte(pdev, 0x55, 0x90); /* bit 7-4, PIRQA */
|
|
|
++ pci_write_config_byte(pdev, 0x56, 0xba); /* bit 7-4, PIRQC; */
|
|
|
++ /* 3-0, PIRQB */
|
|
|
++ pci_write_config_byte(pdev, 0x57, 0xd0); /* bit 7-4, PIRQD */
|
|
|
++
|
|
|
++ /* enable function 5/6, audio/modem */
|
|
|
++ pci_read_config_byte(pdev, 0x85, &c);
|
|
|
++ c &= ~(0x3 << 2);
|
|
|
++ pci_write_config_byte(pdev, 0x85, c);
|
|
|
++
|
|
|
++ printk(KERN_INFO"via686b fix: ISA bridge done\n");
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_686b_func1_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ printk(KERN_INFO"via686b fix: IDE\n");
|
|
|
++
|
|
|
++ /* Modify IDE controller setup */
|
|
|
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 48);
|
|
|
++ pci_write_config_byte(pdev, PCI_COMMAND,
|
|
|
++ PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
|
|
|
++ PCI_COMMAND_MASTER);
|
|
|
++ pci_write_config_byte(pdev, 0x40, 0x0b);
|
|
|
++ /* legacy mode */
|
|
|
++ pci_write_config_byte(pdev, 0x42, 0x09);
|
|
|
++
|
|
|
++#if 1/* play safe, otherwise we may see notebook's usb keyboard lockup */
|
|
|
++ /* disable read prefetch/write post buffers */
|
|
|
++ pci_write_config_byte(pdev, 0x41, 0x02);
|
|
|
++
|
|
|
++ /* use 3/4 as fifo thresh hold */
|
|
|
++ pci_write_config_byte(pdev, 0x43, 0x0a);
|
|
|
++ pci_write_config_byte(pdev, 0x44, 0x00);
|
|
|
++
|
|
|
++ pci_write_config_byte(pdev, 0x45, 0x00);
|
|
|
++#else
|
|
|
++ pci_write_config_byte(pdev, 0x41, 0xc2);
|
|
|
++ pci_write_config_byte(pdev, 0x43, 0x35);
|
|
|
++ pci_write_config_byte(pdev, 0x44, 0x1c);
|
|
|
++
|
|
|
++ pci_write_config_byte(pdev, 0x45, 0x10);
|
|
|
++#endif
|
|
|
++
|
|
|
++ printk(KERN_INFO"via686b fix: IDE done\n");
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_686b_func2_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ /* irq routing */
|
|
|
++ pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 10);
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_686b_func3_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ /* irq routing */
|
|
|
++ pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 11);
|
|
|
++}
|
|
|
++
|
|
|
++static void __init fuloong2e_686b_func5_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ unsigned int val;
|
|
|
++ unsigned char c;
|
|
|
++
|
|
|
++ /* enable IO */
|
|
|
++ pci_write_config_byte(pdev, PCI_COMMAND,
|
|
|
++ PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
|
|
|
++ PCI_COMMAND_MASTER);
|
|
|
++ pci_read_config_dword(pdev, 0x4, &val);
|
|
|
++ pci_write_config_dword(pdev, 0x4, val | 1);
|
|
|
++
|
|
|
++ /* route ac97 IRQ */
|
|
|
++ pci_write_config_byte(pdev, 0x3c, 9);
|
|
|
++
|
|
|
++ pci_read_config_byte(pdev, 0x8, &c);
|
|
|
++
|
|
|
++ /* link control: enable link & SGD PCM output */
|
|
|
++ pci_write_config_byte(pdev, 0x41, 0xcc);
|
|
|
++
|
|
|
++ /* disable game port, FM, midi, sb, enable write to reg2c-2f */
|
|
|
++ pci_write_config_byte(pdev, 0x42, 0x20);
|
|
|
++
|
|
|
++ /* we are using Avance logic codec */
|
|
|
++ pci_write_config_word(pdev, 0x2c, 0x1005);
|
|
|
++ pci_write_config_word(pdev, 0x2e, 0x4710);
|
|
|
++ pci_read_config_dword(pdev, 0x2c, &val);
|
|
|
++
|
|
|
++ pci_write_config_byte(pdev, 0x42, 0x0);
|
|
|
++}
|
|
|
++
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686,
|
|
|
++ fuloong2e_686b_func0_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1,
|
|
|
++ fuloong2e_686b_func1_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2,
|
|
|
++ fuloong2e_686b_func2_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3,
|
|
|
++ fuloong2e_686b_func3_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5,
|
|
|
++ fuloong2e_686b_func5_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB,
|
|
|
++ fuloong2e_nec_fixup);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-ip32.c rt4ls/arch/mips/pci/fixup-ip32.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-ip32.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-ip32.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -39,7 +39,7 @@
|
|
|
+ * irqs. I suppose a device without a pin A will thank us for doing it
|
|
|
+ * right if there exists such a broken piece of crap.
|
|
|
+ */
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return irq_tab_mace[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-jmr3927.c rt4ls/arch/mips/pci/fixup-jmr3927.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-jmr3927.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-jmr3927.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -31,7 +31,7 @@
|
|
|
+ #include <asm/txx9/pci.h>
|
|
|
+ #include <asm/txx9/jmr3927.h>
|
|
|
+
|
|
|
+-int __init jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init jmr3927_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ unsigned char irq = pin;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-lemote2f.c rt4ls/arch/mips/pci/fixup-lemote2f.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-lemote2f.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/pci/fixup-lemote2f.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -0,0 +1,171 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 2008 Lemote Technology
|
|
|
++ * Copyright (C) 2004 ICT CAS
|
|
|
++ * Author: Li xiaoyu, lixy@ict.ac.cn
|
|
|
++ *
|
|
|
++ * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License as published by the
|
|
|
++ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
++ * option) any later version.
|
|
|
++ */
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/pci.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++
|
|
|
++/* PCI interrupt pins
|
|
|
++ *
|
|
|
++ * These should not be changed, or you should consider loongson2f interrupt
|
|
|
++ * register and your pci card dispatch
|
|
|
++ */
|
|
|
++
|
|
|
++#define PCIA 4
|
|
|
++#define PCIB 5
|
|
|
++#define PCIC 6
|
|
|
++#define PCID 7
|
|
|
++
|
|
|
++/* all the pci device has the PCIA pin, check the datasheet. */
|
|
|
++static char irq_tab[][5] __initdata = {
|
|
|
++ /* INTA INTB INTC INTD */
|
|
|
++ {0, 0, 0, 0, 0}, /* 11: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 12: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 13: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 14: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 15: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 16: Unused */
|
|
|
++ {0, PCIA, 0, 0, 0}, /* 17: RTL8110-0 */
|
|
|
++ {0, PCIB, 0, 0, 0}, /* 18: RTL8110-1 */
|
|
|
++ {0, PCIC, 0, 0, 0}, /* 19: SiI3114 */
|
|
|
++ {0, PCID, 0, 0, 0}, /* 20: 3-ports nec usb */
|
|
|
++ {0, PCIA, PCIB, PCIC, PCID}, /* 21: PCI-SLOT */
|
|
|
++ {0, 0, 0, 0, 0}, /* 22: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 23: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 24: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 25: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 26: Unused */
|
|
|
++ {0, 0, 0, 0, 0}, /* 27: Unused */
|
|
|
++};
|
|
|
++
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++{
|
|
|
++ int virq;
|
|
|
++
|
|
|
++ if ((PCI_SLOT(dev->devfn) != PCI_IDSEL_CS5536)
|
|
|
++ && (PCI_SLOT(dev->devfn) < 32)) {
|
|
|
++ virq = irq_tab[slot][pin];
|
|
|
++ printk(KERN_INFO "slot: %d, pin: %d, irq: %d\n", slot, pin,
|
|
|
++ virq + LOONGSON_IRQ_BASE);
|
|
|
++ if (virq != 0)
|
|
|
++ return LOONGSON_IRQ_BASE + virq;
|
|
|
++ else
|
|
|
++ return 0;
|
|
|
++ } else if (PCI_SLOT(dev->devfn) == PCI_IDSEL_CS5536) { /* cs5536 */
|
|
|
++ switch (PCI_FUNC(dev->devfn)) {
|
|
|
++ case 2:
|
|
|
++ pci_write_config_byte(dev, PCI_INTERRUPT_LINE,
|
|
|
++ CS5536_IDE_INTR);
|
|
|
++ return 14; /* for IDE */
|
|
|
++ case 3:
|
|
|
++ pci_write_config_byte(dev, PCI_INTERRUPT_LINE,
|
|
|
++ CS5536_ACC_INTR);
|
|
|
++ return 9; /* for AUDIO */
|
|
|
++ case 4: /* for OHCI */
|
|
|
++ case 5: /* for EHCI */
|
|
|
++ case 6: /* for UDC */
|
|
|
++ case 7: /* for OTG */
|
|
|
++ pci_write_config_byte(dev, PCI_INTERRUPT_LINE,
|
|
|
++ CS5536_USB_INTR);
|
|
|
++ return 11;
|
|
|
++ }
|
|
|
++ return dev->irq;
|
|
|
++ } else {
|
|
|
++ printk(KERN_INFO " strange pci slot number.\n");
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/* Do platform specific device initialization at pci_enable_device() time */
|
|
|
++int pcibios_plat_dev_init(struct pci_dev *dev)
|
|
|
++{
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/* CS5536 SPEC. fixup */
|
|
|
++static void __init loongson_cs5536_isa_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ /* the uart1 and uart2 interrupt in PIC is enabled as default */
|
|
|
++ pci_write_config_dword(pdev, PCI_UART1_INT_REG, 1);
|
|
|
++ pci_write_config_dword(pdev, PCI_UART2_INT_REG, 1);
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init loongson_cs5536_ide_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ /* setting the mutex pin as IDE function */
|
|
|
++ pci_write_config_dword(pdev, PCI_IDE_CFG_REG,
|
|
|
++ CS5536_IDE_FLASH_SIGNATURE);
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init loongson_cs5536_acc_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ u8 val;
|
|
|
++
|
|
|
++ /* enable the AUDIO interrupt in PIC */
|
|
|
++ pci_write_config_dword(pdev, PCI_ACC_INT_REG, 1);
|
|
|
++
|
|
|
++#if 1
|
|
|
++ pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &val);
|
|
|
++ printk(KERN_INFO "cs5536 acc latency 0x%x\n", val);
|
|
|
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xc0);
|
|
|
++#endif
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init loongson_cs5536_ohci_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ /* enable the OHCI interrupt in PIC */
|
|
|
++ /* THE OHCI, EHCI, UDC, OTG are shared with interrupt in PIC */
|
|
|
++ pci_write_config_dword(pdev, PCI_OHCI_INT_REG, 1);
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init loongson_cs5536_ehci_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ u32 hi, lo;
|
|
|
++
|
|
|
++ /* Serial short detect enable */
|
|
|
++ _rdmsr(USB_MSR_REG(USB_CONFIG), &hi, &lo);
|
|
|
++ _wrmsr(USB_MSR_REG(USB_CONFIG), (1 << 1) | (1 << 2) | (1 << 3), lo);
|
|
|
++
|
|
|
++ /* setting the USB2.0 micro frame length */
|
|
|
++ pci_write_config_dword(pdev, PCI_EHCI_FLADJ_REG, 0x2000);
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++static void __init loongson_nec_fixup(struct pci_dev *pdev)
|
|
|
++{
|
|
|
++ unsigned int val;
|
|
|
++
|
|
|
++ pci_read_config_dword(pdev, 0xe0, &val);
|
|
|
++ /* Only 2 port be used */
|
|
|
++ pci_write_config_dword(pdev, 0xe0, (val & ~3) | 0x2);
|
|
|
++}
|
|
|
++
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA,
|
|
|
++ loongson_cs5536_isa_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_OHC,
|
|
|
++ loongson_cs5536_ohci_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_EHC,
|
|
|
++ loongson_cs5536_ehci_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_AUDIO,
|
|
|
++ loongson_cs5536_acc_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_IDE,
|
|
|
++ loongson_cs5536_ide_fixup);
|
|
|
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB,
|
|
|
++ loongson_nec_fixup);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-lm2e.c rt4ls/arch/mips/pci/fixup-lm2e.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-lm2e.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-lm2e.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
+@@ -1,242 +0,0 @@
|
|
|
+-/*
|
|
|
+- * fixup-lm2e.c
|
|
|
+- *
|
|
|
+- * Copyright (C) 2004 ICT CAS
|
|
|
+- * Author: Li xiaoyu, ICT CAS
|
|
|
+- * lixy@ict.ac.cn
|
|
|
+- *
|
|
|
+- * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
|
|
|
+- * Author: Fuxin Zhang, zhangfx@lemote.com
|
|
|
+- *
|
|
|
+- * This program is free software; you can redistribute it and/or modify it
|
|
|
+- * under the terms of the GNU General Public License as published by the
|
|
|
+- * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+- * option) any later version.
|
|
|
+- *
|
|
|
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+- *
|
|
|
+- * You should have received a copy of the GNU General Public License along
|
|
|
+- * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+- * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+- *
|
|
|
+- */
|
|
|
+-#include <linux/init.h>
|
|
|
+-#include <linux/pci.h>
|
|
|
+-#include <asm/mips-boards/bonito64.h>
|
|
|
+-
|
|
|
+-/* South bridge slot number is set by the pci probe process */
|
|
|
+-static u8 sb_slot = 5;
|
|
|
+-
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+-{
|
|
|
+- int irq = 0;
|
|
|
+-
|
|
|
+- if (slot == sb_slot) {
|
|
|
+- switch (PCI_FUNC(dev->devfn)) {
|
|
|
+- case 2:
|
|
|
+- irq = 10;
|
|
|
+- break;
|
|
|
+- case 3:
|
|
|
+- irq = 11;
|
|
|
+- break;
|
|
|
+- case 5:
|
|
|
+- irq = 9;
|
|
|
+- break;
|
|
|
+- }
|
|
|
+- } else {
|
|
|
+- irq = BONITO_IRQ_BASE + 25 + pin;
|
|
|
+- }
|
|
|
+- return irq;
|
|
|
+-
|
|
|
+-}
|
|
|
+-
|
|
|
+-/* Do platform specific device initialization at pci_enable_device() time */
|
|
|
+-int pcibios_plat_dev_init(struct pci_dev *dev)
|
|
|
+-{
|
|
|
+- return 0;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_nec_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- unsigned int val;
|
|
|
+-
|
|
|
+- /* Configues port 1, 2, 3, 4 to be validate*/
|
|
|
+- pci_read_config_dword(pdev, 0xe0, &val);
|
|
|
+- pci_write_config_dword(pdev, 0xe0, (val & ~7) | 0x4);
|
|
|
+-
|
|
|
+- /* System clock is 48-MHz Oscillator. */
|
|
|
+- pci_write_config_dword(pdev, 0xe4, 1 << 5);
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_686b_func0_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- unsigned char c;
|
|
|
+-
|
|
|
+- sb_slot = PCI_SLOT(pdev->devfn);
|
|
|
+-
|
|
|
+- printk(KERN_INFO "via686b fix: ISA bridge\n");
|
|
|
+-
|
|
|
+- /* Enable I/O Recovery time */
|
|
|
+- pci_write_config_byte(pdev, 0x40, 0x08);
|
|
|
+-
|
|
|
+- /* Enable ISA refresh */
|
|
|
+- pci_write_config_byte(pdev, 0x41, 0x01);
|
|
|
+-
|
|
|
+- /* disable ISA line buffer */
|
|
|
+- pci_write_config_byte(pdev, 0x45, 0x00);
|
|
|
+-
|
|
|
+- /* Gate INTR, and flush line buffer */
|
|
|
+- pci_write_config_byte(pdev, 0x46, 0xe0);
|
|
|
+-
|
|
|
+- /* Disable PCI Delay Transaction, Enable EISA ports 4D0/4D1. */
|
|
|
+- /* pci_write_config_byte(pdev, 0x47, 0x20); */
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * enable PCI Delay Transaction, Enable EISA ports 4D0/4D1.
|
|
|
+- * enable time-out timer
|
|
|
+- */
|
|
|
+- pci_write_config_byte(pdev, 0x47, 0xe6);
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * enable level trigger on pci irqs: 9,10,11,13
|
|
|
+- * important! without this PCI interrupts won't work
|
|
|
+- */
|
|
|
+- outb(0x2e, 0x4d1);
|
|
|
+-
|
|
|
+- /* 512 K PCI Decode */
|
|
|
+- pci_write_config_byte(pdev, 0x48, 0x01);
|
|
|
+-
|
|
|
+- /* Wait for PGNT before grant to ISA Master/DMA */
|
|
|
+- pci_write_config_byte(pdev, 0x4a, 0x84);
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * Plug'n'Play
|
|
|
+- *
|
|
|
+- * Parallel DRQ 3, Floppy DRQ 2 (default)
|
|
|
+- */
|
|
|
+- pci_write_config_byte(pdev, 0x50, 0x0e);
|
|
|
+-
|
|
|
+- /*
|
|
|
+- * IRQ Routing for Floppy and Parallel port
|
|
|
+- *
|
|
|
+- * IRQ 6 for floppy, IRQ 7 for parallel port
|
|
|
+- */
|
|
|
+- pci_write_config_byte(pdev, 0x51, 0x76);
|
|
|
+-
|
|
|
+- /* IRQ Routing for serial ports (take IRQ 3 and 4) */
|
|
|
+- pci_write_config_byte(pdev, 0x52, 0x34);
|
|
|
+-
|
|
|
+- /* All IRQ's level triggered. */
|
|
|
+- pci_write_config_byte(pdev, 0x54, 0x00);
|
|
|
+-
|
|
|
+- /* route PIRQA-D irq */
|
|
|
+- pci_write_config_byte(pdev, 0x55, 0x90); /* bit 7-4, PIRQA */
|
|
|
+- pci_write_config_byte(pdev, 0x56, 0xba); /* bit 7-4, PIRQC; */
|
|
|
+- /* 3-0, PIRQB */
|
|
|
+- pci_write_config_byte(pdev, 0x57, 0xd0); /* bit 7-4, PIRQD */
|
|
|
+-
|
|
|
+- /* enable function 5/6, audio/modem */
|
|
|
+- pci_read_config_byte(pdev, 0x85, &c);
|
|
|
+- c &= ~(0x3 << 2);
|
|
|
+- pci_write_config_byte(pdev, 0x85, c);
|
|
|
+-
|
|
|
+- printk(KERN_INFO"via686b fix: ISA bridge done\n");
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_686b_func1_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- printk(KERN_INFO"via686b fix: IDE\n");
|
|
|
+-
|
|
|
+- /* Modify IDE controller setup */
|
|
|
+- pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 48);
|
|
|
+- pci_write_config_byte(pdev, PCI_COMMAND,
|
|
|
+- PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
|
|
|
+- PCI_COMMAND_MASTER);
|
|
|
+- pci_write_config_byte(pdev, 0x40, 0x0b);
|
|
|
+- /* legacy mode */
|
|
|
+- pci_write_config_byte(pdev, 0x42, 0x09);
|
|
|
+-
|
|
|
+-#if 1/* play safe, otherwise we may see notebook's usb keyboard lockup */
|
|
|
+- /* disable read prefetch/write post buffers */
|
|
|
+- pci_write_config_byte(pdev, 0x41, 0x02);
|
|
|
+-
|
|
|
+- /* use 3/4 as fifo thresh hold */
|
|
|
+- pci_write_config_byte(pdev, 0x43, 0x0a);
|
|
|
+- pci_write_config_byte(pdev, 0x44, 0x00);
|
|
|
+-
|
|
|
+- pci_write_config_byte(pdev, 0x45, 0x00);
|
|
|
+-#else
|
|
|
+- pci_write_config_byte(pdev, 0x41, 0xc2);
|
|
|
+- pci_write_config_byte(pdev, 0x43, 0x35);
|
|
|
+- pci_write_config_byte(pdev, 0x44, 0x1c);
|
|
|
+-
|
|
|
+- pci_write_config_byte(pdev, 0x45, 0x10);
|
|
|
+-#endif
|
|
|
+-
|
|
|
+- printk(KERN_INFO"via686b fix: IDE done\n");
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_686b_func2_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- /* irq routing */
|
|
|
+- pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 10);
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_686b_func3_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- /* irq routing */
|
|
|
+- pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 11);
|
|
|
+-}
|
|
|
+-
|
|
|
+-static void __init loongson2e_686b_func5_fixup(struct pci_dev *pdev)
|
|
|
+-{
|
|
|
+- unsigned int val;
|
|
|
+- unsigned char c;
|
|
|
+-
|
|
|
+- /* enable IO */
|
|
|
+- pci_write_config_byte(pdev, PCI_COMMAND,
|
|
|
+- PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
|
|
|
+- PCI_COMMAND_MASTER);
|
|
|
+- pci_read_config_dword(pdev, 0x4, &val);
|
|
|
+- pci_write_config_dword(pdev, 0x4, val | 1);
|
|
|
+-
|
|
|
+- /* route ac97 IRQ */
|
|
|
+- pci_write_config_byte(pdev, 0x3c, 9);
|
|
|
+-
|
|
|
+- pci_read_config_byte(pdev, 0x8, &c);
|
|
|
+-
|
|
|
+- /* link control: enable link & SGD PCM output */
|
|
|
+- pci_write_config_byte(pdev, 0x41, 0xcc);
|
|
|
+-
|
|
|
+- /* disable game port, FM, midi, sb, enable write to reg2c-2f */
|
|
|
+- pci_write_config_byte(pdev, 0x42, 0x20);
|
|
|
+-
|
|
|
+- /* we are using Avance logic codec */
|
|
|
+- pci_write_config_word(pdev, 0x2c, 0x1005);
|
|
|
+- pci_write_config_word(pdev, 0x2e, 0x4710);
|
|
|
+- pci_read_config_dword(pdev, 0x2c, &val);
|
|
|
+-
|
|
|
+- pci_write_config_byte(pdev, 0x42, 0x0);
|
|
|
+-}
|
|
|
+-
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686,
|
|
|
+- loongson2e_686b_func0_fixup);
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1,
|
|
|
+- loongson2e_686b_func1_fixup);
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2,
|
|
|
+- loongson2e_686b_func2_fixup);
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3,
|
|
|
+- loongson2e_686b_func3_fixup);
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5,
|
|
|
+- loongson2e_686b_func5_fixup);
|
|
|
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB,
|
|
|
+- loongson2e_nec_fixup);
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-malta.c rt4ls/arch/mips/pci/fixup-malta.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-malta.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-malta.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -36,7 +36,7 @@
|
|
|
+ {0, PCID, PCIA, PCIB, PCIC } /* 21: PCI Slot 4 */
|
|
|
+ };
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int virq;
|
|
|
+ virq = irq_tab[slot][pin];
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-mpc30x.c rt4ls/arch/mips/pci/fixup-mpc30x.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-mpc30x.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-mpc30x.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -34,7 +34,7 @@
|
|
|
+ [29] = MQ200_IRQ,
|
|
|
+ };
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ if (slot == 30)
|
|
|
+ return internal_func_irqs[PCI_FUNC(dev->devfn)];
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-pmcmsp.c rt4ls/arch/mips/pci/fixup-pmcmsp.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-pmcmsp.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-pmcmsp.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -202,7 +202,7 @@
|
|
|
+ * RETURNS: IRQ number
|
|
|
+ *
|
|
|
+ ****************************************************************************/
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ #if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL)
|
|
|
+ printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n");
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-pnx8550.c rt4ls/arch/mips/pci/fixup-pnx8550.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-pnx8550.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-pnx8550.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -45,7 +45,7 @@
|
|
|
+ /* nothing to do here */
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return pnx8550_irq_tab[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-rbtx4927.c rt4ls/arch/mips/pci/fixup-rbtx4927.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-rbtx4927.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-rbtx4927.c 2009-06-12 16:27:08.850451649 +0200
|
|
|
+@@ -36,7 +36,7 @@
|
|
|
+ #include <asm/txx9/pci.h>
|
|
|
+ #include <asm/txx9/rbtx4927.h>
|
|
|
+
|
|
|
+-int __init rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init rbtx4927_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ unsigned char irq = pin;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-rbtx4938.c rt4ls/arch/mips/pci/fixup-rbtx4938.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-rbtx4938.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-rbtx4938.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -13,7 +13,7 @@
|
|
|
+ #include <asm/txx9/pci.h>
|
|
|
+ #include <asm/txx9/rbtx4938.h>
|
|
|
+
|
|
|
+-int __init rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init rbtx4938_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int irq = tx4938_pcic1_map_irq(dev, slot);
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-rc32434.c rt4ls/arch/mips/pci/fixup-rc32434.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-rc32434.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-rc32434.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -37,7 +37,7 @@
|
|
|
+ {0, 0, 1, 3, 0, 2, 1, 3, 0, 2, 1, 3}
|
|
|
+ };
|
|
|
+
|
|
|
+-int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __devinit pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int irq = 0;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-sni.c rt4ls/arch/mips/pci/fixup-sni.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-sni.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-sni.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -130,7 +130,7 @@
|
|
|
+ return (csmsr & 0xa0) == 0x20;
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ switch (sni_brd_type) {
|
|
|
+ case SNI_BRD_PCI_TOWER_CPLUS:
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-tb0219.c rt4ls/arch/mips/pci/fixup-tb0219.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-tb0219.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-tb0219.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -23,7 +23,7 @@
|
|
|
+
|
|
|
+ #include <asm/vr41xx/tb0219.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int irq = -1;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-tb0226.c rt4ls/arch/mips/pci/fixup-tb0226.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-tb0226.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-tb0226.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -23,7 +23,7 @@
|
|
|
+ #include <asm/vr41xx/giu.h>
|
|
|
+ #include <asm/vr41xx/tb0226.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int irq = -1;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-tb0287.c rt4ls/arch/mips/pci/fixup-tb0287.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-tb0287.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-tb0287.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -22,7 +22,7 @@
|
|
|
+
|
|
|
+ #include <asm/vr41xx/tb0287.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ unsigned char bus;
|
|
|
+ int irq = -1;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-wrppmc.c rt4ls/arch/mips/pci/fixup-wrppmc.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-wrppmc.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-wrppmc.c 2009-06-12 16:27:08.854451321 +0200
|
|
|
+@@ -25,7 +25,7 @@
|
|
|
+ [6] = {0, WRPPMC_PCI_INTA_IRQ, 0, 0, 0},
|
|
|
+ };
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return pci_irq_tab[slot][pin];
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/fixup-yosemite.c rt4ls/arch/mips/pci/fixup-yosemite.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/fixup-yosemite.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/fixup-yosemite.c 2009-06-12 16:27:08.886440592 +0200
|
|
|
+@@ -26,7 +26,7 @@
|
|
|
+ #include <linux/init.h>
|
|
|
+ #include <linux/pci.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ if (pin == 0)
|
|
|
+ return -1;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/ops-bonito64.c rt4ls/arch/mips/pci/ops-bonito64.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/ops-bonito64.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/ops-bonito64.c 2009-06-12 16:27:08.890441660 +0200
|
|
|
+@@ -29,20 +29,16 @@
|
|
|
+ #define PCI_ACCESS_READ 0
|
|
|
+ #define PCI_ACCESS_WRITE 1
|
|
|
+
|
|
|
+-#ifdef CONFIG_LEMOTE_FULONG
|
|
|
+-#define CFG_SPACE_REG(offset) (void *)CKSEG1ADDR(BONITO_PCICFG_BASE | (offset))
|
|
|
+-#define ID_SEL_BEGIN 11
|
|
|
+-#else
|
|
|
+-#define CFG_SPACE_REG(offset) (void *)CKSEG1ADDR(_pcictrl_bonito_pcicfg + (offset))
|
|
|
++#define CFG_SPACE_REG(offset) \
|
|
|
++ (void *)CKSEG1ADDR(_pcictrl_bonito_pcicfg + (offset))
|
|
|
+ #define ID_SEL_BEGIN 10
|
|
|
+-#endif
|
|
|
+ #define MAX_DEV_NUM (31 - ID_SEL_BEGIN)
|
|
|
+
|
|
|
+
|
|
|
+ static int bonito64_pcibios_config_access(unsigned char access_type,
|
|
|
+ struct pci_bus *bus,
|
|
|
+ unsigned int devfn, int where,
|
|
|
+- u32 * data)
|
|
|
++ u32 *data)
|
|
|
+ {
|
|
|
+ u32 busnum = bus->number;
|
|
|
+ u32 addr, type;
|
|
|
+@@ -77,10 +73,9 @@
|
|
|
+ addrp = CFG_SPACE_REG(addr & 0xffff);
|
|
|
+ if (access_type == PCI_ACCESS_WRITE) {
|
|
|
+ writel(cpu_to_le32(*data), addrp);
|
|
|
+-#ifndef CONFIG_LEMOTE_FULONG
|
|
|
+ /* Wait till done */
|
|
|
+- while (BONITO_PCIMSTAT & 0xF);
|
|
|
+-#endif
|
|
|
++ while (BONITO_PCIMSTAT & 0xF)
|
|
|
++ ;
|
|
|
+ } else {
|
|
|
+ *data = le32_to_cpu(readl(addrp));
|
|
|
+ }
|
|
|
+@@ -107,7 +102,7 @@
|
|
|
+ * read/write a 32bit word and mask/modify the data we actually want.
|
|
|
+ */
|
|
|
+ static int bonito64_pcibios_read(struct pci_bus *bus, unsigned int devfn,
|
|
|
+- int where, int size, u32 * val)
|
|
|
++ int where, int size, u32 *val)
|
|
|
+ {
|
|
|
+ u32 data = 0;
|
|
|
+
|
|
|
+@@ -144,7 +139,7 @@
|
|
|
+ data = val;
|
|
|
+ else {
|
|
|
+ if (bonito64_pcibios_config_access(PCI_ACCESS_READ, bus, devfn,
|
|
|
+- where, &data))
|
|
|
++ where, &data))
|
|
|
+ return -1;
|
|
|
+
|
|
|
+ if (size == 1)
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/ops-loongson2.c rt4ls/arch/mips/pci/ops-loongson2.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/ops-loongson2.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/pci/ops-loongson2.c 2009-06-12 16:27:08.890441660 +0200
|
|
|
+@@ -0,0 +1,213 @@
|
|
|
++/*
|
|
|
++ * Copyright (C) 1999, 2000, 2004 MIPS Technologies, Inc.
|
|
|
++ * All rights reserved.
|
|
|
++ * Authors: Carsten Langgaard <carstenl@mips.com>
|
|
|
++ * Maciej W. Rozycki <macro@mips.com>
|
|
|
++ *
|
|
|
++ * This program is free software; you can distribute it and/or modify it
|
|
|
++ * under the terms of the GNU General Public License (Version 2) as
|
|
|
++ * published by the Free Software Foundation.
|
|
|
++ *
|
|
|
++ * This program is distributed in the hope it will be useful, but WITHOUT
|
|
|
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
++ * for more details.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License along
|
|
|
++ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
++ * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
|
|
++ *
|
|
|
++ * MIPS boards specific PCI support.
|
|
|
++ */
|
|
|
++#include <linux/types.h>
|
|
|
++#include <linux/pci.h>
|
|
|
++#include <linux/kernel.h>
|
|
|
++#include <linux/init.h>
|
|
|
++
|
|
|
++#include <loongson.h>
|
|
|
++
|
|
|
++#ifdef CONFIG_CS5536
|
|
|
++#include <cs5536/cs5536_pci.h>
|
|
|
++#include <cs5536/cs5536.h>
|
|
|
++#endif
|
|
|
++
|
|
|
++#define PCI_ACCESS_READ 0
|
|
|
++#define PCI_ACCESS_WRITE 1
|
|
|
++
|
|
|
++#define CFG_SPACE_REG(offset) \
|
|
|
++ (void *)CKSEG1ADDR(LOONGSON_PCICFG_BASE | (offset))
|
|
|
++#define ID_SEL_BEGIN 11
|
|
|
++#define MAX_DEV_NUM (31 - ID_SEL_BEGIN)
|
|
|
++
|
|
|
++
|
|
|
++static int loongson_pcibios_config_access(unsigned char access_type,
|
|
|
++ struct pci_bus *bus,
|
|
|
++ unsigned int devfn, int where,
|
|
|
++ u32 *data)
|
|
|
++{
|
|
|
++ u32 busnum = bus->number;
|
|
|
++ u32 addr, type;
|
|
|
++ u32 dummy;
|
|
|
++ void *addrp;
|
|
|
++ int device = PCI_SLOT(devfn);
|
|
|
++ int function = PCI_FUNC(devfn);
|
|
|
++ int reg = where & ~3;
|
|
|
++
|
|
|
++ if (busnum == 0) {
|
|
|
++ /* board-specific part,currently,only fuloong2f,yeeloong2f
|
|
|
++ * use CS5536, fuloong2e use via686b, gdium has no
|
|
|
++ * south bridge
|
|
|
++ */
|
|
|
++#ifdef CONFIG_CS5536
|
|
|
++ /* cs5536_pci_conf_read4/write4() will call _rdmsr/_wrmsr()
|
|
|
++ * to access the regsters 0xf4,0xf8,0xfc, which is bigger than
|
|
|
++ * 0xf0, so, it will not go this branch, but the others. so,
|
|
|
++ * no calling dead loop here.
|
|
|
++ */
|
|
|
++ if ((PCI_IDSEL_CS5536 == device) && (reg < 0xF0)) {
|
|
|
++ switch (access_type) {
|
|
|
++ case PCI_ACCESS_READ:
|
|
|
++ *data = cs5536_pci_conf_read4(function, reg);
|
|
|
++ break;
|
|
|
++ case PCI_ACCESS_WRITE:
|
|
|
++ cs5536_pci_conf_write4(function, reg, *data);
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++#endif
|
|
|
++ /* Type 0 configuration for onboard PCI bus */
|
|
|
++ if (device > MAX_DEV_NUM)
|
|
|
++ return -1;
|
|
|
++
|
|
|
++ addr = (1 << (device + ID_SEL_BEGIN)) | (function << 8) | reg;
|
|
|
++ type = 0;
|
|
|
++ } else {
|
|
|
++ /* Type 1 configuration for offboard PCI bus */
|
|
|
++ addr = (busnum << 16) | (device << 11) | (function << 8) | reg;
|
|
|
++ type = 0x10000;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Clear aborts */
|
|
|
++ LOONGSON_PCICMD |= LOONGSON_PCICMD_MABORT_CLR | \
|
|
|
++ LOONGSON_PCICMD_MTABORT_CLR;
|
|
|
++
|
|
|
++ LOONGSON_PCIMAP_CFG = (addr >> 16) | type;
|
|
|
++
|
|
|
++ /* Flush Bonito register block */
|
|
|
++ dummy = LOONGSON_PCIMAP_CFG;
|
|
|
++ mmiowb();
|
|
|
++
|
|
|
++ addrp = CFG_SPACE_REG(addr & 0xffff);
|
|
|
++ if (access_type == PCI_ACCESS_WRITE)
|
|
|
++ writel(cpu_to_le32(*data), addrp);
|
|
|
++ else
|
|
|
++ *data = le32_to_cpu(readl(addrp));
|
|
|
++
|
|
|
++ /* Detect Master/Target abort */
|
|
|
++ if (LOONGSON_PCICMD & (LOONGSON_PCICMD_MABORT_CLR |
|
|
|
++ LOONGSON_PCICMD_MTABORT_CLR)) {
|
|
|
++ /* Error occurred */
|
|
|
++
|
|
|
++ /* Clear bits */
|
|
|
++ LOONGSON_PCICMD |= (LOONGSON_PCICMD_MABORT_CLR |
|
|
|
++ LOONGSON_PCICMD_MTABORT_CLR);
|
|
|
++
|
|
|
++ return -1;
|
|
|
++ }
|
|
|
++
|
|
|
++ return 0;
|
|
|
++
|
|
|
++}
|
|
|
++
|
|
|
++
|
|
|
++/*
|
|
|
++ * We can't address 8 and 16 bit words directly. Instead we have to
|
|
|
++ * read/write a 32bit word and mask/modify the data we actually want.
|
|
|
++ */
|
|
|
++static int loongson_pcibios_read(struct pci_bus *bus, unsigned int devfn,
|
|
|
++ int where, int size, u32 *val)
|
|
|
++{
|
|
|
++ u32 data = 0;
|
|
|
++
|
|
|
++ if ((size == 2) && (where & 1))
|
|
|
++ return PCIBIOS_BAD_REGISTER_NUMBER;
|
|
|
++ else if ((size == 4) && (where & 3))
|
|
|
++ return PCIBIOS_BAD_REGISTER_NUMBER;
|
|
|
++
|
|
|
++ if (loongson_pcibios_config_access(PCI_ACCESS_READ, bus, devfn, where,
|
|
|
++ &data))
|
|
|
++ return -1;
|
|
|
++
|
|
|
++ if (size == 1)
|
|
|
++ *val = (data >> ((where & 3) << 3)) & 0xff;
|
|
|
++ else if (size == 2)
|
|
|
++ *val = (data >> ((where & 3) << 3)) & 0xffff;
|
|
|
++ else
|
|
|
++ *val = data;
|
|
|
++
|
|
|
++ return PCIBIOS_SUCCESSFUL;
|
|
|
++}
|
|
|
++
|
|
|
++static int loongson_pcibios_write(struct pci_bus *bus, unsigned int devfn,
|
|
|
++ int where, int size, u32 val)
|
|
|
++{
|
|
|
++ u32 data = 0;
|
|
|
++
|
|
|
++ if ((size == 2) && (where & 1))
|
|
|
++ return PCIBIOS_BAD_REGISTER_NUMBER;
|
|
|
++ else if ((size == 4) && (where & 3))
|
|
|
++ return PCIBIOS_BAD_REGISTER_NUMBER;
|
|
|
++
|
|
|
++ if (size == 4)
|
|
|
++ data = val;
|
|
|
++ else {
|
|
|
++ if (loongson_pcibios_config_access(PCI_ACCESS_READ, bus, devfn,
|
|
|
++ where, &data))
|
|
|
++ return -1;
|
|
|
++
|
|
|
++ if (size == 1)
|
|
|
++ data = (data & ~(0xff << ((where & 3) << 3))) |
|
|
|
++ (val << ((where & 3) << 3));
|
|
|
++ else if (size == 2)
|
|
|
++ data = (data & ~(0xffff << ((where & 3) << 3))) |
|
|
|
++ (val << ((where & 3) << 3));
|
|
|
++ }
|
|
|
++
|
|
|
++ if (loongson_pcibios_config_access(PCI_ACCESS_WRITE, bus, devfn, where,
|
|
|
++ &data))
|
|
|
++ return -1;
|
|
|
++
|
|
|
++ return PCIBIOS_SUCCESSFUL;
|
|
|
++}
|
|
|
++
|
|
|
++struct pci_ops loongson_pci_ops = {
|
|
|
++ .read = loongson_pcibios_read,
|
|
|
++ .write = loongson_pcibios_write
|
|
|
++};
|
|
|
++
|
|
|
++#ifdef CONFIG_CS5536
|
|
|
++void _rdmsr(u32 msr, u32 *hi, u32 *lo)
|
|
|
++{
|
|
|
++ struct pci_bus bus = {
|
|
|
++ .number = PCI_BUS_CS5536
|
|
|
++ };
|
|
|
++ u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0);
|
|
|
++ loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr);
|
|
|
++ loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_LO, 4, lo);
|
|
|
++ loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_HI, 4, hi);
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(_rdmsr);
|
|
|
++
|
|
|
++void _wrmsr(u32 msr, u32 hi, u32 lo)
|
|
|
++{
|
|
|
++ struct pci_bus bus = {
|
|
|
++ .number = PCI_BUS_CS5536
|
|
|
++ };
|
|
|
++ u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0);
|
|
|
++ loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr);
|
|
|
++ loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_LO, 4, lo);
|
|
|
++ loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_HI, 4, hi);
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(_wrmsr);
|
|
|
++#endif
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-bcm1480.c rt4ls/arch/mips/pci/pci-bcm1480.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-bcm1480.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-bcm1480.c 2009-06-12 16:27:09.146457490 +0200
|
|
|
+@@ -74,7 +74,7 @@
|
|
|
+ *(u32 *)(cfg_space + (addr & ~3)) = data;
|
|
|
+ }
|
|
|
+
|
|
|
+-int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ if (pin == 0)
|
|
|
+ return -1;
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-bcm47xx.c rt4ls/arch/mips/pci/pci-bcm47xx.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-bcm47xx.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-bcm47xx.c 2009-06-12 16:27:09.146457490 +0200
|
|
|
+@@ -26,7 +26,7 @@
|
|
|
+ #include <linux/pci.h>
|
|
|
+ #include <linux/ssb/ssb.h>
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-ip27.c rt4ls/arch/mips/pci/pci-ip27.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-ip27.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-ip27.c 2009-06-12 16:27:09.150468058 +0200
|
|
|
+@@ -141,7 +141,7 @@
|
|
|
+ * A given PCI device, in general, should be able to intr any of the cpus
|
|
|
+ * on any one of the hubs connected to its xbow.
|
|
|
+ */
|
|
|
+-int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __devinit pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-lasat.c rt4ls/arch/mips/pci/pci-lasat.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-lasat.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-lasat.c 2009-06-12 16:27:09.150468058 +0200
|
|
|
+@@ -61,7 +61,7 @@
|
|
|
+ #define LASAT_IRQ_PCIC (LASAT_IRQ_BASE + 7)
|
|
|
+ #define LASAT_IRQ_PCID (LASAT_IRQ_BASE + 8)
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ switch (slot) {
|
|
|
+ case 1:
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-sb1250.c rt4ls/arch/mips/pci/pci-sb1250.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-sb1250.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-sb1250.c 2009-06-12 16:27:09.150468058 +0200
|
|
|
+@@ -84,7 +84,7 @@
|
|
|
+ *(u32 *) (cfg_space + (addr & ~3)) = data;
|
|
|
+ }
|
|
|
+
|
|
|
+-int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return dev->irq;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-tx4938.c rt4ls/arch/mips/pci/pci-tx4938.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-tx4938.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-tx4938.c 2009-06-12 16:27:09.154469127 +0200
|
|
|
+@@ -114,7 +114,7 @@
|
|
|
+ return pciclk;
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
|
|
|
++int __init tx4938_pcic1_map_irq(struct pci_dev *dev, u8 slot)
|
|
|
+ {
|
|
|
+ if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4938_pcic1ptr) {
|
|
|
+ switch (slot) {
|
|
|
+diff -Nur linux-2.6.30/arch/mips/pci/pci-tx4939.c rt4ls/arch/mips/pci/pci-tx4939.c
|
|
|
+--- linux-2.6.30/arch/mips/pci/pci-tx4939.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/pci/pci-tx4939.c 2009-06-12 16:27:09.154469127 +0200
|
|
|
+@@ -50,7 +50,7 @@
|
|
|
+ ((pciclk + 50000) / 100000) % 10);
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
|
|
|
++int __init tx4939_pcic1_map_irq(struct pci_dev *dev, u8 slot)
|
|
|
+ {
|
|
|
+ if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4939_pcic1ptr) {
|
|
|
+ switch (slot) {
|
|
|
+@@ -70,7 +70,7 @@
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init tx4939_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ int irq = tx4939_pcic1_map_irq(dev, slot);
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/power/Makefile rt4ls/arch/mips/power/Makefile
|
|
|
+--- linux-2.6.30/arch/mips/power/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/power/Makefile 2009-06-12 16:27:09.166460321 +0200
|
|
|
+@@ -0,0 +1 @@
|
|
|
++obj-$(CONFIG_HIBERNATION) += cpu.o hibernate.o
|
|
|
+diff -Nur linux-2.6.30/arch/mips/power/cpu.c rt4ls/arch/mips/power/cpu.c
|
|
|
+--- linux-2.6.30/arch/mips/power/cpu.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/power/cpu.c 2009-06-12 16:27:09.170469770 +0200
|
|
|
+@@ -0,0 +1,43 @@
|
|
|
++/*
|
|
|
++ * Suspend support for mips.
|
|
|
++ *
|
|
|
++ * Distributed under GPLv2
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Hu Hongbing <huhb@lemote.com>
|
|
|
++ * Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ */
|
|
|
++#include <asm/suspend.h>
|
|
|
++#include <asm/fpu.h>
|
|
|
++#include <asm/dsp.h>
|
|
|
++
|
|
|
++static u32 saved_status;
|
|
|
++struct pt_regs saved_regs;
|
|
|
++
|
|
|
++void save_processor_state(void)
|
|
|
++{
|
|
|
++ saved_status = read_c0_status();
|
|
|
++
|
|
|
++ if (is_fpu_owner())
|
|
|
++ save_fp(current);
|
|
|
++ if (cpu_has_dsp)
|
|
|
++ save_dsp(current);
|
|
|
++}
|
|
|
++
|
|
|
++void restore_processor_state(void)
|
|
|
++{
|
|
|
++ write_c0_status(saved_status);
|
|
|
++
|
|
|
++ if (is_fpu_owner())
|
|
|
++ restore_fp(current);
|
|
|
++ if (cpu_has_dsp)
|
|
|
++ restore_dsp(current);
|
|
|
++}
|
|
|
++
|
|
|
++int pfn_is_nosave(unsigned long pfn)
|
|
|
++{
|
|
|
++ unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin));
|
|
|
++ unsigned long nosave_end_pfn = PFN_UP(__pa(&__nosave_end));
|
|
|
++
|
|
|
++ return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/arch/mips/power/hibernate.S rt4ls/arch/mips/power/hibernate.S
|
|
|
+--- linux-2.6.30/arch/mips/power/hibernate.S 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/arch/mips/power/hibernate.S 2009-06-12 16:27:09.170469770 +0200
|
|
|
+@@ -0,0 +1,70 @@
|
|
|
++/*
|
|
|
++ * Hibernation support for mips - temporary page tables
|
|
|
++ *
|
|
|
++ * Distributed under GPLv2
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
|
|
|
++ * Author: Hu Hongbing <huhb@lemote.com>
|
|
|
++ * Wu Zhangjin <wuzj@lemote.com>
|
|
|
++ */
|
|
|
++#include <asm/asm-offsets.h>
|
|
|
++#include <asm/regdef.h>
|
|
|
++#include <asm/asm.h>
|
|
|
++
|
|
|
++.text
|
|
|
++LEAF(swsusp_arch_suspend)
|
|
|
++ PTR_LA t0, saved_regs
|
|
|
++ PTR_S ra, PT_R31(t0)
|
|
|
++ PTR_S sp, PT_R29(t0)
|
|
|
++ PTR_S fp, PT_R30(t0)
|
|
|
++ PTR_S gp, PT_R28(t0)
|
|
|
++ PTR_S s0, PT_R16(t0)
|
|
|
++ PTR_S s1, PT_R17(t0)
|
|
|
++ PTR_S s2, PT_R18(t0)
|
|
|
++ PTR_S s3, PT_R19(t0)
|
|
|
++ PTR_S s4, PT_R20(t0)
|
|
|
++ PTR_S s5, PT_R21(t0)
|
|
|
++ PTR_S s6, PT_R22(t0)
|
|
|
++ PTR_S s7, PT_R23(t0)
|
|
|
++ j swsusp_save
|
|
|
++END(swsusp_arch_suspend)
|
|
|
++
|
|
|
++LEAF(swsusp_arch_resume)
|
|
|
++ PTR_L t0, restore_pblist
|
|
|
++0:
|
|
|
++ PTR_L t1, PBE_ADDRESS(t0) /* source */
|
|
|
++ PTR_L t2, PBE_ORIG_ADDRESS(t0) /* destination */
|
|
|
++ PTR_ADDIU t3, t1, _PAGE_SIZE
|
|
|
++1:
|
|
|
++ REG_L t8, (t1)
|
|
|
++ REG_S t8, (t2)
|
|
|
++ PTR_ADDIU t1, t1, SZREG
|
|
|
++ PTR_ADDIU t2, t2, SZREG
|
|
|
++ bne t1, t3, 1b
|
|
|
++ PTR_L t0, PBE_NEXT(t0)
|
|
|
++ bnez t0, 0b
|
|
|
++ /* flush caches to make sure context is in memory */
|
|
|
++ PTR_L t0, __flush_cache_all
|
|
|
++ jalr t0
|
|
|
++ /* flush tlb entries */
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ jal flush_tlb_all
|
|
|
++#else
|
|
|
++ jal local_flush_tlb_all
|
|
|
++#endif
|
|
|
++ PTR_LA t0, saved_regs
|
|
|
++ PTR_L ra, PT_R31(t0)
|
|
|
++ PTR_L sp, PT_R29(t0)
|
|
|
++ PTR_L fp, PT_R30(t0)
|
|
|
++ PTR_L gp, PT_R28(t0)
|
|
|
++ PTR_L s0, PT_R16(t0)
|
|
|
++ PTR_L s1, PT_R17(t0)
|
|
|
++ PTR_L s2, PT_R18(t0)
|
|
|
++ PTR_L s3, PT_R19(t0)
|
|
|
++ PTR_L s4, PT_R20(t0)
|
|
|
++ PTR_L s5, PT_R21(t0)
|
|
|
++ PTR_L s6, PT_R22(t0)
|
|
|
++ PTR_L s7, PT_R23(t0)
|
|
|
++ PTR_LI v0, 0x0
|
|
|
++ jr ra
|
|
|
++END(swsusp_arch_resume)
|
|
|
+diff -Nur linux-2.6.30/arch/mips/sibyte/bcm1480/irq.c rt4ls/arch/mips/sibyte/bcm1480/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/sibyte/bcm1480/irq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/sibyte/bcm1480/irq.c 2009-06-12 16:27:09.190461705 +0200
|
|
|
+@@ -116,10 +116,6 @@
|
|
|
+ unsigned long flags;
|
|
|
+ unsigned int irq_dirty;
|
|
|
+
|
|
|
+- if (cpumask_weight(mask) != 1) {
|
|
|
+- printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq);
|
|
|
+- return;
|
|
|
+- }
|
|
|
+ i = cpumask_first(mask);
|
|
|
+
|
|
|
+ /* Convert logical CPU to physical CPU */
|
|
|
+diff -Nur linux-2.6.30/arch/mips/sibyte/sb1250/irq.c rt4ls/arch/mips/sibyte/sb1250/irq.c
|
|
|
+--- linux-2.6.30/arch/mips/sibyte/sb1250/irq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/sibyte/sb1250/irq.c 2009-06-12 16:27:09.194461656 +0200
|
|
|
+@@ -111,11 +111,6 @@
|
|
|
+
|
|
|
+ i = cpumask_first(mask);
|
|
|
+
|
|
|
+- if (cpumask_weight(mask) > 1) {
|
|
|
+- printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq);
|
|
|
+- return;
|
|
|
+- }
|
|
|
+-
|
|
|
+ /* Convert logical CPU to physical CPU */
|
|
|
+ cpu = cpu_logical_map(i);
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/mips/txx9/generic/pci.c rt4ls/arch/mips/txx9/generic/pci.c
|
|
|
+--- linux-2.6.30/arch/mips/txx9/generic/pci.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/mips/txx9/generic/pci.c 2009-06-12 16:27:09.214461413 +0200
|
|
|
+@@ -382,7 +382,7 @@
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
++int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|
|
+ {
|
|
|
+ return txx9_board_vec->pci_map_irq(dev, slot, pin);
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c rt4ls/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-06-12 16:27:12.750683917 +0200
|
|
|
+@@ -550,7 +550,7 @@
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+ for_each_possible_cpu(i) {
|
|
|
+- if (!zalloc_cpumask_var_node(
|
|
|
++ if (!alloc_cpumask_var_node(
|
|
|
+ &per_cpu_ptr(acpi_perf_data, i)->shared_cpu_map,
|
|
|
+ GFP_KERNEL, cpu_to_node(i))) {
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/cpu/cpufreq/powernow-k7.c rt4ls/arch/x86/kernel/cpu/cpufreq/powernow-k7.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/cpu/cpufreq/powernow-k7.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/cpu/cpufreq/powernow-k7.c 2009-06-12 16:27:12.758683819 +0200
|
|
|
+@@ -322,7 +322,7 @@
|
|
|
+ goto err0;
|
|
|
+ }
|
|
|
+
|
|
|
+- if (!zalloc_cpumask_var(&acpi_processor_perf->shared_cpu_map,
|
|
|
++ if (!alloc_cpumask_var(&acpi_processor_perf->shared_cpu_map,
|
|
|
+ GFP_KERNEL)) {
|
|
|
+ retval = -ENOMEM;
|
|
|
+ goto err05;
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/cpu/cpufreq/powernow-k8.c rt4ls/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/cpu/cpufreq/powernow-k8.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/cpu/cpufreq/powernow-k8.c 2009-06-12 16:27:12.758683819 +0200
|
|
|
+@@ -887,7 +887,7 @@
|
|
|
+ /* notify BIOS that we exist */
|
|
|
+ acpi_processor_notify_smm(THIS_MODULE);
|
|
|
+
|
|
|
+- if (!zalloc_cpumask_var(&data->acpi_data.shared_cpu_map, GFP_KERNEL)) {
|
|
|
++ if (!alloc_cpumask_var(&data->acpi_data.shared_cpu_map, GFP_KERNEL)) {
|
|
|
+ printk(KERN_ERR PFX
|
|
|
+ "unable to alloc powernow_k8_data cpumask\n");
|
|
|
+ ret_val = -ENOMEM;
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c rt4ls/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-06-12 16:27:12.758683819 +0200
|
|
|
+@@ -471,7 +471,7 @@
|
|
|
+
|
|
|
+ if (unlikely(!alloc_cpumask_var(&saved_mask, GFP_KERNEL)))
|
|
|
+ return -ENOMEM;
|
|
|
+- if (unlikely(!zalloc_cpumask_var(&covered_cpus, GFP_KERNEL))) {
|
|
|
++ if (unlikely(!alloc_cpumask_var(&covered_cpus, GFP_KERNEL))) {
|
|
|
+ free_cpumask_var(saved_mask);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/cpu/mcheck/mce_64.c rt4ls/arch/x86/kernel/cpu/mcheck/mce_64.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-06-12 16:27:12.766685398 +0200
|
|
|
+@@ -1163,7 +1163,7 @@
|
|
|
+ if (!mce_available(&boot_cpu_data))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
+- zalloc_cpumask_var(&mce_device_initialized, GFP_KERNEL);
|
|
|
++ alloc_cpumask_var(&mce_device_initialized, GFP_KERNEL);
|
|
|
+
|
|
|
+ err = mce_init_banks();
|
|
|
+ if (err)
|
|
|
+diff -Nur linux-2.6.30/arch/x86/kernel/tlb_uv.c rt4ls/arch/x86/kernel/tlb_uv.c
|
|
|
+--- linux-2.6.30/arch/x86/kernel/tlb_uv.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/arch/x86/kernel/tlb_uv.c 2009-06-12 16:27:13.002711263 +0200
|
|
|
+@@ -832,7 +832,7 @@
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ for_each_possible_cpu(cur_cpu)
|
|
|
+- zalloc_cpumask_var_node(&per_cpu(uv_flush_tlb_mask, cur_cpu),
|
|
|
++ alloc_cpumask_var_node(&per_cpu(uv_flush_tlb_mask, cur_cpu),
|
|
|
+ GFP_KERNEL, cpu_to_node(cur_cpu));
|
|
|
+
|
|
|
+ uv_bau_retry_limit = 1;
|
|
|
+diff -Nur linux-2.6.30/block/bsg.c rt4ls/block/bsg.c
|
|
|
+--- linux-2.6.30/block/bsg.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/block/bsg.c 2009-06-12 16:27:13.226714938 +0200
|
|
|
+@@ -315,7 +315,6 @@
|
|
|
+ blk_put_request(rq);
|
|
|
+ if (next_rq) {
|
|
|
+ blk_rq_unmap_user(next_rq->bio);
|
|
|
+- next_rq->bio = NULL;
|
|
|
+ blk_put_request(next_rq);
|
|
|
+ }
|
|
|
+ return ERR_PTR(ret);
|
|
|
+@@ -449,7 +448,6 @@
|
|
|
+ hdr->dout_resid = rq->data_len;
|
|
|
+ hdr->din_resid = rq->next_rq->data_len;
|
|
|
+ blk_rq_unmap_user(bidi_bio);
|
|
|
+- rq->next_rq->bio = NULL;
|
|
|
+ blk_put_request(rq->next_rq);
|
|
|
+ } else if (rq_data_dir(rq) == READ)
|
|
|
+ hdr->din_resid = rq->data_len;
|
|
|
+@@ -468,7 +466,6 @@
|
|
|
+ blk_rq_unmap_user(bio);
|
|
|
+ if (rq->cmd != rq->__cmd)
|
|
|
+ kfree(rq->cmd);
|
|
|
+- rq->bio = NULL;
|
|
|
+ blk_put_request(rq);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+diff -Nur linux-2.6.30/drivers/acpi/processor_core.c rt4ls/drivers/acpi/processor_core.c
|
|
|
+--- linux-2.6.30/drivers/acpi/processor_core.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/acpi/processor_core.c 2009-06-12 16:27:13.558736838 +0200
|
|
|
+@@ -844,7 +844,7 @@
|
|
|
+ if (!pr)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+- if (!zalloc_cpumask_var(&pr->throttling.shared_cpu_map, GFP_KERNEL)) {
|
|
|
++ if (!alloc_cpumask_var(&pr->throttling.shared_cpu_map, GFP_KERNEL)) {
|
|
|
+ kfree(pr);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/drivers/char/mxser.c rt4ls/drivers/char/mxser.c
|
|
|
+--- linux-2.6.30/drivers/char/mxser.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/char/mxser.c 2009-06-12 16:27:13.878756104 +0200
|
|
|
+@@ -2711,7 +2711,7 @@
|
|
|
+ continue;
|
|
|
+
|
|
|
+ brd = &mxser_boards[m];
|
|
|
+- retval = mxser_get_ISA_conf(ioaddr[b], brd);
|
|
|
++ retval = mxser_get_ISA_conf(!ioaddr[b], brd);
|
|
|
+ if (retval <= 0) {
|
|
|
+ brd->info = NULL;
|
|
|
+ continue;
|
|
|
+diff -Nur linux-2.6.30/drivers/cpufreq/cpufreq.c rt4ls/drivers/cpufreq/cpufreq.c
|
|
|
+--- linux-2.6.30/drivers/cpufreq/cpufreq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/cpufreq/cpufreq.c 2009-06-12 16:27:23.183344589 +0200
|
|
|
+@@ -808,7 +808,7 @@
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto nomem_out;
|
|
|
+ }
|
|
|
+- if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL)) {
|
|
|
++ if (!alloc_cpumask_var(&policy->related_cpus, GFP_KERNEL)) {
|
|
|
+ free_cpumask_var(policy->cpus);
|
|
|
+ kfree(policy);
|
|
|
+ ret = -ENOMEM;
|
|
|
+diff -Nur linux-2.6.30/drivers/ide/amd74xx.c rt4ls/drivers/ide/amd74xx.c
|
|
|
+--- linux-2.6.30/drivers/ide/amd74xx.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/ide/amd74xx.c 2009-06-12 16:27:31.515864613 +0200
|
|
|
+@@ -23,6 +23,11 @@
|
|
|
+
|
|
|
+ #define DRV_NAME "amd74xx"
|
|
|
+
|
|
|
++static const char *am74xx_quirk_drives[] = {
|
|
|
++ "FUJITSU MHZ2160BH G2",
|
|
|
++ NULL
|
|
|
++};
|
|
|
++
|
|
|
+ enum {
|
|
|
+ AMD_IDE_CONFIG = 0x41,
|
|
|
+ AMD_CABLE_DETECT = 0x42,
|
|
|
+@@ -112,6 +117,19 @@
|
|
|
+ amd_set_drive(drive, XFER_PIO_0 + pio);
|
|
|
+ }
|
|
|
+
|
|
|
++static void amd_quirkproc(ide_drive_t *drive)
|
|
|
++{
|
|
|
++ const char **list, *m = (char *)&drive->id[ATA_ID_PROD];
|
|
|
++
|
|
|
++ for (list = am74xx_quirk_drives; *list != NULL; list++)
|
|
|
++ if (strstr(m, *list) != NULL) {
|
|
|
++ drive->quirk_list = 2;
|
|
|
++ return;
|
|
|
++ }
|
|
|
++
|
|
|
++ drive->quirk_list = 0;
|
|
|
++}
|
|
|
++
|
|
|
+ static void amd7409_cable_detect(struct pci_dev *dev)
|
|
|
+ {
|
|
|
+ /* no host side cable detection */
|
|
|
+@@ -186,6 +204,7 @@
|
|
|
+ static const struct ide_port_ops amd_port_ops = {
|
|
|
+ .set_pio_mode = amd_set_pio_mode,
|
|
|
+ .set_dma_mode = amd_set_drive,
|
|
|
++ .quirkproc = amd_quirkproc,
|
|
|
+ .cable_detect = amd_cable_detect,
|
|
|
+ };
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/drivers/md/raid5.c rt4ls/drivers/md/raid5.c
|
|
|
+--- linux-2.6.30/drivers/md/raid5.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/md/raid5.c 2009-06-12 16:27:48.380919207 +0200
|
|
|
+@@ -362,7 +362,7 @@
|
|
|
+
|
|
|
+ static struct stripe_head *
|
|
|
+ get_active_stripe(raid5_conf_t *conf, sector_t sector,
|
|
|
+- int previous, int noblock, int noquiesce)
|
|
|
++ int previous, int noblock)
|
|
|
+ {
|
|
|
+ struct stripe_head *sh;
|
|
|
+
|
|
|
+@@ -372,7 +372,7 @@
|
|
|
+
|
|
|
+ do {
|
|
|
+ wait_event_lock_irq(conf->wait_for_stripe,
|
|
|
+- conf->quiesce == 0 || noquiesce,
|
|
|
++ conf->quiesce == 0,
|
|
|
+ conf->device_lock, /* nothing */);
|
|
|
+ sh = __find_stripe(conf, sector, conf->generation - previous);
|
|
|
+ if (!sh) {
|
|
|
+@@ -2671,7 +2671,7 @@
|
|
|
+ sector_t bn = compute_blocknr(sh, i, 1);
|
|
|
+ sector_t s = raid5_compute_sector(conf, bn, 0,
|
|
|
+ &dd_idx, NULL);
|
|
|
+- sh2 = get_active_stripe(conf, s, 0, 1, 1);
|
|
|
++ sh2 = get_active_stripe(conf, s, 0, 1);
|
|
|
+ if (sh2 == NULL)
|
|
|
+ /* so far only the early blocks of this stripe
|
|
|
+ * have been requested. When later blocks
|
|
|
+@@ -2944,7 +2944,7 @@
|
|
|
+ /* Finish reconstruct operations initiated by the expansion process */
|
|
|
+ if (sh->reconstruct_state == reconstruct_state_result) {
|
|
|
+ struct stripe_head *sh2
|
|
|
+- = get_active_stripe(conf, sh->sector, 1, 1, 1);
|
|
|
++ = get_active_stripe(conf, sh->sector, 1, 1);
|
|
|
+ if (sh2 && test_bit(STRIPE_EXPAND_SOURCE, &sh2->state)) {
|
|
|
+ /* sh cannot be written until sh2 has been read.
|
|
|
+ * so arrange for sh to be delayed a little
|
|
|
+@@ -3189,7 +3189,7 @@
|
|
|
+
|
|
|
+ if (s.expanded && test_bit(STRIPE_EXPANDING, &sh->state)) {
|
|
|
+ struct stripe_head *sh2
|
|
|
+- = get_active_stripe(conf, sh->sector, 1, 1, 1);
|
|
|
++ = get_active_stripe(conf, sh->sector, 1, 1);
|
|
|
+ if (sh2 && test_bit(STRIPE_EXPAND_SOURCE, &sh2->state)) {
|
|
|
+ /* sh cannot be written until sh2 has been read.
|
|
|
+ * so arrange for sh to be delayed a little
|
|
|
+@@ -3288,7 +3288,7 @@
|
|
|
+ int i;
|
|
|
+
|
|
|
+ rcu_read_lock();
|
|
|
+- for (i = 0; i < conf->raid_disks; i++) {
|
|
|
++ for (i=0; i<mddev->raid_disks; i++) {
|
|
|
+ mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev);
|
|
|
+ if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) {
|
|
|
+ struct request_queue *r_queue = bdev_get_queue(rdev->bdev);
|
|
|
+@@ -3675,7 +3675,7 @@
|
|
|
+ (unsigned long long)logical_sector);
|
|
|
+
|
|
|
+ sh = get_active_stripe(conf, new_sector, previous,
|
|
|
+- (bi->bi_rw&RWA_MASK), 0);
|
|
|
++ (bi->bi_rw&RWA_MASK));
|
|
|
+ if (sh) {
|
|
|
+ if (unlikely(previous)) {
|
|
|
+ /* expansion might have moved on while waiting for a
|
|
|
+@@ -3873,7 +3873,7 @@
|
|
|
+ for (i = 0; i < reshape_sectors; i += STRIPE_SECTORS) {
|
|
|
+ int j;
|
|
|
+ int skipped = 0;
|
|
|
+- sh = get_active_stripe(conf, stripe_addr+i, 0, 0, 1);
|
|
|
++ sh = get_active_stripe(conf, stripe_addr+i, 0, 0);
|
|
|
+ set_bit(STRIPE_EXPANDING, &sh->state);
|
|
|
+ atomic_inc(&conf->reshape_stripes);
|
|
|
+ /* If any of this stripe is beyond the end of the old
|
|
|
+@@ -3916,13 +3916,13 @@
|
|
|
+ raid5_compute_sector(conf, stripe_addr*(new_data_disks),
|
|
|
+ 1, &dd_idx, NULL);
|
|
|
+ last_sector =
|
|
|
+- raid5_compute_sector(conf, ((stripe_addr+reshape_sectors)
|
|
|
++ raid5_compute_sector(conf, ((stripe_addr+conf->chunk_size/512)
|
|
|
+ *(new_data_disks) - 1),
|
|
|
+ 1, &dd_idx, NULL);
|
|
|
+ if (last_sector >= mddev->dev_sectors)
|
|
|
+ last_sector = mddev->dev_sectors - 1;
|
|
|
+ while (first_sector <= last_sector) {
|
|
|
+- sh = get_active_stripe(conf, first_sector, 1, 0, 1);
|
|
|
++ sh = get_active_stripe(conf, first_sector, 1, 0);
|
|
|
+ set_bit(STRIPE_EXPAND_SOURCE, &sh->state);
|
|
|
+ set_bit(STRIPE_HANDLE, &sh->state);
|
|
|
+ release_stripe(sh);
|
|
|
+@@ -4022,9 +4022,9 @@
|
|
|
+
|
|
|
+ bitmap_cond_end_sync(mddev->bitmap, sector_nr);
|
|
|
+
|
|
|
+- sh = get_active_stripe(conf, sector_nr, 0, 1, 0);
|
|
|
++ sh = get_active_stripe(conf, sector_nr, 0, 1);
|
|
|
+ if (sh == NULL) {
|
|
|
+- sh = get_active_stripe(conf, sector_nr, 0, 0, 0);
|
|
|
++ sh = get_active_stripe(conf, sector_nr, 0, 0);
|
|
|
+ /* make sure we don't swamp the stripe cache if someone else
|
|
|
+ * is trying to get access
|
|
|
+ */
|
|
|
+@@ -4034,7 +4034,7 @@
|
|
|
+ * We don't need to check the 'failed' flag as when that gets set,
|
|
|
+ * recovery aborts.
|
|
|
+ */
|
|
|
+- for (i = 0; i < conf->raid_disks; i++)
|
|
|
++ for (i=0; i<mddev->raid_disks; i++)
|
|
|
+ if (conf->disks[i].rdev == NULL)
|
|
|
+ still_degraded = 1;
|
|
|
+
|
|
|
+@@ -4086,7 +4086,7 @@
|
|
|
+ /* already done this stripe */
|
|
|
+ continue;
|
|
|
+
|
|
|
+- sh = get_active_stripe(conf, sector, 0, 1, 0);
|
|
|
++ sh = get_active_stripe(conf, sector, 0, 1);
|
|
|
+
|
|
|
+ if (!sh) {
|
|
|
+ /* failed to get a stripe - must wait */
|
|
|
+diff -Nur linux-2.6.30/drivers/net/Kconfig rt4ls/drivers/net/Kconfig
|
|
|
+--- linux-2.6.30/drivers/net/Kconfig 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/net/Kconfig 2009-06-12 16:28:08.898195438 +0200
|
|
|
+@@ -2362,6 +2362,13 @@
|
|
|
+ Some boards that use the Discovery chipset are the Momenco
|
|
|
+ Ocelot C and Jaguar ATX and Pegasos II.
|
|
|
+
|
|
|
++config TITAN_GE
|
|
|
++ bool "PMC-Sierra TITAN Gigabit Ethernet Support"
|
|
|
++ depends on PMC_YOSEMITE
|
|
|
++ help
|
|
|
++ This enables support for the the integrated ethernet of
|
|
|
++ PMC-Sierra's Titan SoC.
|
|
|
++
|
|
|
+ config QLA3XXX
|
|
|
+ tristate "QLogic QLA3XXX Network Driver Support"
|
|
|
+ depends on PCI
|
|
|
+diff -Nur linux-2.6.30/drivers/net/Makefile rt4ls/drivers/net/Makefile
|
|
|
+--- linux-2.6.30/drivers/net/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/net/Makefile 2009-06-12 16:28:08.910193335 +0200
|
|
|
+@@ -137,6 +137,8 @@
|
|
|
+ obj-$(CONFIG_QLA3XXX) += qla3xxx.o
|
|
|
+ obj-$(CONFIG_QLGE) += qlge/
|
|
|
+
|
|
|
++obj-$(CONFIG_TITAN_GE) += titan_mdio.o titan_ge.o
|
|
|
++
|
|
|
+ obj-$(CONFIG_PPP) += ppp_generic.o
|
|
|
+ obj-$(CONFIG_PPP_ASYNC) += ppp_async.o
|
|
|
+ obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o
|
|
|
+diff -Nur linux-2.6.30/drivers/net/r8169.c rt4ls/drivers/net/r8169.c
|
|
|
+--- linux-2.6.30/drivers/net/r8169.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/net/r8169.c 2009-06-12 16:28:14.650663877 +0200
|
|
|
+@@ -66,6 +66,7 @@
|
|
|
+ #define RX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
|
|
|
+ #define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
|
|
|
+ #define EarlyTxThld 0x3F /* 0x3F means NO early transmit */
|
|
|
++#define RxPacketMaxSize 0x3FE8 /* 16K - 1 - ETH_HLEN - VLAN - CRC... */
|
|
|
+ #define SafeMtu 0x1c20 /* ... actually life sucks beyond ~7k */
|
|
|
+ #define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */
|
|
|
+
|
|
|
+@@ -2356,10 +2357,10 @@
|
|
|
+ return cmd;
|
|
|
+ }
|
|
|
+
|
|
|
+-static void rtl_set_rx_max_size(void __iomem *ioaddr, unsigned int rx_buf_sz)
|
|
|
++static void rtl_set_rx_max_size(void __iomem *ioaddr)
|
|
|
+ {
|
|
|
+ /* Low hurts. Let's disable the filtering. */
|
|
|
+- RTL_W16(RxMaxSize, rx_buf_sz);
|
|
|
++ RTL_W16(RxMaxSize, 16383);
|
|
|
+ }
|
|
|
+
|
|
|
+ static void rtl8169_set_magic_reg(void __iomem *ioaddr, unsigned mac_version)
|
|
|
+@@ -2406,7 +2407,7 @@
|
|
|
+
|
|
|
+ RTL_W8(EarlyTxThres, EarlyTxThld);
|
|
|
+
|
|
|
+- rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
|
|
|
++ rtl_set_rx_max_size(ioaddr);
|
|
|
+
|
|
|
+ if ((tp->mac_version == RTL_GIGA_MAC_VER_01) ||
|
|
|
+ (tp->mac_version == RTL_GIGA_MAC_VER_02) ||
|
|
|
+@@ -2667,7 +2668,7 @@
|
|
|
+
|
|
|
+ RTL_W8(EarlyTxThres, EarlyTxThld);
|
|
|
+
|
|
|
+- rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
|
|
|
++ rtl_set_rx_max_size(ioaddr);
|
|
|
+
|
|
|
+ tp->cp_cmd |= RTL_R16(CPlusCmd) | PktCntrDisable | INTT_1;
|
|
|
+
|
|
|
+@@ -2845,7 +2846,7 @@
|
|
|
+
|
|
|
+ RTL_W8(EarlyTxThres, EarlyTxThld);
|
|
|
+
|
|
|
+- rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
|
|
|
++ rtl_set_rx_max_size(ioaddr);
|
|
|
+
|
|
|
+ tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW;
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/drivers/net/titan_ge.c rt4ls/drivers/net/titan_ge.c
|
|
|
+--- linux-2.6.30/drivers/net/titan_ge.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/net/titan_ge.c 2009-06-12 16:28:16.835950077 +0200
|
|
|
+@@ -0,0 +1,2069 @@
|
|
|
++/*
|
|
|
++ * drivers/net/titan_ge.c - Driver for Titan ethernet ports
|
|
|
++ *
|
|
|
++ * Copyright (C) 2003 PMC-Sierra Inc.
|
|
|
++ * Author : Manish Lachwani (lachwani@pmc-sierra.com)
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or
|
|
|
++ * modify it under the terms of the GNU General Public License
|
|
|
++ * as published by the Free Software Foundation; either version 2
|
|
|
++ * of the License, or (at your option) any later version.
|
|
|
++ *
|
|
|
++ * This program is distributed in the hope that it will be useful,
|
|
|
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
++ * GNU General Public License for more details.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License
|
|
|
++ * along with this program; if not, write to the Free Software
|
|
|
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
++ */
|
|
|
++
|
|
|
++/*
|
|
|
++ * The MAC unit of the Titan consists of the following:
|
|
|
++ *
|
|
|
++ * -> XDMA Engine to move data to from the memory to the MAC packet FIFO
|
|
|
++ * -> FIFO is where the incoming and outgoing data is placed
|
|
|
++ * -> TRTG is the unit that pulls the data from the FIFO for Tx and pushes
|
|
|
++ * the data into the FIFO for Rx
|
|
|
++ * -> TMAC is the outgoing MAC interface and RMAC is the incoming.
|
|
|
++ * -> AFX is the address filtering block
|
|
|
++ * -> GMII block to communicate with the PHY
|
|
|
++ *
|
|
|
++ * Rx will look like the following:
|
|
|
++ * GMII --> RMAC --> AFX --> TRTG --> Rx FIFO --> XDMA --> CPU memory
|
|
|
++ *
|
|
|
++ * Tx will look like the following:
|
|
|
++ * CPU memory --> XDMA --> Tx FIFO --> TRTG --> TMAC --> GMII
|
|
|
++ *
|
|
|
++ * The Titan driver has support for the following performance features:
|
|
|
++ * -> Rx side checksumming
|
|
|
++ * -> Jumbo Frames
|
|
|
++ * -> Interrupt Coalscing
|
|
|
++ * -> Rx NAPI
|
|
|
++ * -> SKB Recycling
|
|
|
++ * -> Transmit/Receive descriptors in SRAM
|
|
|
++ * -> Fast routing for IP forwarding
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/dma-mapping.h>
|
|
|
++#include <linux/module.h>
|
|
|
++#include <linux/kernel.h>
|
|
|
++#include <linux/sched.h>
|
|
|
++#include <linux/ioport.h>
|
|
|
++#include <linux/interrupt.h>
|
|
|
++#include <linux/slab.h>
|
|
|
++#include <linux/string.h>
|
|
|
++#include <linux/errno.h>
|
|
|
++#include <linux/ip.h>
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/in.h>
|
|
|
++#include <linux/platform_device.h>
|
|
|
++#include <linux/netdevice.h>
|
|
|
++#include <linux/etherdevice.h>
|
|
|
++#include <linux/skbuff.h>
|
|
|
++#include <linux/mii.h>
|
|
|
++#include <linux/delay.h>
|
|
|
++#include <linux/skbuff.h>
|
|
|
++#include <linux/prefetch.h>
|
|
|
++
|
|
|
++/* For MII specifc registers, titan_mdio.h should be included */
|
|
|
++#include <net/ip.h>
|
|
|
++
|
|
|
++#include <asm/bitops.h>
|
|
|
++#include <asm/io.h>
|
|
|
++#include <asm/types.h>
|
|
|
++#include <asm/pgtable.h>
|
|
|
++#include <asm/system.h>
|
|
|
++#include <asm/titan_dep.h>
|
|
|
++
|
|
|
++#include "titan_ge.h"
|
|
|
++#include "titan_mdio.h"
|
|
|
++
|
|
|
++/* Static Function Declarations */
|
|
|
++static int titan_ge_eth_open(struct net_device *);
|
|
|
++static void titan_ge_eth_stop(struct net_device *);
|
|
|
++static struct net_device_stats *titan_ge_get_stats(struct net_device *);
|
|
|
++static int titan_ge_init_rx_desc_ring(titan_ge_port_info *, int, int,
|
|
|
++ unsigned long, unsigned long,
|
|
|
++ unsigned long);
|
|
|
++static int titan_ge_init_tx_desc_ring(titan_ge_port_info *, int,
|
|
|
++ unsigned long, unsigned long);
|
|
|
++
|
|
|
++static int titan_ge_open(struct net_device *);
|
|
|
++static int titan_ge_start_xmit(struct sk_buff *, struct net_device *);
|
|
|
++static int titan_ge_stop(struct net_device *);
|
|
|
++
|
|
|
++static unsigned long titan_ge_tx_coal(unsigned long, int);
|
|
|
++
|
|
|
++static void titan_ge_port_reset(unsigned int);
|
|
|
++static int titan_ge_free_tx_queue(titan_ge_port_info *);
|
|
|
++static int titan_ge_rx_task(struct net_device *, titan_ge_port_info *);
|
|
|
++static int titan_ge_port_start(struct net_device *, titan_ge_port_info *);
|
|
|
++
|
|
|
++static int titan_ge_return_tx_desc(titan_ge_port_info *, int);
|
|
|
++
|
|
|
++/*
|
|
|
++ * Some configuration for the FIFO and the XDMA channel needs
|
|
|
++ * to be done only once for all the ports. This flag controls
|
|
|
++ * that
|
|
|
++ */
|
|
|
++static unsigned long config_done;
|
|
|
++
|
|
|
++/*
|
|
|
++ * One time out of memory flag
|
|
|
++ */
|
|
|
++static unsigned int oom_flag;
|
|
|
++
|
|
|
++static int titan_ge_poll(struct net_device *netdev, int *budget);
|
|
|
++
|
|
|
++static int titan_ge_receive_queue(struct net_device *, unsigned int);
|
|
|
++
|
|
|
++static struct platform_device *titan_ge_device[3];
|
|
|
++
|
|
|
++/* MAC Address */
|
|
|
++extern unsigned char titan_ge_mac_addr_base[6];
|
|
|
++
|
|
|
++unsigned long titan_ge_base;
|
|
|
++static unsigned long titan_ge_sram;
|
|
|
++
|
|
|
++static char titan_string[] = "titan";
|
|
|
++
|
|
|
++/*
|
|
|
++ * The Titan GE has two alignment requirements:
|
|
|
++ * -> skb->data to be cacheline aligned (32 byte)
|
|
|
++ * -> IP header alignment to 16 bytes
|
|
|
++ *
|
|
|
++ * The latter is not implemented. So, that results in an extra copy on
|
|
|
++ * the Rx. This is a big performance hog. For the former case, the
|
|
|
++ * dev_alloc_skb() has been replaced with titan_ge_alloc_skb(). The size
|
|
|
++ * requested is calculated:
|
|
|
++ *
|
|
|
++ * Ethernet Frame Size : 1518
|
|
|
++ * Ethernet Header : 14
|
|
|
++ * Future Titan change for IP header alignment : 2
|
|
|
++ *
|
|
|
++ * Hence, we allocate (1518 + 14 + 2+ 64) = 1580 bytes. For IP header
|
|
|
++ * alignment, we use skb_reserve().
|
|
|
++ */
|
|
|
++
|
|
|
++#define ALIGNED_RX_SKB_ADDR(addr) \
|
|
|
++ ((((unsigned long)(addr) + (64UL - 1UL)) \
|
|
|
++ & ~(64UL - 1UL)) - (unsigned long)(addr))
|
|
|
++
|
|
|
++#define titan_ge_alloc_skb(__length, __gfp_flags) \
|
|
|
++({ struct sk_buff *__skb; \
|
|
|
++ __skb = alloc_skb((__length) + 64, (__gfp_flags)); \
|
|
|
++ if(__skb) { \
|
|
|
++ int __offset = (int) ALIGNED_RX_SKB_ADDR(__skb->data); \
|
|
|
++ if(__offset) \
|
|
|
++ skb_reserve(__skb, __offset); \
|
|
|
++ } \
|
|
|
++ __skb; \
|
|
|
++})
|
|
|
++
|
|
|
++/*
|
|
|
++ * Configure the GMII block of the Titan based on what the PHY tells us
|
|
|
++ */
|
|
|
++static void titan_ge_gmii_config(int port_num)
|
|
|
++{
|
|
|
++ unsigned int reg_data = 0, phy_reg;
|
|
|
++ int err;
|
|
|
++
|
|
|
++ err = titan_ge_mdio_read(port_num, TITAN_GE_MDIO_PHY_STATUS, &phy_reg);
|
|
|
++
|
|
|
++ if (err == TITAN_GE_MDIO_ERROR) {
|
|
|
++ printk(KERN_ERR
|
|
|
++ "Could not read PHY control register 0x11 \n");
|
|
|
++ printk(KERN_ERR
|
|
|
++ "Setting speed to 1000 Mbps and Duplex to Full \n");
|
|
|
++
|
|
|
++ return;
|
|
|
++ }
|
|
|
++
|
|
|
++ err = titan_ge_mdio_write(port_num, TITAN_GE_MDIO_PHY_IE, 0);
|
|
|
++
|
|
|
++ if (phy_reg & 0x8000) {
|
|
|
++ if (phy_reg & 0x2000) {
|
|
|
++ /* Full Duplex and 1000 Mbps */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GMII_CONFIG_MODE +
|
|
|
++ (port_num << 12)), 0x201);
|
|
|
++ } else {
|
|
|
++ /* Half Duplex and 1000 Mbps */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GMII_CONFIG_MODE +
|
|
|
++ (port_num << 12)), 0x2201);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ if (phy_reg & 0x4000) {
|
|
|
++ if (phy_reg & 0x2000) {
|
|
|
++ /* Full Duplex and 100 Mbps */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GMII_CONFIG_MODE +
|
|
|
++ (port_num << 12)), 0x100);
|
|
|
++ } else {
|
|
|
++ /* Half Duplex and 100 Mbps */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GMII_CONFIG_MODE +
|
|
|
++ (port_num << 12)), 0x2100);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_GMII_CONFIG_GENERAL +
|
|
|
++ (port_num << 12));
|
|
|
++ reg_data |= 0x3;
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GMII_CONFIG_GENERAL +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Enable the TMAC if it is not
|
|
|
++ */
|
|
|
++static void titan_ge_enable_tx(unsigned int port_num)
|
|
|
++{
|
|
|
++ unsigned long reg_data;
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TMAC_CONFIG_1 + (port_num << 12));
|
|
|
++ if (!(reg_data & 0x8000)) {
|
|
|
++ printk("TMAC disabled for port %d!! \n", port_num);
|
|
|
++
|
|
|
++ reg_data |= 0x0001; /* Enable TMAC */
|
|
|
++ reg_data |= 0x4000; /* CRC Check Enable */
|
|
|
++ reg_data |= 0x2000; /* Padding enable */
|
|
|
++ reg_data |= 0x0800; /* CRC Add enable */
|
|
|
++ reg_data |= 0x0080; /* PAUSE frame */
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_CONFIG_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Tx Timeout function
|
|
|
++ */
|
|
|
++static void titan_ge_tx_timeout(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++
|
|
|
++ printk(KERN_INFO "%s: TX timeout ", netdev->name);
|
|
|
++ printk(KERN_INFO "Resetting card \n");
|
|
|
++
|
|
|
++ /* Do the reset outside of interrupt context */
|
|
|
++ schedule_work(&titan_ge_eth->tx_timeout_task);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Update the AFX tables for UC and MC for slice 0 only
|
|
|
++ */
|
|
|
++static void titan_ge_update_afx(titan_ge_port_info * titan_ge_eth)
|
|
|
++{
|
|
|
++ int port = titan_ge_eth->port_num;
|
|
|
++ unsigned int i;
|
|
|
++ volatile unsigned long reg_data = 0;
|
|
|
++ u8 p_addr[6];
|
|
|
++
|
|
|
++ memcpy(p_addr, titan_ge_eth->port_mac_addr, 6);
|
|
|
++
|
|
|
++ /* Set the MAC address here for TMAC and RMAC */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_HI + (port << 12)),
|
|
|
++ ((p_addr[5] << 8) | p_addr[4]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_MID + (port << 12)),
|
|
|
++ ((p_addr[3] << 8) | p_addr[2]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_LOW + (port << 12)),
|
|
|
++ ((p_addr[1] << 8) | p_addr[0]));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_HI + (port << 12)),
|
|
|
++ ((p_addr[5] << 8) | p_addr[4]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_MID + (port << 12)),
|
|
|
++ ((p_addr[3] << 8) | p_addr[2]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_LOW + (port << 12)),
|
|
|
++ ((p_addr[1] << 8) | p_addr[0]));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((0x112c | (port << 12)), 0x1);
|
|
|
++ /* Configure the eight address filters */
|
|
|
++ for (i = 0; i < 8; i++) {
|
|
|
++ /* Select each of the eight filters */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_ADDRS_FILTER_CTRL_2 +
|
|
|
++ (port << 12)), i);
|
|
|
++
|
|
|
++ /* Configure the match */
|
|
|
++ reg_data = 0x9; /* Forward Enable Bit */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_ADDRS_FILTER_CTRL_0 +
|
|
|
++ (port << 12)), reg_data);
|
|
|
++
|
|
|
++ /* Finally, AFX Exact Match Address Registers */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_EXACT_MATCH_LOW + (port << 12)),
|
|
|
++ ((p_addr[1] << 8) | p_addr[0]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_EXACT_MATCH_MID + (port << 12)),
|
|
|
++ ((p_addr[3] << 8) | p_addr[2]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_EXACT_MATCH_HIGH + (port << 12)),
|
|
|
++ ((p_addr[5] << 8) | p_addr[4]));
|
|
|
++
|
|
|
++ /* VLAN id set to 0 */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_EXACT_MATCH_VID +
|
|
|
++ (port << 12)), 0);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Actual Routine to reset the adapter when the timeout occurred
|
|
|
++ */
|
|
|
++static void titan_ge_tx_timeout_task(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ int port = titan_ge_eth->port_num;
|
|
|
++
|
|
|
++ printk("Titan GE: Transmit timed out. Resetting ... \n");
|
|
|
++
|
|
|
++ /* Dump debug info */
|
|
|
++ printk(KERN_ERR "TRTG cause : %x \n",
|
|
|
++ TITAN_GE_READ(0x100c + (port << 12)));
|
|
|
++
|
|
|
++ /* Fix this for the other ports */
|
|
|
++ printk(KERN_ERR "FIFO cause : %x \n", TITAN_GE_READ(0x482c));
|
|
|
++ printk(KERN_ERR "IE cause : %x \n", TITAN_GE_READ(0x0040));
|
|
|
++ printk(KERN_ERR "XDMA GDI ERROR : %x \n",
|
|
|
++ TITAN_GE_READ(0x5008 + (port << 8)));
|
|
|
++ printk(KERN_ERR "CHANNEL ERROR: %x \n",
|
|
|
++ TITAN_GE_READ(TITAN_GE_CHANNEL0_INTERRUPT
|
|
|
++ + (port << 8)));
|
|
|
++
|
|
|
++ netif_device_detach(netdev);
|
|
|
++ titan_ge_port_reset(titan_ge_eth->port_num);
|
|
|
++ titan_ge_port_start(netdev, titan_ge_eth);
|
|
|
++ netif_device_attach(netdev);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Change the MTU of the Ethernet Device
|
|
|
++ */
|
|
|
++static int titan_ge_change_mtu(struct net_device *netdev, int new_mtu)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned long flags;
|
|
|
++
|
|
|
++ if ((new_mtu > 9500) || (new_mtu < 64))
|
|
|
++ return -EINVAL;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ netdev->mtu = new_mtu;
|
|
|
++
|
|
|
++ /* Now we have to reopen the interface so that SKBs with the new
|
|
|
++ * size will be allocated */
|
|
|
++
|
|
|
++ if (netif_running(netdev)) {
|
|
|
++ titan_ge_eth_stop(netdev);
|
|
|
++
|
|
|
++ if (titan_ge_eth_open(netdev) != TITAN_OK) {
|
|
|
++ printk(KERN_ERR
|
|
|
++ "%s: Fatal error on opening device\n",
|
|
|
++ netdev->name);
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++ return -1;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Titan Gbe Interrupt Handler. All the three ports send interrupt to one line
|
|
|
++ * only. Once an interrupt is triggered, figure out the port and then check
|
|
|
++ * the channel.
|
|
|
++ */
|
|
|
++static irqreturn_t titan_ge_int_handler(int irq, void *dev_id)
|
|
|
++{
|
|
|
++ struct net_device *netdev = (struct net_device *) dev_id;
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ unsigned int reg_data;
|
|
|
++ unsigned int eth_int_cause_error = 0, is;
|
|
|
++ unsigned long eth_int_cause1;
|
|
|
++ int err = 0;
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ unsigned long eth_int_cause2;
|
|
|
++#endif
|
|
|
++
|
|
|
++ /* Ack the CPU interrupt */
|
|
|
++ switch (port_num) {
|
|
|
++ case 0:
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP0STATUS1);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP0CLEAR1, is);
|
|
|
++
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP1STATUS1);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP1CLEAR1, is);
|
|
|
++#endif
|
|
|
++ break;
|
|
|
++
|
|
|
++ case 1:
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP0STATUS0);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP0CLEAR0, is);
|
|
|
++
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP1STATUS0);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP1CLEAR0, is);
|
|
|
++#endif
|
|
|
++ break;
|
|
|
++
|
|
|
++ case 2:
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP0STATUS4);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP0CLEAR4, is);
|
|
|
++
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ is = OCD_READ(RM9000x2_OCD_INTP1STATUS4);
|
|
|
++ OCD_WRITE(RM9000x2_OCD_INTP1CLEAR4, is);
|
|
|
++#endif
|
|
|
++ }
|
|
|
++
|
|
|
++ eth_int_cause1 = TITAN_GE_READ(TITAN_GE_INTR_XDMA_CORE_A);
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ eth_int_cause2 = TITAN_GE_READ(TITAN_GE_INTR_XDMA_CORE_B);
|
|
|
++#endif
|
|
|
++
|
|
|
++ /* Spurious interrupt */
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ if ( (eth_int_cause1 == 0) && (eth_int_cause2 == 0)) {
|
|
|
++#else
|
|
|
++ if (eth_int_cause1 == 0) {
|
|
|
++#endif
|
|
|
++ eth_int_cause_error = TITAN_GE_READ(TITAN_GE_CHANNEL0_INTERRUPT +
|
|
|
++ (port_num << 8));
|
|
|
++
|
|
|
++ if (eth_int_cause_error == 0)
|
|
|
++ return IRQ_NONE;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Handle Tx first. No need to ack interrupts */
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ if ( (eth_int_cause1 & 0x20202) ||
|
|
|
++ (eth_int_cause2 & 0x20202) )
|
|
|
++#else
|
|
|
++ if (eth_int_cause1 & 0x20202)
|
|
|
++#endif
|
|
|
++ titan_ge_free_tx_queue(titan_ge_eth);
|
|
|
++
|
|
|
++ /* Handle the Rx next */
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ if ( (eth_int_cause1 & 0x10101) ||
|
|
|
++ (eth_int_cause2 & 0x10101)) {
|
|
|
++#else
|
|
|
++ if (eth_int_cause1 & 0x10101) {
|
|
|
++#endif
|
|
|
++ if (netif_rx_schedule_prep(netdev)) {
|
|
|
++ unsigned int ack;
|
|
|
++
|
|
|
++ ack = TITAN_GE_READ(TITAN_GE_INTR_XDMA_IE);
|
|
|
++ /* Disable Tx and Rx both */
|
|
|
++ if (port_num == 0)
|
|
|
++ ack &= ~(0x3);
|
|
|
++ if (port_num == 1)
|
|
|
++ ack &= ~(0x300);
|
|
|
++
|
|
|
++ if (port_num == 2)
|
|
|
++ ack &= ~(0x30000);
|
|
|
++
|
|
|
++ /* Interrupts have been disabled */
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_IE, ack);
|
|
|
++
|
|
|
++ __netif_rx_schedule(netdev);
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Handle error interrupts */
|
|
|
++ if (eth_int_cause_error && (eth_int_cause_error != 0x2)) {
|
|
|
++ printk(KERN_ERR
|
|
|
++ "XDMA Channel Error : %x on port %d\n",
|
|
|
++ eth_int_cause_error, port_num);
|
|
|
++
|
|
|
++ printk(KERN_ERR
|
|
|
++ "XDMA GDI Hardware error : %x on port %d\n",
|
|
|
++ TITAN_GE_READ(0x5008 + (port_num << 8)), port_num);
|
|
|
++
|
|
|
++ printk(KERN_ERR
|
|
|
++ "XDMA currently has %d Rx descriptors \n",
|
|
|
++ TITAN_GE_READ(0x5048 + (port_num << 8)));
|
|
|
++
|
|
|
++ printk(KERN_ERR
|
|
|
++ "XDMA currently has prefetcted %d Rx descriptors \n",
|
|
|
++ TITAN_GE_READ(0x505c + (port_num << 8)));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_INTERRUPT +
|
|
|
++ (port_num << 8)), eth_int_cause_error);
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
++ * PHY interrupt to inform abt the changes. Reading the
|
|
|
++ * PHY Status register will clear the interrupt
|
|
|
++ */
|
|
|
++ if ((!(eth_int_cause1 & 0x30303)) &&
|
|
|
++ (eth_int_cause_error == 0)) {
|
|
|
++ err =
|
|
|
++ titan_ge_mdio_read(port_num,
|
|
|
++ TITAN_GE_MDIO_PHY_IS, ®_data);
|
|
|
++
|
|
|
++ if (reg_data & 0x0400) {
|
|
|
++ /* Link status change */
|
|
|
++ titan_ge_mdio_read(port_num,
|
|
|
++ TITAN_GE_MDIO_PHY_STATUS, ®_data);
|
|
|
++ if (!(reg_data & 0x0400)) {
|
|
|
++ /* Link is down */
|
|
|
++ netif_carrier_off(netdev);
|
|
|
++ netif_stop_queue(netdev);
|
|
|
++ } else {
|
|
|
++ /* Link is up */
|
|
|
++ netif_carrier_on(netdev);
|
|
|
++ netif_wake_queue(netdev);
|
|
|
++
|
|
|
++ /* Enable the queue */
|
|
|
++ titan_ge_enable_tx(port_num);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ return IRQ_HANDLED;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Multicast and Promiscuous mode set. The
|
|
|
++ * set_multi entry point is called whenever the
|
|
|
++ * multicast address list or the network interface
|
|
|
++ * flags are updated.
|
|
|
++ */
|
|
|
++static void titan_ge_set_multi(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ unsigned long reg_data;
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_AFX_ADDRS_FILTER_CTRL_1 +
|
|
|
++ (port_num << 12));
|
|
|
++
|
|
|
++ if (netdev->flags & IFF_PROMISC) {
|
|
|
++ reg_data |= 0x2;
|
|
|
++ }
|
|
|
++ else if (netdev->flags & IFF_ALLMULTI) {
|
|
|
++ reg_data |= 0x01;
|
|
|
++ reg_data |= 0x400; /* Use the 64-bit Multicast Hash bin */
|
|
|
++ }
|
|
|
++ else {
|
|
|
++ reg_data = 0x2;
|
|
|
++ }
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_ADDRS_FILTER_CTRL_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++ if (reg_data & 0x01) {
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_MULTICAST_HASH_LOW +
|
|
|
++ (port_num << 12)), 0xffff);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_MULTICAST_HASH_MIDLOW +
|
|
|
++ (port_num << 12)), 0xffff);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_MULTICAST_HASH_MIDHI +
|
|
|
++ (port_num << 12)), 0xffff);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_AFX_MULTICAST_HASH_HI +
|
|
|
++ (port_num << 12)), 0xffff);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Open the network device
|
|
|
++ */
|
|
|
++static int titan_ge_open(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ unsigned int irq = TITAN_ETH_PORT_IRQ - port_num;
|
|
|
++ int retval;
|
|
|
++
|
|
|
++ retval = request_irq(irq, titan_ge_int_handler,
|
|
|
++ SA_INTERRUPT | SA_SAMPLE_RANDOM , netdev->name, netdev);
|
|
|
++
|
|
|
++ if (retval != 0) {
|
|
|
++ printk(KERN_ERR "Cannot assign IRQ number to TITAN GE \n");
|
|
|
++ return -1;
|
|
|
++ }
|
|
|
++
|
|
|
++ netdev->irq = irq;
|
|
|
++ printk(KERN_INFO "Assigned IRQ %d to port %d\n", irq, port_num);
|
|
|
++
|
|
|
++ spin_lock_irq(&(titan_ge_eth->lock));
|
|
|
++
|
|
|
++ if (titan_ge_eth_open(netdev) != TITAN_OK) {
|
|
|
++ spin_unlock_irq(&(titan_ge_eth->lock));
|
|
|
++ printk("%s: Error opening interface \n", netdev->name);
|
|
|
++ free_irq(netdev->irq, netdev);
|
|
|
++ return -EBUSY;
|
|
|
++ }
|
|
|
++
|
|
|
++ spin_unlock_irq(&(titan_ge_eth->lock));
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Allocate the SKBs for the Rx ring. Also used
|
|
|
++ * for refilling the queue
|
|
|
++ */
|
|
|
++static int titan_ge_rx_task(struct net_device *netdev,
|
|
|
++ titan_ge_port_info *titan_ge_port)
|
|
|
++{
|
|
|
++ struct device *device = &titan_ge_device[titan_ge_port->port_num]->dev;
|
|
|
++ volatile titan_ge_rx_desc *rx_desc;
|
|
|
++ struct sk_buff *skb;
|
|
|
++ int rx_used_desc;
|
|
|
++ int count = 0;
|
|
|
++
|
|
|
++ while (titan_ge_port->rx_ring_skbs < titan_ge_port->rx_ring_size) {
|
|
|
++
|
|
|
++ /* First try to get the skb from the recycler */
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ skb = titan_ge_alloc_skb(TITAN_GE_JUMBO_BUFSIZE, GFP_ATOMIC);
|
|
|
++#else
|
|
|
++ skb = titan_ge_alloc_skb(TITAN_GE_STD_BUFSIZE, GFP_ATOMIC);
|
|
|
++#endif
|
|
|
++ if (unlikely(!skb)) {
|
|
|
++ /* OOM, set the flag */
|
|
|
++ printk("OOM \n");
|
|
|
++ oom_flag = 1;
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ count++;
|
|
|
++ skb->dev = netdev;
|
|
|
++
|
|
|
++ titan_ge_port->rx_ring_skbs++;
|
|
|
++
|
|
|
++ rx_used_desc = titan_ge_port->rx_used_desc_q;
|
|
|
++ rx_desc = &(titan_ge_port->rx_desc_area[rx_used_desc]);
|
|
|
++
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ rx_desc->buffer_addr = dma_map_single(device, skb->data,
|
|
|
++ TITAN_GE_JUMBO_BUFSIZE - 2, DMA_FROM_DEVICE);
|
|
|
++#else
|
|
|
++ rx_desc->buffer_addr = dma_map_single(device, skb->data,
|
|
|
++ TITAN_GE_STD_BUFSIZE - 2, DMA_FROM_DEVICE);
|
|
|
++#endif
|
|
|
++
|
|
|
++ titan_ge_port->rx_skb[rx_used_desc] = skb;
|
|
|
++ rx_desc->cmd_sts = TITAN_GE_RX_BUFFER_OWNED;
|
|
|
++
|
|
|
++ titan_ge_port->rx_used_desc_q =
|
|
|
++ (rx_used_desc + 1) % TITAN_GE_RX_QUEUE;
|
|
|
++ }
|
|
|
++
|
|
|
++ return count;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Actual init of the Tital GE port. There is one register for
|
|
|
++ * the channel configuration
|
|
|
++ */
|
|
|
++static void titan_port_init(struct net_device *netdev,
|
|
|
++ titan_ge_port_info * titan_ge_eth)
|
|
|
++{
|
|
|
++ unsigned long reg_data;
|
|
|
++
|
|
|
++ titan_ge_port_reset(titan_ge_eth->port_num);
|
|
|
++
|
|
|
++ /* First reset the TMAC */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG);
|
|
|
++ reg_data |= 0x80000000;
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_CHANNEL0_CONFIG, reg_data);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG);
|
|
|
++ reg_data &= ~(0xc0000000);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_CHANNEL0_CONFIG, reg_data);
|
|
|
++
|
|
|
++ /* Now reset the RMAC */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG);
|
|
|
++ reg_data |= 0x00080000;
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_CHANNEL0_CONFIG, reg_data);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG);
|
|
|
++ reg_data &= ~(0x000c0000);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_CHANNEL0_CONFIG, reg_data);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Start the port. All the hardware specific configuration
|
|
|
++ * for the XDMA, Tx FIFO, Rx FIFO, TMAC, RMAC, TRTG and AFX
|
|
|
++ * go here
|
|
|
++ */
|
|
|
++static int titan_ge_port_start(struct net_device *netdev,
|
|
|
++ titan_ge_port_info * titan_port)
|
|
|
++{
|
|
|
++ volatile unsigned long reg_data, reg_data1;
|
|
|
++ int port_num = titan_port->port_num;
|
|
|
++ int count = 0;
|
|
|
++ unsigned long reg_data_1;
|
|
|
++
|
|
|
++ if (config_done == 0) {
|
|
|
++ reg_data = TITAN_GE_READ(0x0004);
|
|
|
++ reg_data |= 0x100;
|
|
|
++ TITAN_GE_WRITE(0x0004, reg_data);
|
|
|
++
|
|
|
++ reg_data &= ~(0x100);
|
|
|
++ TITAN_GE_WRITE(0x0004, reg_data);
|
|
|
++
|
|
|
++ /* Turn on GMII/MII mode and turn off TBI mode */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TSB_CTRL_1);
|
|
|
++ reg_data |= 0x00000700;
|
|
|
++ reg_data &= ~(0x00800000); /* Fencing */
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x000c, 0x00001100);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_TSB_CTRL_1, reg_data);
|
|
|
++
|
|
|
++ /* Set the CPU Resource Limit register */
|
|
|
++ TITAN_GE_WRITE(0x00f8, 0x8);
|
|
|
++
|
|
|
++ /* Be conservative when using the BIU buffers */
|
|
|
++ TITAN_GE_WRITE(0x0068, 0x4);
|
|
|
++ }
|
|
|
++
|
|
|
++ titan_port->tx_threshold = 0;
|
|
|
++ titan_port->rx_threshold = 0;
|
|
|
++
|
|
|
++ /* We need to write the descriptors for Tx and Rx */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_TX_DESC + (port_num << 8)),
|
|
|
++ (unsigned long) titan_port->tx_dma);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_RX_DESC + (port_num << 8)),
|
|
|
++ (unsigned long) titan_port->rx_dma);
|
|
|
++
|
|
|
++ if (config_done == 0) {
|
|
|
++ /* Step 1: XDMA config */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_XDMA_CONFIG);
|
|
|
++ reg_data &= ~(0x80000000); /* clear reset */
|
|
|
++ reg_data |= 0x1 << 29; /* sparse tx descriptor spacing */
|
|
|
++ reg_data |= 0x1 << 28; /* sparse rx descriptor spacing */
|
|
|
++ reg_data |= (0x1 << 23) | (0x1 << 24); /* Descriptor Coherency */
|
|
|
++ reg_data |= (0x1 << 21) | (0x1 << 22); /* Data Coherency */
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_XDMA_CONFIG, reg_data);
|
|
|
++ }
|
|
|
++
|
|
|
++ /* IR register for the XDMA */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_GDI_INTERRUPT_ENABLE + (port_num << 8));
|
|
|
++ reg_data |= 0x80068000; /* No Rx_OOD */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_GDI_INTERRUPT_ENABLE + (port_num << 8)), reg_data);
|
|
|
++
|
|
|
++ /* Start the Tx and Rx XDMA controller */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG + (port_num << 8));
|
|
|
++ reg_data &= 0x4fffffff; /* Clear tx reset */
|
|
|
++ reg_data &= 0xfff4ffff; /* Clear rx reset */
|
|
|
++
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ reg_data |= 0xa0 | 0x30030000;
|
|
|
++#else
|
|
|
++ reg_data |= 0x40 | 0x20030000;
|
|
|
++#endif
|
|
|
++
|
|
|
++#ifndef CONFIG_SMP
|
|
|
++ reg_data &= ~(0x10);
|
|
|
++ reg_data |= 0x0f; /* All of the packet */
|
|
|
++#endif
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_CONFIG + (port_num << 8)), reg_data);
|
|
|
++
|
|
|
++ /* Rx desc count */
|
|
|
++ count = titan_ge_rx_task(netdev, titan_port);
|
|
|
++ TITAN_GE_WRITE((0x5048 + (port_num << 8)), count);
|
|
|
++ count = TITAN_GE_READ(0x5048 + (port_num << 8));
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Step 2: Configure the SDQPF, i.e. FIFO
|
|
|
++ */
|
|
|
++ if (config_done == 0) {
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_RXFIFO_CTL);
|
|
|
++ reg_data = 0x1;
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_RXFIFO_CTL, reg_data);
|
|
|
++ reg_data &= ~(0x1);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_RXFIFO_CTL, reg_data);
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_RXFIFO_CTL);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_RXFIFO_CTL, reg_data);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_TXFIFO_CTL);
|
|
|
++ reg_data = 0x1;
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_CTL, reg_data);
|
|
|
++ reg_data &= ~(0x1);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_CTL, reg_data);
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_TXFIFO_CTL);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_CTL, reg_data);
|
|
|
++ }
|
|
|
++ /*
|
|
|
++ * Enable RX FIFO 0, 4 and 8
|
|
|
++ */
|
|
|
++ if (port_num == 0) {
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_RXFIFO_0);
|
|
|
++
|
|
|
++ reg_data |= 0x100000;
|
|
|
++ reg_data |= (0xff << 10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_RXFIFO_0, reg_data);
|
|
|
++ /*
|
|
|
++ * BAV2,BAV and DAV settings for the Rx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x4844);
|
|
|
++ reg_data1 |= ( (0x10 << 20) | (0x10 << 10) | 0x1);
|
|
|
++ TITAN_GE_WRITE(0x4844, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_RXFIFO_0, reg_data);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_SDQPF_TXFIFO_0);
|
|
|
++ reg_data |= 0x100000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_0, reg_data);
|
|
|
++
|
|
|
++ reg_data |= (0xff << 10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_0, reg_data);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * BAV2, BAV and DAV settings for the Tx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x4944);
|
|
|
++ reg_data1 = ( (0x1 << 20) | (0x1 << 10) | 0x10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4944, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_SDQPF_TXFIFO_0, reg_data);
|
|
|
++
|
|
|
++ }
|
|
|
++
|
|
|
++ if (port_num == 1) {
|
|
|
++ reg_data = TITAN_GE_READ(0x4870);
|
|
|
++
|
|
|
++ reg_data |= 0x100000;
|
|
|
++ reg_data |= (0xff << 10) | (0xff + 1);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4870, reg_data);
|
|
|
++ /*
|
|
|
++ * BAV2,BAV and DAV settings for the Rx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x4874);
|
|
|
++ reg_data1 |= ( (0x10 << 20) | (0x10 << 10) | 0x1);
|
|
|
++ TITAN_GE_WRITE(0x4874, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4870, reg_data);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(0x494c);
|
|
|
++ reg_data |= 0x100000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x494c, reg_data);
|
|
|
++ reg_data |= (0xff << 10) | (0xff + 1);
|
|
|
++ TITAN_GE_WRITE(0x494c, reg_data);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * BAV2, BAV and DAV settings for the Tx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x4950);
|
|
|
++ reg_data1 = ( (0x1 << 20) | (0x1 << 10) | 0x10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4950, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x494c, reg_data);
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Titan 1.2 revision does support port #2
|
|
|
++ */
|
|
|
++ if (port_num == 2) {
|
|
|
++ /*
|
|
|
++ * Put the descriptors in the SRAM
|
|
|
++ */
|
|
|
++ reg_data = TITAN_GE_READ(0x48a0);
|
|
|
++
|
|
|
++ reg_data |= 0x100000;
|
|
|
++ reg_data |= (0xff << 10) | (2*(0xff + 1));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x48a0, reg_data);
|
|
|
++ /*
|
|
|
++ * BAV2,BAV and DAV settings for the Rx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x48a4);
|
|
|
++ reg_data1 |= ( (0x10 << 20) | (0x10 << 10) | 0x1);
|
|
|
++ TITAN_GE_WRITE(0x48a4, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x48a0, reg_data);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(0x4958);
|
|
|
++ reg_data |= 0x100000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++ reg_data |= (0xff << 10) | (2*(0xff + 1));
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * BAV2, BAV and DAV settings for the Tx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x495c);
|
|
|
++ reg_data1 = ( (0x1 << 20) | (0x1 << 10) | 0x10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x495c, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++ }
|
|
|
++
|
|
|
++ if (port_num == 2) {
|
|
|
++ reg_data = TITAN_GE_READ(0x48a0);
|
|
|
++
|
|
|
++ reg_data |= 0x100000;
|
|
|
++ reg_data |= (0xff << 10) | (2*(0xff + 1));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x48a0, reg_data);
|
|
|
++ /*
|
|
|
++ * BAV2,BAV and DAV settings for the Rx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x48a4);
|
|
|
++ reg_data1 |= ( (0x10 << 20) | (0x10 << 10) | 0x1);
|
|
|
++ TITAN_GE_WRITE(0x48a4, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x48a0, reg_data);
|
|
|
++
|
|
|
++ reg_data = TITAN_GE_READ(0x4958);
|
|
|
++ reg_data |= 0x100000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++ reg_data |= (0xff << 10) | (2*(0xff + 1));
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * BAV2, BAV and DAV settings for the Tx FIFO
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(0x495c);
|
|
|
++ reg_data1 = ( (0x1 << 20) | (0x1 << 10) | 0x10);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x495c, reg_data1);
|
|
|
++
|
|
|
++ reg_data &= ~(0x00100000);
|
|
|
++ reg_data |= 0x200000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(0x4958, reg_data);
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Step 3: TRTG block enable
|
|
|
++ */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TRTG_CONFIG + (port_num << 12));
|
|
|
++
|
|
|
++ /*
|
|
|
++ * This is the 1.2 revision of the chip. It has fix for the
|
|
|
++ * IP header alignment. Now, the IP header begins at an
|
|
|
++ * aligned address and this wont need an extra copy in the
|
|
|
++ * driver. This performance drawback existed in the previous
|
|
|
++ * versions of the silicon
|
|
|
++ */
|
|
|
++ reg_data_1 = TITAN_GE_READ(0x103c + (port_num << 12));
|
|
|
++ reg_data_1 |= 0x40000000;
|
|
|
++ TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
|
|
|
++
|
|
|
++ reg_data_1 |= 0x04000000;
|
|
|
++ TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
|
|
|
++
|
|
|
++ mdelay(5);
|
|
|
++
|
|
|
++ reg_data_1 &= ~(0x04000000);
|
|
|
++ TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
|
|
|
++
|
|
|
++ mdelay(5);
|
|
|
++
|
|
|
++ reg_data |= 0x0001;
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TRTG_CONFIG + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Step 4: Start the Tx activity
|
|
|
++ */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_CONFIG_2 + (port_num << 12)), 0xe197);
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ TITAN_GE_WRITE((0x1258 + (port_num << 12)), 0x4000);
|
|
|
++#endif
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TMAC_CONFIG_1 + (port_num << 12));
|
|
|
++ reg_data |= 0x0001; /* Enable TMAC */
|
|
|
++ reg_data |= 0x6c70; /* PAUSE also set */
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_CONFIG_1 + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /* Destination Address drop bit */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_RMAC_CONFIG_2 + (port_num << 12));
|
|
|
++ reg_data |= 0x218; /* DA_DROP bit and pause */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_CONFIG_2 + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((0x1218 + (port_num << 12)), 0x3);
|
|
|
++
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ TITAN_GE_WRITE((0x1208 + (port_num << 12)), 0x4000);
|
|
|
++#endif
|
|
|
++ /* Start the Rx activity */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_RMAC_CONFIG_1 + (port_num << 12));
|
|
|
++ reg_data |= 0x0001; /* RMAC Enable */
|
|
|
++ reg_data |= 0x0010; /* CRC Check enable */
|
|
|
++ reg_data |= 0x0040; /* Min Frame check enable */
|
|
|
++ reg_data |= 0x4400; /* Max Frame check enable */
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_CONFIG_1 + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Enable the Interrupts for Tx and Rx
|
|
|
++ */
|
|
|
++ reg_data1 = TITAN_GE_READ(TITAN_GE_INTR_XDMA_IE);
|
|
|
++
|
|
|
++ if (port_num == 0) {
|
|
|
++ reg_data1 |= 0x3;
|
|
|
++#ifdef CONFIG_SMP
|
|
|
++ TITAN_GE_WRITE(0x0038, 0x003);
|
|
|
++#else
|
|
|
++ TITAN_GE_WRITE(0x0038, 0x303);
|
|
|
++#endif
|
|
|
++ }
|
|
|
++
|
|
|
++ if (port_num == 1) {
|
|
|
++ reg_data1 |= 0x300;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (port_num == 2)
|
|
|
++ reg_data1 |= 0x30000;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_IE, reg_data1);
|
|
|
++ TITAN_GE_WRITE(0x003c, 0x300);
|
|
|
++
|
|
|
++ if (config_done == 0) {
|
|
|
++ TITAN_GE_WRITE(0x0024, 0x04000024); /* IRQ vector */
|
|
|
++ TITAN_GE_WRITE(0x0020, 0x000fb000); /* INTMSG base */
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Priority */
|
|
|
++ reg_data = TITAN_GE_READ(0x1038 + (port_num << 12));
|
|
|
++ reg_data &= ~(0x00f00000);
|
|
|
++ TITAN_GE_WRITE((0x1038 + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ /* Step 5: GMII config */
|
|
|
++ titan_ge_gmii_config(port_num);
|
|
|
++
|
|
|
++ if (config_done == 0) {
|
|
|
++ TITAN_GE_WRITE(0x1a80, 0);
|
|
|
++ config_done = 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Function to queue the packet for the Ethernet device
|
|
|
++ */
|
|
|
++static void titan_ge_tx_queue(titan_ge_port_info * titan_ge_eth,
|
|
|
++ struct sk_buff * skb)
|
|
|
++{
|
|
|
++ struct device *device = &titan_ge_device[titan_ge_eth->port_num]->dev;
|
|
|
++ unsigned int curr_desc = titan_ge_eth->tx_curr_desc_q;
|
|
|
++ volatile titan_ge_tx_desc *tx_curr;
|
|
|
++ int port_num = titan_ge_eth->port_num;
|
|
|
++
|
|
|
++ tx_curr = &(titan_ge_eth->tx_desc_area[curr_desc]);
|
|
|
++ tx_curr->buffer_addr =
|
|
|
++ dma_map_single(device, skb->data, skb_headlen(skb),
|
|
|
++ DMA_TO_DEVICE);
|
|
|
++
|
|
|
++ titan_ge_eth->tx_skb[curr_desc] = (struct sk_buff *) skb;
|
|
|
++ tx_curr->buffer_len = skb_headlen(skb);
|
|
|
++
|
|
|
++ /* Last descriptor enables interrupt and changes ownership */
|
|
|
++ tx_curr->cmd_sts = 0x1 | (1 << 15) | (1 << 5);
|
|
|
++
|
|
|
++ /* Kick the XDMA to start the transfer from memory to the FIFO */
|
|
|
++ TITAN_GE_WRITE((0x5044 + (port_num << 8)), 0x1);
|
|
|
++
|
|
|
++ /* Current descriptor updated */
|
|
|
++ titan_ge_eth->tx_curr_desc_q = (curr_desc + 1) % TITAN_GE_TX_QUEUE;
|
|
|
++
|
|
|
++ /* Prefetch the next descriptor */
|
|
|
++ prefetch((const void *)
|
|
|
++ &titan_ge_eth->tx_desc_area[titan_ge_eth->tx_curr_desc_q]);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Actually does the open of the Ethernet device
|
|
|
++ */
|
|
|
++static int titan_ge_eth_open(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ struct device *device = &titan_ge_device[port_num]->dev;
|
|
|
++ unsigned long reg_data;
|
|
|
++ unsigned int phy_reg;
|
|
|
++ int err = 0;
|
|
|
++
|
|
|
++ /* Stop the Rx activity */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_RMAC_CONFIG_1 + (port_num << 12));
|
|
|
++ reg_data &= ~(0x00000001);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_CONFIG_1 + (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ /* Clear the port interrupts */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_INTERRUPT + (port_num << 8)), 0x0);
|
|
|
++
|
|
|
++ if (config_done == 0) {
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_CORE_A, 0);
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_CORE_B, 0);
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Set the MAC Address */
|
|
|
++ memcpy(titan_ge_eth->port_mac_addr, netdev->dev_addr, 6);
|
|
|
++
|
|
|
++ if (config_done == 0)
|
|
|
++ titan_port_init(netdev, titan_ge_eth);
|
|
|
++
|
|
|
++ titan_ge_update_afx(titan_ge_eth);
|
|
|
++
|
|
|
++ /* Allocate the Tx ring now */
|
|
|
++ titan_ge_eth->tx_ring_skbs = 0;
|
|
|
++ titan_ge_eth->tx_ring_size = TITAN_GE_TX_QUEUE;
|
|
|
++
|
|
|
++ /* Allocate space in the SRAM for the descriptors */
|
|
|
++ titan_ge_eth->tx_desc_area = (titan_ge_tx_desc *)
|
|
|
++ (titan_ge_sram + TITAN_TX_RING_BYTES * port_num);
|
|
|
++ titan_ge_eth->tx_dma = TITAN_SRAM_BASE + TITAN_TX_RING_BYTES * port_num;
|
|
|
++
|
|
|
++ if (!titan_ge_eth->tx_desc_area) {
|
|
|
++ printk(KERN_ERR
|
|
|
++ "%s: Cannot allocate Tx Ring (size %d bytes) for port %d\n",
|
|
|
++ netdev->name, TITAN_TX_RING_BYTES, port_num);
|
|
|
++ return -ENOMEM;
|
|
|
++ }
|
|
|
++
|
|
|
++ memset(titan_ge_eth->tx_desc_area, 0, titan_ge_eth->tx_desc_area_size);
|
|
|
++
|
|
|
++ /* Now initialize the Tx descriptor ring */
|
|
|
++ titan_ge_init_tx_desc_ring(titan_ge_eth,
|
|
|
++ titan_ge_eth->tx_ring_size,
|
|
|
++ (unsigned long) titan_ge_eth->tx_desc_area,
|
|
|
++ (unsigned long) titan_ge_eth->tx_dma);
|
|
|
++
|
|
|
++ /* Allocate the Rx ring now */
|
|
|
++ titan_ge_eth->rx_ring_size = TITAN_GE_RX_QUEUE;
|
|
|
++ titan_ge_eth->rx_ring_skbs = 0;
|
|
|
++
|
|
|
++ titan_ge_eth->rx_desc_area =
|
|
|
++ (titan_ge_rx_desc *)(titan_ge_sram + 0x1000 + TITAN_RX_RING_BYTES * port_num);
|
|
|
++
|
|
|
++ titan_ge_eth->rx_dma = TITAN_SRAM_BASE + 0x1000 + TITAN_RX_RING_BYTES * port_num;
|
|
|
++
|
|
|
++ if (!titan_ge_eth->rx_desc_area) {
|
|
|
++ printk(KERN_ERR "%s: Cannot allocate Rx Ring (size %d bytes)\n",
|
|
|
++ netdev->name, TITAN_RX_RING_BYTES);
|
|
|
++
|
|
|
++ printk(KERN_ERR "%s: Freeing previously allocated TX queues...",
|
|
|
++ netdev->name);
|
|
|
++
|
|
|
++ dma_free_coherent(device, titan_ge_eth->tx_desc_area_size,
|
|
|
++ (void *) titan_ge_eth->tx_desc_area,
|
|
|
++ titan_ge_eth->tx_dma);
|
|
|
++
|
|
|
++ return -ENOMEM;
|
|
|
++ }
|
|
|
++
|
|
|
++ memset(titan_ge_eth->rx_desc_area, 0, titan_ge_eth->rx_desc_area_size);
|
|
|
++
|
|
|
++ /* Now initialize the Rx ring */
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++ if ((titan_ge_init_rx_desc_ring
|
|
|
++ (titan_ge_eth, titan_ge_eth->rx_ring_size, TITAN_GE_JUMBO_BUFSIZE,
|
|
|
++ (unsigned long) titan_ge_eth->rx_desc_area, 0,
|
|
|
++ (unsigned long) titan_ge_eth->rx_dma)) == 0)
|
|
|
++#else
|
|
|
++ if ((titan_ge_init_rx_desc_ring
|
|
|
++ (titan_ge_eth, titan_ge_eth->rx_ring_size, TITAN_GE_STD_BUFSIZE,
|
|
|
++ (unsigned long) titan_ge_eth->rx_desc_area, 0,
|
|
|
++ (unsigned long) titan_ge_eth->rx_dma)) == 0)
|
|
|
++#endif
|
|
|
++ panic("%s: Error initializing RX Ring\n", netdev->name);
|
|
|
++
|
|
|
++ /* Fill the Rx ring with the SKBs */
|
|
|
++ titan_ge_port_start(netdev, titan_ge_eth);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Check if Interrupt Coalscing needs to be turned on. The
|
|
|
++ * values specified in the register is multiplied by
|
|
|
++ * (8 x 64 nanoseconds) to determine when an interrupt should
|
|
|
++ * be sent to the CPU.
|
|
|
++ */
|
|
|
++
|
|
|
++ if (TITAN_GE_TX_COAL) {
|
|
|
++ titan_ge_eth->tx_int_coal =
|
|
|
++ titan_ge_tx_coal(TITAN_GE_TX_COAL, port_num);
|
|
|
++ }
|
|
|
++
|
|
|
++ err = titan_ge_mdio_read(port_num, TITAN_GE_MDIO_PHY_STATUS, &phy_reg);
|
|
|
++ if (err == TITAN_GE_MDIO_ERROR) {
|
|
|
++ printk(KERN_ERR
|
|
|
++ "Could not read PHY control register 0x11 \n");
|
|
|
++ return TITAN_ERROR;
|
|
|
++ }
|
|
|
++ if (!(phy_reg & 0x0400)) {
|
|
|
++ netif_carrier_off(netdev);
|
|
|
++ netif_stop_queue(netdev);
|
|
|
++ return TITAN_ERROR;
|
|
|
++ } else {
|
|
|
++ netif_carrier_on(netdev);
|
|
|
++ netif_start_queue(netdev);
|
|
|
++ }
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Queue the packet for Tx. Currently no support for zero copy,
|
|
|
++ * checksum offload and Scatter Gather. The chip does support
|
|
|
++ * Scatter Gather only. But, that wont help here since zero copy
|
|
|
++ * requires support for Tx checksumming also.
|
|
|
++ */
|
|
|
++int titan_ge_start_xmit(struct sk_buff *skb, struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned long flags;
|
|
|
++ struct net_device_stats *stats;
|
|
|
++//printk("titan_ge_start_xmit\n");
|
|
|
++
|
|
|
++ stats = &titan_ge_eth->stats;
|
|
|
++ spin_lock_irqsave(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ if ((TITAN_GE_TX_QUEUE - titan_ge_eth->tx_ring_skbs) <=
|
|
|
++ (skb_shinfo(skb)->nr_frags + 1)) {
|
|
|
++ netif_stop_queue(netdev);
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++ printk(KERN_ERR "Tx OOD \n");
|
|
|
++ return 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ titan_ge_tx_queue(titan_ge_eth, skb);
|
|
|
++ titan_ge_eth->tx_ring_skbs++;
|
|
|
++
|
|
|
++ if (TITAN_GE_TX_QUEUE <= (titan_ge_eth->tx_ring_skbs + 4)) {
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++ titan_ge_free_tx_queue(titan_ge_eth);
|
|
|
++ spin_lock_irqsave(&titan_ge_eth->lock, flags);
|
|
|
++ }
|
|
|
++
|
|
|
++ stats->tx_bytes += skb->len;
|
|
|
++ stats->tx_packets++;
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ netdev->trans_start = jiffies;
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Actually does the Rx. Rx side checksumming supported.
|
|
|
++ */
|
|
|
++static int titan_ge_rx(struct net_device *netdev, int port_num,
|
|
|
++ titan_ge_port_info * titan_ge_port,
|
|
|
++ titan_ge_packet * packet)
|
|
|
++{
|
|
|
++ int rx_curr_desc, rx_used_desc;
|
|
|
++ volatile titan_ge_rx_desc *rx_desc;
|
|
|
++
|
|
|
++ rx_curr_desc = titan_ge_port->rx_curr_desc_q;
|
|
|
++ rx_used_desc = titan_ge_port->rx_used_desc_q;
|
|
|
++
|
|
|
++ if (((rx_curr_desc + 1) % TITAN_GE_RX_QUEUE) == rx_used_desc)
|
|
|
++ return TITAN_ERROR;
|
|
|
++
|
|
|
++ rx_desc = &(titan_ge_port->rx_desc_area[rx_curr_desc]);
|
|
|
++
|
|
|
++ if (rx_desc->cmd_sts & TITAN_GE_RX_BUFFER_OWNED)
|
|
|
++ return TITAN_ERROR;
|
|
|
++
|
|
|
++ packet->skb = titan_ge_port->rx_skb[rx_curr_desc];
|
|
|
++ packet->len = (rx_desc->cmd_sts & 0x7fff);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * At this point, we dont know if the checksumming
|
|
|
++ * actually helps relieve CPU. So, keep it for
|
|
|
++ * port 0 only
|
|
|
++ */
|
|
|
++ packet->checksum = ntohs((rx_desc->buffer & 0xffff0000) >> 16);
|
|
|
++ packet->cmd_sts = rx_desc->cmd_sts;
|
|
|
++
|
|
|
++ titan_ge_port->rx_curr_desc_q = (rx_curr_desc + 1) % TITAN_GE_RX_QUEUE;
|
|
|
++
|
|
|
++ /* Prefetch the next descriptor */
|
|
|
++ prefetch((const void *)
|
|
|
++ &titan_ge_port->rx_desc_area[titan_ge_port->rx_curr_desc_q + 1]);
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Free the Tx queue of the used SKBs
|
|
|
++ */
|
|
|
++static int titan_ge_free_tx_queue(titan_ge_port_info *titan_ge_eth)
|
|
|
++{
|
|
|
++ unsigned long flags;
|
|
|
++
|
|
|
++ /* Take the lock */
|
|
|
++ spin_lock_irqsave(&(titan_ge_eth->lock), flags);
|
|
|
++
|
|
|
++ while (titan_ge_return_tx_desc(titan_ge_eth, titan_ge_eth->port_num) == 0)
|
|
|
++ if (titan_ge_eth->tx_ring_skbs != 1)
|
|
|
++ titan_ge_eth->tx_ring_skbs--;
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Threshold beyond which we do the cleaning of
|
|
|
++ * Tx queue and new allocation for the Rx
|
|
|
++ * queue
|
|
|
++ */
|
|
|
++#define TX_THRESHOLD 4
|
|
|
++#define RX_THRESHOLD 10
|
|
|
++
|
|
|
++/*
|
|
|
++ * Receive the packets and send it to the kernel.
|
|
|
++ */
|
|
|
++static int titan_ge_receive_queue(struct net_device *netdev, unsigned int max)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ titan_ge_packet packet;
|
|
|
++ struct net_device_stats *stats;
|
|
|
++ struct sk_buff *skb;
|
|
|
++ unsigned long received_packets = 0;
|
|
|
++ unsigned int ack;
|
|
|
++
|
|
|
++ stats = &titan_ge_eth->stats;
|
|
|
++
|
|
|
++ while ((--max)
|
|
|
++ && (titan_ge_rx(netdev, port_num, titan_ge_eth, &packet) == TITAN_OK)) {
|
|
|
++ skb = (struct sk_buff *) packet.skb;
|
|
|
++
|
|
|
++ titan_ge_eth->rx_ring_skbs--;
|
|
|
++
|
|
|
++ if (--titan_ge_eth->rx_work_limit < 0)
|
|
|
++ break;
|
|
|
++ received_packets++;
|
|
|
++
|
|
|
++ stats->rx_packets++;
|
|
|
++ stats->rx_bytes += packet.len;
|
|
|
++
|
|
|
++ if ((packet.cmd_sts & TITAN_GE_RX_PERR) ||
|
|
|
++ (packet.cmd_sts & TITAN_GE_RX_OVERFLOW_ERROR) ||
|
|
|
++ (packet.cmd_sts & TITAN_GE_RX_TRUNC) ||
|
|
|
++ (packet.cmd_sts & TITAN_GE_RX_CRC_ERROR)) {
|
|
|
++ stats->rx_dropped++;
|
|
|
++ dev_kfree_skb_any(skb);
|
|
|
++
|
|
|
++ continue;
|
|
|
++ }
|
|
|
++ /*
|
|
|
++ * Either support fast path or slow path. Decision
|
|
|
++ * making can really slow down the performance. The
|
|
|
++ * idea is to cut down the number of checks and improve
|
|
|
++ * the fastpath.
|
|
|
++ */
|
|
|
++
|
|
|
++ skb_put(skb, packet.len - 2);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Increment data pointer by two since thats where
|
|
|
++ * the MAC starts
|
|
|
++ */
|
|
|
++ skb_reserve(skb, 2);
|
|
|
++ skb->protocol = eth_type_trans(skb, netdev);
|
|
|
++ netif_receive_skb(skb);
|
|
|
++
|
|
|
++ if (titan_ge_eth->rx_threshold > RX_THRESHOLD) {
|
|
|
++ ack = titan_ge_rx_task(netdev, titan_ge_eth);
|
|
|
++ TITAN_GE_WRITE((0x5048 + (port_num << 8)), ack);
|
|
|
++ titan_ge_eth->rx_threshold = 0;
|
|
|
++ } else
|
|
|
++ titan_ge_eth->rx_threshold++;
|
|
|
++
|
|
|
++ if (titan_ge_eth->tx_threshold > TX_THRESHOLD) {
|
|
|
++ titan_ge_eth->tx_threshold = 0;
|
|
|
++ titan_ge_free_tx_queue(titan_ge_eth);
|
|
|
++ }
|
|
|
++ else
|
|
|
++ titan_ge_eth->tx_threshold++;
|
|
|
++
|
|
|
++ }
|
|
|
++ return received_packets;
|
|
|
++}
|
|
|
++
|
|
|
++
|
|
|
++/*
|
|
|
++ * Enable the Rx side interrupts
|
|
|
++ */
|
|
|
++static void titan_ge_enable_int(unsigned int port_num,
|
|
|
++ titan_ge_port_info *titan_ge_eth,
|
|
|
++ struct net_device *netdev)
|
|
|
++{
|
|
|
++ unsigned long reg_data = TITAN_GE_READ(TITAN_GE_INTR_XDMA_IE);
|
|
|
++
|
|
|
++ if (port_num == 0)
|
|
|
++ reg_data |= 0x3;
|
|
|
++ if (port_num == 1)
|
|
|
++ reg_data |= 0x300;
|
|
|
++ if (port_num == 2)
|
|
|
++ reg_data |= 0x30000;
|
|
|
++
|
|
|
++ /* Re-enable interrupts */
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_IE, reg_data);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Main function to handle the polling for Rx side NAPI.
|
|
|
++ * Receive interrupts have been disabled at this point.
|
|
|
++ * The poll schedules the transmit followed by receive.
|
|
|
++ */
|
|
|
++static int titan_ge_poll(struct net_device *netdev, int *budget)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ int port_num = titan_ge_eth->port_num;
|
|
|
++ int work_done = 0;
|
|
|
++ unsigned long flags, status;
|
|
|
++
|
|
|
++ titan_ge_eth->rx_work_limit = *budget;
|
|
|
++ if (titan_ge_eth->rx_work_limit > netdev->quota)
|
|
|
++ titan_ge_eth->rx_work_limit = netdev->quota;
|
|
|
++
|
|
|
++ do {
|
|
|
++ /* Do the transmit cleaning work here */
|
|
|
++ titan_ge_free_tx_queue(titan_ge_eth);
|
|
|
++
|
|
|
++ /* Ack the Rx interrupts */
|
|
|
++ if (port_num == 0)
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_CORE_A, 0x3);
|
|
|
++ if (port_num == 1)
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_CORE_A, 0x300);
|
|
|
++ if (port_num == 2)
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_CORE_A, 0x30000);
|
|
|
++
|
|
|
++ work_done += titan_ge_receive_queue(netdev, 0);
|
|
|
++
|
|
|
++ /* Out of quota and there is work to be done */
|
|
|
++ if (titan_ge_eth->rx_work_limit < 0)
|
|
|
++ goto not_done;
|
|
|
++
|
|
|
++ /* Receive alloc_skb could lead to OOM */
|
|
|
++ if (oom_flag == 1) {
|
|
|
++ oom_flag = 0;
|
|
|
++ goto oom;
|
|
|
++ }
|
|
|
++
|
|
|
++ status = TITAN_GE_READ(TITAN_GE_INTR_XDMA_CORE_A);
|
|
|
++ } while (status & 0x30300);
|
|
|
++
|
|
|
++ /* If we are here, then no more interrupts to process */
|
|
|
++ goto done;
|
|
|
++
|
|
|
++not_done:
|
|
|
++ *budget -= work_done;
|
|
|
++ netdev->quota -= work_done;
|
|
|
++ return 1;
|
|
|
++
|
|
|
++oom:
|
|
|
++ printk(KERN_ERR "OOM \n");
|
|
|
++ netif_rx_complete(netdev);
|
|
|
++ return 0;
|
|
|
++
|
|
|
++done:
|
|
|
++ /*
|
|
|
++ * No more packets on the poll list. Turn the interrupts
|
|
|
++ * back on and we should be able to catch the new
|
|
|
++ * packets in the interrupt handler
|
|
|
++ */
|
|
|
++ if (!work_done)
|
|
|
++ work_done = 1;
|
|
|
++
|
|
|
++ *budget -= work_done;
|
|
|
++ netdev->quota -= work_done;
|
|
|
++
|
|
|
++ spin_lock_irqsave(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ /* Remove us from the poll list */
|
|
|
++ netif_rx_complete(netdev);
|
|
|
++
|
|
|
++ /* Re-enable interrupts */
|
|
|
++ titan_ge_enable_int(port_num, titan_ge_eth, netdev);
|
|
|
++
|
|
|
++ spin_unlock_irqrestore(&titan_ge_eth->lock, flags);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Close the network device
|
|
|
++ */
|
|
|
++int titan_ge_stop(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++
|
|
|
++ spin_lock_irq(&(titan_ge_eth->lock));
|
|
|
++ titan_ge_eth_stop(netdev);
|
|
|
++ free_irq(netdev->irq, netdev);
|
|
|
++ spin_unlock_irq(&titan_ge_eth->lock);
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Free the Tx ring
|
|
|
++ */
|
|
|
++static void titan_ge_free_tx_rings(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ unsigned int curr;
|
|
|
++ unsigned long reg_data;
|
|
|
++
|
|
|
++ /* Stop the Tx DMA */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG +
|
|
|
++ (port_num << 8));
|
|
|
++ reg_data |= 0xc0000000;
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_CONFIG +
|
|
|
++ (port_num << 8)), reg_data);
|
|
|
++
|
|
|
++ /* Disable the TMAC */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TMAC_CONFIG_1 +
|
|
|
++ (port_num << 12));
|
|
|
++ reg_data &= ~(0x00000001);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_CONFIG_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ for (curr = 0;
|
|
|
++ (titan_ge_eth->tx_ring_skbs) && (curr < TITAN_GE_TX_QUEUE);
|
|
|
++ curr++) {
|
|
|
++ if (titan_ge_eth->tx_skb[curr]) {
|
|
|
++ dev_kfree_skb(titan_ge_eth->tx_skb[curr]);
|
|
|
++ titan_ge_eth->tx_ring_skbs--;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ if (titan_ge_eth->tx_ring_skbs != 0)
|
|
|
++ printk
|
|
|
++ ("%s: Error on Tx descriptor free - could not free %d"
|
|
|
++ " descriptors\n", netdev->name,
|
|
|
++ titan_ge_eth->tx_ring_skbs);
|
|
|
++
|
|
|
++#ifndef TITAN_RX_RING_IN_SRAM
|
|
|
++ dma_free_coherent(&titan_ge_device[port_num]->dev,
|
|
|
++ titan_ge_eth->tx_desc_area_size,
|
|
|
++ (void *) titan_ge_eth->tx_desc_area,
|
|
|
++ titan_ge_eth->tx_dma);
|
|
|
++#endif
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Free the Rx ring
|
|
|
++ */
|
|
|
++static void titan_ge_free_rx_rings(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ unsigned int curr;
|
|
|
++ unsigned long reg_data;
|
|
|
++
|
|
|
++ /* Stop the Rx DMA */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_CHANNEL0_CONFIG +
|
|
|
++ (port_num << 8));
|
|
|
++ reg_data |= 0x000c0000;
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_CHANNEL0_CONFIG +
|
|
|
++ (port_num << 8)), reg_data);
|
|
|
++
|
|
|
++ /* Disable the RMAC */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_RMAC_CONFIG_1 +
|
|
|
++ (port_num << 12));
|
|
|
++ reg_data &= ~(0x00000001);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_CONFIG_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ for (curr = 0;
|
|
|
++ titan_ge_eth->rx_ring_skbs && (curr < TITAN_GE_RX_QUEUE);
|
|
|
++ curr++) {
|
|
|
++ if (titan_ge_eth->rx_skb[curr]) {
|
|
|
++ dev_kfree_skb(titan_ge_eth->rx_skb[curr]);
|
|
|
++ titan_ge_eth->rx_ring_skbs--;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ if (titan_ge_eth->rx_ring_skbs != 0)
|
|
|
++ printk(KERN_ERR
|
|
|
++ "%s: Error in freeing Rx Ring. %d skb's still"
|
|
|
++ " stuck in RX Ring - ignoring them\n", netdev->name,
|
|
|
++ titan_ge_eth->rx_ring_skbs);
|
|
|
++
|
|
|
++#ifndef TITAN_RX_RING_IN_SRAM
|
|
|
++ dma_free_coherent(&titan_ge_device[port_num]->dev,
|
|
|
++ titan_ge_eth->rx_desc_area_size,
|
|
|
++ (void *) titan_ge_eth->rx_desc_area,
|
|
|
++ titan_ge_eth->rx_dma);
|
|
|
++#endif
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Actually does the stop of the Ethernet device
|
|
|
++ */
|
|
|
++static void titan_ge_eth_stop(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++
|
|
|
++ netif_stop_queue(netdev);
|
|
|
++
|
|
|
++ titan_ge_port_reset(titan_ge_eth->port_num);
|
|
|
++
|
|
|
++ titan_ge_free_tx_rings(netdev);
|
|
|
++ titan_ge_free_rx_rings(netdev);
|
|
|
++
|
|
|
++ /* Disable the Tx and Rx Interrupts for all channels */
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INTR_XDMA_IE, 0x0);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Update the MAC address. Note that we have to write the
|
|
|
++ * address in three station registers, 16 bits each. And this
|
|
|
++ * has to be done for TMAC and RMAC
|
|
|
++ */
|
|
|
++static void titan_ge_update_mac_address(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++ unsigned int port_num = titan_ge_eth->port_num;
|
|
|
++ u8 p_addr[6];
|
|
|
++
|
|
|
++ memcpy(titan_ge_eth->port_mac_addr, netdev->dev_addr, 6);
|
|
|
++ memcpy(p_addr, netdev->dev_addr, 6);
|
|
|
++
|
|
|
++ /* Update the Address Filtering Match tables */
|
|
|
++ titan_ge_update_afx(titan_ge_eth);
|
|
|
++
|
|
|
++ printk("Station MAC : %d %d %d %d %d %d \n",
|
|
|
++ p_addr[5], p_addr[4], p_addr[3],
|
|
|
++ p_addr[2], p_addr[1], p_addr[0]);
|
|
|
++
|
|
|
++ /* Set the MAC address here for TMAC and RMAC */
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_HI + (port_num << 12)),
|
|
|
++ ((p_addr[5] << 8) | p_addr[4]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_MID + (port_num << 12)),
|
|
|
++ ((p_addr[3] << 8) | p_addr[2]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_STATION_LOW + (port_num << 12)),
|
|
|
++ ((p_addr[1] << 8) | p_addr[0]));
|
|
|
++
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_HI + (port_num << 12)),
|
|
|
++ ((p_addr[5] << 8) | p_addr[4]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_MID + (port_num << 12)),
|
|
|
++ ((p_addr[3] << 8) | p_addr[2]));
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_STATION_LOW + (port_num << 12)),
|
|
|
++ ((p_addr[1] << 8) | p_addr[0]));
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Set the MAC address of the Ethernet device
|
|
|
++ */
|
|
|
++static int titan_ge_set_mac_address(struct net_device *dev, void *addr)
|
|
|
++{
|
|
|
++ titan_ge_port_info *tp = netdev_priv(dev);
|
|
|
++ struct sockaddr *sa = addr;
|
|
|
++
|
|
|
++ memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
|
|
|
++
|
|
|
++ spin_lock_irq(&tp->lock);
|
|
|
++ titan_ge_update_mac_address(dev);
|
|
|
++ spin_unlock_irq(&tp->lock);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Get the Ethernet device stats
|
|
|
++ */
|
|
|
++static struct net_device_stats *titan_ge_get_stats(struct net_device *netdev)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth = netdev_priv(netdev);
|
|
|
++
|
|
|
++ return &titan_ge_eth->stats;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize the Rx descriptor ring for the Titan Ge
|
|
|
++ */
|
|
|
++static int titan_ge_init_rx_desc_ring(titan_ge_port_info * titan_eth_port,
|
|
|
++ int rx_desc_num,
|
|
|
++ int rx_buff_size,
|
|
|
++ unsigned long rx_desc_base_addr,
|
|
|
++ unsigned long rx_buff_base_addr,
|
|
|
++ unsigned long rx_dma)
|
|
|
++{
|
|
|
++ volatile titan_ge_rx_desc *rx_desc;
|
|
|
++ unsigned long buffer_addr;
|
|
|
++ int index;
|
|
|
++ unsigned long titan_ge_rx_desc_bus = rx_dma;
|
|
|
++
|
|
|
++ buffer_addr = rx_buff_base_addr;
|
|
|
++ rx_desc = (titan_ge_rx_desc *) rx_desc_base_addr;
|
|
|
++
|
|
|
++ /* Check alignment */
|
|
|
++ if (rx_buff_base_addr & 0xF)
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ /* Check Rx buffer size */
|
|
|
++ if ((rx_buff_size < 8) || (rx_buff_size > TITAN_GE_MAX_RX_BUFFER))
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ /* 64-bit alignment
|
|
|
++ if ((rx_buff_base_addr + rx_buff_size) & 0x7)
|
|
|
++ return 0; */
|
|
|
++
|
|
|
++ /* Initialize the Rx desc ring */
|
|
|
++ for (index = 0; index < rx_desc_num; index++) {
|
|
|
++ titan_ge_rx_desc_bus += sizeof(titan_ge_rx_desc);
|
|
|
++ rx_desc[index].cmd_sts = 0;
|
|
|
++ rx_desc[index].buffer_addr = buffer_addr;
|
|
|
++ titan_eth_port->rx_skb[index] = NULL;
|
|
|
++ buffer_addr += rx_buff_size;
|
|
|
++ }
|
|
|
++
|
|
|
++ titan_eth_port->rx_curr_desc_q = 0;
|
|
|
++ titan_eth_port->rx_used_desc_q = 0;
|
|
|
++
|
|
|
++ titan_eth_port->rx_desc_area = (titan_ge_rx_desc *) rx_desc_base_addr;
|
|
|
++ titan_eth_port->rx_desc_area_size =
|
|
|
++ rx_desc_num * sizeof(titan_ge_rx_desc);
|
|
|
++
|
|
|
++ titan_eth_port->rx_dma = rx_dma;
|
|
|
++
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize the Tx descriptor ring. Descriptors in the SRAM
|
|
|
++ */
|
|
|
++static int titan_ge_init_tx_desc_ring(titan_ge_port_info * titan_ge_port,
|
|
|
++ int tx_desc_num,
|
|
|
++ unsigned long tx_desc_base_addr,
|
|
|
++ unsigned long tx_dma)
|
|
|
++{
|
|
|
++ titan_ge_tx_desc *tx_desc;
|
|
|
++ int index;
|
|
|
++ unsigned long titan_ge_tx_desc_bus = tx_dma;
|
|
|
++
|
|
|
++ if (tx_desc_base_addr & 0xF)
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ tx_desc = (titan_ge_tx_desc *) tx_desc_base_addr;
|
|
|
++
|
|
|
++ for (index = 0; index < tx_desc_num; index++) {
|
|
|
++ titan_ge_port->tx_dma_array[index] =
|
|
|
++ (dma_addr_t) titan_ge_tx_desc_bus;
|
|
|
++ titan_ge_tx_desc_bus += sizeof(titan_ge_tx_desc);
|
|
|
++ tx_desc[index].cmd_sts = 0x0000;
|
|
|
++ tx_desc[index].buffer_len = 0;
|
|
|
++ tx_desc[index].buffer_addr = 0x00000000;
|
|
|
++ titan_ge_port->tx_skb[index] = NULL;
|
|
|
++ }
|
|
|
++
|
|
|
++ titan_ge_port->tx_curr_desc_q = 0;
|
|
|
++ titan_ge_port->tx_used_desc_q = 0;
|
|
|
++
|
|
|
++ titan_ge_port->tx_desc_area = (titan_ge_tx_desc *) tx_desc_base_addr;
|
|
|
++ titan_ge_port->tx_desc_area_size =
|
|
|
++ tx_desc_num * sizeof(titan_ge_tx_desc);
|
|
|
++
|
|
|
++ titan_ge_port->tx_dma = tx_dma;
|
|
|
++ return TITAN_OK;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize the device as an Ethernet device
|
|
|
++ */
|
|
|
++static int __init titan_ge_probe(struct device *device)
|
|
|
++{
|
|
|
++ titan_ge_port_info *titan_ge_eth;
|
|
|
++ struct net_device *netdev;
|
|
|
++ int port = to_platform_device(device)->id;
|
|
|
++ int err;
|
|
|
++
|
|
|
++ netdev = alloc_etherdev(sizeof(titan_ge_port_info));
|
|
|
++ if (!netdev) {
|
|
|
++ err = -ENODEV;
|
|
|
++ goto out;
|
|
|
++ }
|
|
|
++
|
|
|
++ netdev->open = titan_ge_open;
|
|
|
++ netdev->stop = titan_ge_stop;
|
|
|
++ netdev->hard_start_xmit = titan_ge_start_xmit;
|
|
|
++ netdev->get_stats = titan_ge_get_stats;
|
|
|
++ netdev->set_multicast_list = titan_ge_set_multi;
|
|
|
++ netdev->set_mac_address = titan_ge_set_mac_address;
|
|
|
++
|
|
|
++ /* Tx timeout */
|
|
|
++ netdev->tx_timeout = titan_ge_tx_timeout;
|
|
|
++ netdev->watchdog_timeo = 2 * HZ;
|
|
|
++
|
|
|
++ /* Set these to very high values */
|
|
|
++ netdev->poll = titan_ge_poll;
|
|
|
++ netdev->weight = 64;
|
|
|
++
|
|
|
++ netdev->tx_queue_len = TITAN_GE_TX_QUEUE;
|
|
|
++ netif_carrier_off(netdev);
|
|
|
++ netdev->base_addr = 0;
|
|
|
++
|
|
|
++ netdev->change_mtu = titan_ge_change_mtu;
|
|
|
++
|
|
|
++ titan_ge_eth = netdev_priv(netdev);
|
|
|
++ /* Allocation of memory for the driver structures */
|
|
|
++
|
|
|
++ titan_ge_eth->port_num = port;
|
|
|
++
|
|
|
++ /* Configure the Tx timeout handler */
|
|
|
++ INIT_WORK(&titan_ge_eth->tx_timeout_task,
|
|
|
++ (void (*)(void *)) titan_ge_tx_timeout_task, netdev);
|
|
|
++
|
|
|
++ spin_lock_init(&titan_ge_eth->lock);
|
|
|
++
|
|
|
++ /* set MAC addresses */
|
|
|
++ memcpy(netdev->dev_addr, titan_ge_mac_addr_base, 6);
|
|
|
++ netdev->dev_addr[5] += port;
|
|
|
++
|
|
|
++ err = register_netdev(netdev);
|
|
|
++
|
|
|
++ if (err)
|
|
|
++ goto out_free_netdev;
|
|
|
++
|
|
|
++ printk(KERN_NOTICE
|
|
|
++ "%s: port %d with MAC address %02x:%02x:%02x:%02x:%02x:%02x\n",
|
|
|
++ netdev->name, port, netdev->dev_addr[0],
|
|
|
++ netdev->dev_addr[1], netdev->dev_addr[2],
|
|
|
++ netdev->dev_addr[3], netdev->dev_addr[4],
|
|
|
++ netdev->dev_addr[5]);
|
|
|
++
|
|
|
++ printk(KERN_NOTICE "Rx NAPI supported, Tx Coalescing ON \n");
|
|
|
++
|
|
|
++ return 0;
|
|
|
++
|
|
|
++out_free_netdev:
|
|
|
++ kfree(netdev);
|
|
|
++
|
|
|
++out:
|
|
|
++ return err;
|
|
|
++}
|
|
|
++
|
|
|
++static void __devexit titan_device_remove(struct device *device)
|
|
|
++{
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Reset the Ethernet port
|
|
|
++ */
|
|
|
++static void titan_ge_port_reset(unsigned int port_num)
|
|
|
++{
|
|
|
++ unsigned int reg_data;
|
|
|
++
|
|
|
++ /* Stop the Tx port activity */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_TMAC_CONFIG_1 +
|
|
|
++ (port_num << 12));
|
|
|
++ reg_data &= ~(0x0001);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_TMAC_CONFIG_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ /* Stop the Rx port activity */
|
|
|
++ reg_data = TITAN_GE_READ(TITAN_GE_RMAC_CONFIG_1 +
|
|
|
++ (port_num << 12));
|
|
|
++ reg_data &= ~(0x0001);
|
|
|
++ TITAN_GE_WRITE((TITAN_GE_RMAC_CONFIG_1 +
|
|
|
++ (port_num << 12)), reg_data);
|
|
|
++
|
|
|
++ return;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Return the Tx desc after use by the XDMA
|
|
|
++ */
|
|
|
++static int titan_ge_return_tx_desc(titan_ge_port_info * titan_ge_eth, int port)
|
|
|
++{
|
|
|
++ int tx_desc_used;
|
|
|
++ struct sk_buff *skb;
|
|
|
++
|
|
|
++ tx_desc_used = titan_ge_eth->tx_used_desc_q;
|
|
|
++
|
|
|
++ /* return right away */
|
|
|
++ if (tx_desc_used == titan_ge_eth->tx_curr_desc_q)
|
|
|
++ return TITAN_ERROR;
|
|
|
++
|
|
|
++ /* Now the critical stuff */
|
|
|
++ skb = titan_ge_eth->tx_skb[tx_desc_used];
|
|
|
++
|
|
|
++ dev_kfree_skb_any(skb);
|
|
|
++
|
|
|
++ titan_ge_eth->tx_skb[tx_desc_used] = NULL;
|
|
|
++ titan_ge_eth->tx_used_desc_q =
|
|
|
++ (tx_desc_used + 1) % TITAN_GE_TX_QUEUE;
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Coalescing for the Tx path
|
|
|
++ */
|
|
|
++static unsigned long titan_ge_tx_coal(unsigned long delay, int port)
|
|
|
++{
|
|
|
++ unsigned long rx_delay;
|
|
|
++
|
|
|
++ rx_delay = TITAN_GE_READ(TITAN_GE_INT_COALESCING);
|
|
|
++ delay = (delay << 16) | rx_delay;
|
|
|
++
|
|
|
++ TITAN_GE_WRITE(TITAN_GE_INT_COALESCING, delay);
|
|
|
++ TITAN_GE_WRITE(0x5038, delay);
|
|
|
++
|
|
|
++ return delay;
|
|
|
++}
|
|
|
++
|
|
|
++static struct device_driver titan_soc_driver = {
|
|
|
++ .name = titan_string,
|
|
|
++ .bus = &platform_bus_type,
|
|
|
++ .probe = titan_ge_probe,
|
|
|
++ .remove = __devexit_p(titan_device_remove),
|
|
|
++};
|
|
|
++
|
|
|
++static void titan_platform_release (struct device *device)
|
|
|
++{
|
|
|
++ struct platform_device *pldev;
|
|
|
++
|
|
|
++ /* free device */
|
|
|
++ pldev = to_platform_device (device);
|
|
|
++ kfree (pldev);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Register the Titan GE with the kernel
|
|
|
++ */
|
|
|
++static int __init titan_ge_init_module(void)
|
|
|
++{
|
|
|
++ struct platform_device *pldev;
|
|
|
++ unsigned int version, device;
|
|
|
++ int i;
|
|
|
++
|
|
|
++ printk(KERN_NOTICE
|
|
|
++ "PMC-Sierra TITAN 10/100/1000 Ethernet Driver \n");
|
|
|
++
|
|
|
++ titan_ge_base = (unsigned long) ioremap(TITAN_GE_BASE, TITAN_GE_SIZE);
|
|
|
++ if (!titan_ge_base) {
|
|
|
++ printk("Mapping Titan GE failed\n");
|
|
|
++ goto out;
|
|
|
++ }
|
|
|
++
|
|
|
++ device = TITAN_GE_READ(TITAN_GE_DEVICE_ID);
|
|
|
++ version = (device & 0x000f0000) >> 16;
|
|
|
++ device &= 0x0000ffff;
|
|
|
++
|
|
|
++ printk(KERN_NOTICE "Device Id : %x, Version : %x \n", device, version);
|
|
|
++
|
|
|
++#ifdef TITAN_RX_RING_IN_SRAM
|
|
|
++ titan_ge_sram = (unsigned long) ioremap(TITAN_SRAM_BASE,
|
|
|
++ TITAN_SRAM_SIZE);
|
|
|
++ if (!titan_ge_sram) {
|
|
|
++ printk("Mapping Titan SRAM failed\n");
|
|
|
++ goto out_unmap_ge;
|
|
|
++ }
|
|
|
++#endif
|
|
|
++
|
|
|
++ if (driver_register(&titan_soc_driver)) {
|
|
|
++ printk(KERN_ERR "Driver registration failed\n");
|
|
|
++ goto out_unmap_sram;
|
|
|
++ }
|
|
|
++
|
|
|
++ for (i = 0; i < 3; i++) {
|
|
|
++ titan_ge_device[i] = NULL;
|
|
|
++
|
|
|
++ if (!(pldev = kmalloc (sizeof (*pldev), GFP_KERNEL)))
|
|
|
++ continue;
|
|
|
++
|
|
|
++ memset (pldev, 0, sizeof (*pldev));
|
|
|
++ pldev->name = titan_string;
|
|
|
++ pldev->id = i;
|
|
|
++ pldev->dev.release = titan_platform_release;
|
|
|
++ titan_ge_device[i] = pldev;
|
|
|
++
|
|
|
++ if (platform_device_register (pldev)) {
|
|
|
++ kfree (pldev);
|
|
|
++ titan_ge_device[i] = NULL;
|
|
|
++ continue;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (!pldev->dev.driver) {
|
|
|
++ /*
|
|
|
++ * The driver was not bound to this device, there was
|
|
|
++ * no hardware at this address. Unregister it, as the
|
|
|
++ * release fuction will take care of freeing the
|
|
|
++ * allocated structure
|
|
|
++ */
|
|
|
++ titan_ge_device[i] = NULL;
|
|
|
++ platform_device_unregister (pldev);
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ return 0;
|
|
|
++
|
|
|
++out_unmap_sram:
|
|
|
++ iounmap((void *)titan_ge_sram);
|
|
|
++
|
|
|
++out_unmap_ge:
|
|
|
++ iounmap((void *)titan_ge_base);
|
|
|
++
|
|
|
++out:
|
|
|
++ return -ENOMEM;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Unregister the Titan GE from the kernel
|
|
|
++ */
|
|
|
++static void __exit titan_ge_cleanup_module(void)
|
|
|
++{
|
|
|
++ int i;
|
|
|
++
|
|
|
++ driver_unregister(&titan_soc_driver);
|
|
|
++
|
|
|
++ for (i = 0; i < 3; i++) {
|
|
|
++ if (titan_ge_device[i]) {
|
|
|
++ platform_device_unregister (titan_ge_device[i]);
|
|
|
++ titan_ge_device[i] = NULL;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ iounmap((void *)titan_ge_sram);
|
|
|
++ iounmap((void *)titan_ge_base);
|
|
|
++}
|
|
|
++
|
|
|
++MODULE_AUTHOR("Manish Lachwani <lachwani@pmc-sierra.com>");
|
|
|
++MODULE_DESCRIPTION("Titan GE Ethernet driver");
|
|
|
++MODULE_LICENSE("GPL");
|
|
|
++
|
|
|
++module_init(titan_ge_init_module);
|
|
|
++module_exit(titan_ge_cleanup_module);
|
|
|
+diff -Nur linux-2.6.30/drivers/net/titan_ge.h rt4ls/drivers/net/titan_ge.h
|
|
|
+--- linux-2.6.30/drivers/net/titan_ge.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/net/titan_ge.h 2009-06-12 16:28:16.835950077 +0200
|
|
|
+@@ -0,0 +1,415 @@
|
|
|
++#ifndef _TITAN_GE_H_
|
|
|
++#define _TITAN_GE_H_
|
|
|
++
|
|
|
++#include <linux/module.h>
|
|
|
++#include <linux/kernel.h>
|
|
|
++#include <linux/spinlock.h>
|
|
|
++#include <asm/byteorder.h>
|
|
|
++
|
|
|
++/*
|
|
|
++ * These functions should be later moved to a more generic location since there
|
|
|
++ * will be others accessing it also
|
|
|
++ */
|
|
|
++
|
|
|
++/*
|
|
|
++ * This is the way it works: LKB5 Base is at 0x0128. TITAN_BASE is defined in
|
|
|
++ * include/asm/titan_dep.h. TITAN_GE_BASE is the value in the TITAN_GE_LKB5
|
|
|
++ * register.
|
|
|
++ */
|
|
|
++
|
|
|
++#define TITAN_GE_BASE 0xfe000000UL
|
|
|
++#define TITAN_GE_SIZE 0x10000UL
|
|
|
++
|
|
|
++extern unsigned long titan_ge_base;
|
|
|
++
|
|
|
++#define TITAN_GE_WRITE(offset, data) \
|
|
|
++ *(volatile u32 *)(titan_ge_base + (offset)) = (data)
|
|
|
++
|
|
|
++#define TITAN_GE_READ(offset) *(volatile u32 *)(titan_ge_base + (offset))
|
|
|
++
|
|
|
++#ifndef msec_delay
|
|
|
++#define msec_delay(x) do { if(in_interrupt()) { \
|
|
|
++ /* Don't mdelay in interrupt context! */ \
|
|
|
++ BUG(); \
|
|
|
++ } else { \
|
|
|
++ set_current_state(TASK_UNINTERRUPTIBLE); \
|
|
|
++ schedule_timeout((x * HZ)/1000); \
|
|
|
++ } } while(0)
|
|
|
++#endif
|
|
|
++
|
|
|
++#define TITAN_GE_PORT_0
|
|
|
++
|
|
|
++#define TITAN_SRAM_BASE ((OCD_READ(RM9000x2_OCD_LKB13) & ~1) << 4)
|
|
|
++#define TITAN_SRAM_SIZE 0x2000UL
|
|
|
++
|
|
|
++/*
|
|
|
++ * We may need these constants
|
|
|
++ */
|
|
|
++#define TITAN_BIT0 0x00000001
|
|
|
++#define TITAN_BIT1 0x00000002
|
|
|
++#define TITAN_BIT2 0x00000004
|
|
|
++#define TITAN_BIT3 0x00000008
|
|
|
++#define TITAN_BIT4 0x00000010
|
|
|
++#define TITAN_BIT5 0x00000020
|
|
|
++#define TITAN_BIT6 0x00000040
|
|
|
++#define TITAN_BIT7 0x00000080
|
|
|
++#define TITAN_BIT8 0x00000100
|
|
|
++#define TITAN_BIT9 0x00000200
|
|
|
++#define TITAN_BIT10 0x00000400
|
|
|
++#define TITAN_BIT11 0x00000800
|
|
|
++#define TITAN_BIT12 0x00001000
|
|
|
++#define TITAN_BIT13 0x00002000
|
|
|
++#define TITAN_BIT14 0x00004000
|
|
|
++#define TITAN_BIT15 0x00008000
|
|
|
++#define TITAN_BIT16 0x00010000
|
|
|
++#define TITAN_BIT17 0x00020000
|
|
|
++#define TITAN_BIT18 0x00040000
|
|
|
++#define TITAN_BIT19 0x00080000
|
|
|
++#define TITAN_BIT20 0x00100000
|
|
|
++#define TITAN_BIT21 0x00200000
|
|
|
++#define TITAN_BIT22 0x00400000
|
|
|
++#define TITAN_BIT23 0x00800000
|
|
|
++#define TITAN_BIT24 0x01000000
|
|
|
++#define TITAN_BIT25 0x02000000
|
|
|
++#define TITAN_BIT26 0x04000000
|
|
|
++#define TITAN_BIT27 0x08000000
|
|
|
++#define TITAN_BIT28 0x10000000
|
|
|
++#define TITAN_BIT29 0x20000000
|
|
|
++#define TITAN_BIT30 0x40000000
|
|
|
++#define TITAN_BIT31 0x80000000
|
|
|
++
|
|
|
++/* Flow Control */
|
|
|
++#define TITAN_GE_FC_NONE 0x0
|
|
|
++#define TITAN_GE_FC_FULL 0x1
|
|
|
++#define TITAN_GE_FC_TX_PAUSE 0x2
|
|
|
++#define TITAN_GE_FC_RX_PAUSE 0x3
|
|
|
++
|
|
|
++/* Duplex Settings */
|
|
|
++#define TITAN_GE_FULL_DUPLEX 0x1
|
|
|
++#define TITAN_GE_HALF_DUPLEX 0x2
|
|
|
++
|
|
|
++/* Speed settings */
|
|
|
++#define TITAN_GE_SPEED_1000 0x1
|
|
|
++#define TITAN_GE_SPEED_100 0x2
|
|
|
++#define TITAN_GE_SPEED_10 0x3
|
|
|
++
|
|
|
++/* Debugging info only */
|
|
|
++#undef TITAN_DEBUG
|
|
|
++
|
|
|
++/* Keep the rings in the Titan's SSRAM */
|
|
|
++#define TITAN_RX_RING_IN_SRAM
|
|
|
++
|
|
|
++#ifdef CONFIG_64BIT
|
|
|
++#define TITAN_GE_IE_MASK 0xfffffffffb001b64
|
|
|
++#define TITAN_GE_IE_STATUS 0xfffffffffb001b60
|
|
|
++#else
|
|
|
++#define TITAN_GE_IE_MASK 0xfb001b64
|
|
|
++#define TITAN_GE_IE_STATUS 0xfb001b60
|
|
|
++#endif
|
|
|
++
|
|
|
++/* Support for Jumbo Frames */
|
|
|
++#undef TITAN_GE_JUMBO_FRAMES
|
|
|
++
|
|
|
++/* Rx buffer size */
|
|
|
++#ifdef TITAN_GE_JUMBO_FRAMES
|
|
|
++#define TITAN_GE_JUMBO_BUFSIZE 9080
|
|
|
++#else
|
|
|
++#define TITAN_GE_STD_BUFSIZE 1580
|
|
|
++#endif
|
|
|
++
|
|
|
++/*
|
|
|
++ * Tx and Rx Interrupt Coalescing parameter. These values are
|
|
|
++ * for 1 Ghz processor. Rx coalescing can be taken care of
|
|
|
++ * by NAPI. NAPI is adaptive and hence useful. Tx coalescing
|
|
|
++ * is not adaptive. Hence, these values need to be adjusted
|
|
|
++ * based on load, CPU speed etc.
|
|
|
++ */
|
|
|
++#define TITAN_GE_RX_COAL 150
|
|
|
++#define TITAN_GE_TX_COAL 300
|
|
|
++
|
|
|
++#if defined(__BIG_ENDIAN)
|
|
|
++
|
|
|
++/* Define the Rx descriptor */
|
|
|
++typedef struct eth_rx_desc {
|
|
|
++ u32 reserved; /* Unused */
|
|
|
++ u32 buffer_addr; /* CPU buffer address */
|
|
|
++ u32 cmd_sts; /* Command and Status */
|
|
|
++ u32 buffer; /* XDMA buffer address */
|
|
|
++} titan_ge_rx_desc;
|
|
|
++
|
|
|
++/* Define the Tx descriptor */
|
|
|
++typedef struct eth_tx_desc {
|
|
|
++ u16 cmd_sts; /* Command, Status and Buffer count */
|
|
|
++ u16 buffer_len; /* Length of the buffer */
|
|
|
++ u32 buffer_addr; /* Physical address of the buffer */
|
|
|
++} titan_ge_tx_desc;
|
|
|
++
|
|
|
++#elif defined(__LITTLE_ENDIAN)
|
|
|
++
|
|
|
++/* Define the Rx descriptor */
|
|
|
++typedef struct eth_rx_desc {
|
|
|
++ u32 buffer_addr; /* CPU buffer address */
|
|
|
++ u32 reserved; /* Unused */
|
|
|
++ u32 buffer; /* XDMA buffer address */
|
|
|
++ u32 cmd_sts; /* Command and Status */
|
|
|
++} titan_ge_rx_desc;
|
|
|
++
|
|
|
++/* Define the Tx descriptor */
|
|
|
++typedef struct eth_tx_desc {
|
|
|
++ u32 buffer_addr; /* Physical address of the buffer */
|
|
|
++ u16 buffer_len; /* Length of the buffer */
|
|
|
++ u16 cmd_sts; /* Command, Status and Buffer count */
|
|
|
++} titan_ge_tx_desc;
|
|
|
++#endif
|
|
|
++
|
|
|
++/* Default Tx Queue Size */
|
|
|
++#define TITAN_GE_TX_QUEUE 128
|
|
|
++#define TITAN_TX_RING_BYTES (TITAN_GE_TX_QUEUE * sizeof(struct eth_tx_desc))
|
|
|
++
|
|
|
++/* Default Rx Queue Size */
|
|
|
++#define TITAN_GE_RX_QUEUE 64
|
|
|
++#define TITAN_RX_RING_BYTES (TITAN_GE_RX_QUEUE * sizeof(struct eth_rx_desc))
|
|
|
++
|
|
|
++/* Packet Structure */
|
|
|
++typedef struct _pkt_info {
|
|
|
++ unsigned int len;
|
|
|
++ unsigned int cmd_sts;
|
|
|
++ unsigned int buffer;
|
|
|
++ struct sk_buff *skb;
|
|
|
++ unsigned int checksum;
|
|
|
++} titan_ge_packet;
|
|
|
++
|
|
|
++
|
|
|
++#define PHYS_CNT 3
|
|
|
++
|
|
|
++/* Titan Port specific data structure */
|
|
|
++typedef struct _eth_port_ctrl {
|
|
|
++ unsigned int port_num;
|
|
|
++ u8 port_mac_addr[6];
|
|
|
++
|
|
|
++ /* Rx descriptor pointers */
|
|
|
++ int rx_curr_desc_q, rx_used_desc_q;
|
|
|
++
|
|
|
++ /* Tx descriptor pointers */
|
|
|
++ int tx_curr_desc_q, tx_used_desc_q;
|
|
|
++
|
|
|
++ /* Rx descriptor area */
|
|
|
++ volatile titan_ge_rx_desc *rx_desc_area;
|
|
|
++ unsigned int rx_desc_area_size;
|
|
|
++ struct sk_buff* rx_skb[TITAN_GE_RX_QUEUE];
|
|
|
++
|
|
|
++ /* Tx Descriptor area */
|
|
|
++ volatile titan_ge_tx_desc *tx_desc_area;
|
|
|
++ unsigned int tx_desc_area_size;
|
|
|
++ struct sk_buff* tx_skb[TITAN_GE_TX_QUEUE];
|
|
|
++
|
|
|
++ /* Timeout task */
|
|
|
++ struct work_struct tx_timeout_task;
|
|
|
++
|
|
|
++ /* DMA structures and handles */
|
|
|
++ dma_addr_t tx_dma;
|
|
|
++ dma_addr_t rx_dma;
|
|
|
++ dma_addr_t tx_dma_array[TITAN_GE_TX_QUEUE];
|
|
|
++
|
|
|
++ /* Device lock */
|
|
|
++ spinlock_t lock;
|
|
|
++
|
|
|
++ unsigned int tx_ring_skbs;
|
|
|
++ unsigned int rx_ring_size;
|
|
|
++ unsigned int tx_ring_size;
|
|
|
++ unsigned int rx_ring_skbs;
|
|
|
++
|
|
|
++ struct net_device_stats stats;
|
|
|
++
|
|
|
++ /* Tx and Rx coalescing */
|
|
|
++ unsigned long rx_int_coal;
|
|
|
++ unsigned long tx_int_coal;
|
|
|
++
|
|
|
++ /* Threshold for replenishing the Rx and Tx rings */
|
|
|
++ unsigned int tx_threshold;
|
|
|
++ unsigned int rx_threshold;
|
|
|
++
|
|
|
++ /* NAPI work limit */
|
|
|
++ unsigned int rx_work_limit;
|
|
|
++} titan_ge_port_info;
|
|
|
++
|
|
|
++/* Titan specific constants */
|
|
|
++#define TITAN_ETH_PORT_IRQ 3
|
|
|
++
|
|
|
++/* Max Rx buffer */
|
|
|
++#define TITAN_GE_MAX_RX_BUFFER 65536
|
|
|
++
|
|
|
++/* Tx and Rx Error */
|
|
|
++#define TITAN_GE_ERROR
|
|
|
++
|
|
|
++/* Rx Descriptor Command and Status */
|
|
|
++
|
|
|
++#define TITAN_GE_RX_CRC_ERROR TITAN_BIT27 /* crc error */
|
|
|
++#define TITAN_GE_RX_OVERFLOW_ERROR TITAN_BIT15 /* overflow */
|
|
|
++#define TITAN_GE_RX_BUFFER_OWNED TITAN_BIT21 /* buffer ownership */
|
|
|
++#define TITAN_GE_RX_STP TITAN_BIT31 /* start of packet */
|
|
|
++#define TITAN_GE_RX_BAM TITAN_BIT30 /* broadcast address match */
|
|
|
++#define TITAN_GE_RX_PAM TITAN_BIT28 /* physical address match */
|
|
|
++#define TITAN_GE_RX_LAFM TITAN_BIT29 /* logical address filter match */
|
|
|
++#define TITAN_GE_RX_VLAN TITAN_BIT26 /* virtual lans */
|
|
|
++#define TITAN_GE_RX_PERR TITAN_BIT19 /* packet error */
|
|
|
++#define TITAN_GE_RX_TRUNC TITAN_BIT20 /* packet size greater than 32 buffers */
|
|
|
++
|
|
|
++/* Tx Descriptor Command */
|
|
|
++#define TITAN_GE_TX_BUFFER_OWNED TITAN_BIT5 /* buffer ownership */
|
|
|
++#define TITAN_GE_TX_ENABLE_INTERRUPT TITAN_BIT15 /* Interrupt Enable */
|
|
|
++
|
|
|
++/* Return Status */
|
|
|
++#define TITAN_OK 0x1 /* Good Status */
|
|
|
++#define TITAN_ERROR 0x2 /* Error Status */
|
|
|
++
|
|
|
++/* MIB specific register offset */
|
|
|
++#define TITAN_GE_MSTATX_STATS_BASE_LOW 0x0800 /* MSTATX COUNTL[15:0] */
|
|
|
++#define TITAN_GE_MSTATX_STATS_BASE_MID 0x0804 /* MSTATX COUNTM[15:0] */
|
|
|
++#define TITAN_GE_MSTATX_STATS_BASE_HI 0x0808 /* MSTATX COUNTH[7:0] */
|
|
|
++#define TITAN_GE_MSTATX_CONTROL 0x0828 /* MSTATX Control */
|
|
|
++#define TITAN_GE_MSTATX_VARIABLE_SELECT 0x082C /* MSTATX Variable Select */
|
|
|
++
|
|
|
++/* MIB counter offsets, add to the TITAN_GE_MSTATX_STATS_BASE_XXX */
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMESOK 0x0040
|
|
|
++#define TITAN_GE_MSTATX_RXOCTETSOK 0x0050
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES 0x0060
|
|
|
++#define TITAN_GE_MSTATX_RXOCTETS 0x0070
|
|
|
++#define TITAN_GE_MSTATX_RXUNICASTFRAMESOK 0x0080
|
|
|
++#define TITAN_GE_MSTATX_RXBROADCASTFRAMESOK 0x0090
|
|
|
++#define TITAN_GE_MSTATX_RXMULTICASTFRAMESOK 0x00A0
|
|
|
++#define TITAN_GE_MSTATX_RXTAGGEDFRAMESOK 0x00B0
|
|
|
++#define TITAN_GE_MSTATX_RXMACPAUSECONTROLFRAMESOK 0x00C0
|
|
|
++#define TITAN_GE_MSTATX_RXMACCONTROLFRAMESOK 0x00D0
|
|
|
++#define TITAN_GE_MSTATX_RXFCSERROR 0x00E0
|
|
|
++#define TITAN_GE_MSTATX_RXALIGNMENTERROR 0x00F0
|
|
|
++#define TITAN_GE_MSTATX_RXSYMBOLERROR 0x0100
|
|
|
++#define TITAN_GE_MSTATX_RXLAYER1ERROR 0x0110
|
|
|
++#define TITAN_GE_MSTATX_RXINRANGELENGTHERROR 0x0120
|
|
|
++#define TITAN_GE_MSTATX_RXLONGLENGTHERROR 0x0130
|
|
|
++#define TITAN_GE_MSTATX_RXLONGLENGTHCRCERROR 0x0140
|
|
|
++#define TITAN_GE_MSTATX_RXSHORTLENGTHERROR 0x0150
|
|
|
++#define TITAN_GE_MSTATX_RXSHORTLLENGTHCRCERROR 0x0160
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES64OCTETS 0x0170
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES65TO127OCTETS 0x0180
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES128TO255OCTETS 0x0190
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES256TO511OCTETS 0x01A0
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES512TO1023OCTETS 0x01B0
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES1024TO1518OCTETS 0x01C0
|
|
|
++#define TITAN_GE_MSTATX_RXFRAMES1519TOMAXSIZE 0x01D0
|
|
|
++#define TITAN_GE_MSTATX_RXSTATIONADDRESSFILTERED 0x01E0
|
|
|
++#define TITAN_GE_MSTATX_RXVARIABLE 0x01F0
|
|
|
++#define TITAN_GE_MSTATX_GENERICADDRESSFILTERED 0x0200
|
|
|
++#define TITAN_GE_MSTATX_UNICASTFILTERED 0x0210
|
|
|
++#define TITAN_GE_MSTATX_MULTICASTFILTERED 0x0220
|
|
|
++#define TITAN_GE_MSTATX_BROADCASTFILTERED 0x0230
|
|
|
++#define TITAN_GE_MSTATX_HASHFILTERED 0x0240
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMESOK 0x0250
|
|
|
++#define TITAN_GE_MSTATX_TXOCTETSOK 0x0260
|
|
|
++#define TITAN_GE_MSTATX_TXOCTETS 0x0270
|
|
|
++#define TITAN_GE_MSTATX_TXTAGGEDFRAMESOK 0x0280
|
|
|
++#define TITAN_GE_MSTATX_TXMACPAUSECONTROLFRAMESOK 0x0290
|
|
|
++#define TITAN_GE_MSTATX_TXFCSERROR 0x02A0
|
|
|
++#define TITAN_GE_MSTATX_TXSHORTLENGTHERROR 0x02B0
|
|
|
++#define TITAN_GE_MSTATX_TXLONGLENGTHERROR 0x02C0
|
|
|
++#define TITAN_GE_MSTATX_TXSYSTEMERROR 0x02D0
|
|
|
++#define TITAN_GE_MSTATX_TXMACERROR 0x02E0
|
|
|
++#define TITAN_GE_MSTATX_TXCARRIERSENSEERROR 0x02F0
|
|
|
++#define TITAN_GE_MSTATX_TXSQETESTERROR 0x0300
|
|
|
++#define TITAN_GE_MSTATX_TXUNICASTFRAMESOK 0x0310
|
|
|
++#define TITAN_GE_MSTATX_TXBROADCASTFRAMESOK 0x0320
|
|
|
++#define TITAN_GE_MSTATX_TXMULTICASTFRAMESOK 0x0330
|
|
|
++#define TITAN_GE_MSTATX_TXUNICASTFRAMESATTEMPTED 0x0340
|
|
|
++#define TITAN_GE_MSTATX_TXBROADCASTFRAMESATTEMPTED 0x0350
|
|
|
++#define TITAN_GE_MSTATX_TXMULTICASTFRAMESATTEMPTED 0x0360
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES64OCTETS 0x0370
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES65TO127OCTETS 0x0380
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES128TO255OCTETS 0x0390
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES256TO511OCTETS 0x03A0
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES512TO1023OCTETS 0x03B0
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES1024TO1518OCTETS 0x03C0
|
|
|
++#define TITAN_GE_MSTATX_TXFRAMES1519TOMAXSIZE 0x03D0
|
|
|
++#define TITAN_GE_MSTATX_TXVARIABLE 0x03E0
|
|
|
++#define TITAN_GE_MSTATX_RXSYSTEMERROR 0x03F0
|
|
|
++#define TITAN_GE_MSTATX_SINGLECOLLISION 0x0400
|
|
|
++#define TITAN_GE_MSTATX_MULTIPLECOLLISION 0x0410
|
|
|
++#define TITAN_GE_MSTATX_DEFERREDXMISSIONS 0x0420
|
|
|
++#define TITAN_GE_MSTATX_LATECOLLISIONS 0x0430
|
|
|
++#define TITAN_GE_MSTATX_ABORTEDDUETOXSCOLLS 0x0440
|
|
|
++
|
|
|
++/* Interrupt specific defines */
|
|
|
++#define TITAN_GE_DEVICE_ID 0x0000 /* Device ID */
|
|
|
++#define TITAN_GE_RESET 0x0004 /* Reset reg */
|
|
|
++#define TITAN_GE_TSB_CTRL_0 0x000C /* TSB Control reg 0 */
|
|
|
++#define TITAN_GE_TSB_CTRL_1 0x0010 /* TSB Control reg 1 */
|
|
|
++#define TITAN_GE_INTR_GRP0_STATUS 0x0040 /* General Interrupt Group 0 Status */
|
|
|
++#define TITAN_GE_INTR_XDMA_CORE_A 0x0048 /* XDMA Channel Interrupt Status, Core A*/
|
|
|
++#define TITAN_GE_INTR_XDMA_CORE_B 0x004C /* XDMA Channel Interrupt Status, Core B*/
|
|
|
++#define TITAN_GE_INTR_XDMA_IE 0x0058 /* XDMA Channel Interrupt Enable */
|
|
|
++#define TITAN_GE_SDQPF_ECC_INTR 0x480C /* SDQPF ECC Interrupt Status */
|
|
|
++#define TITAN_GE_SDQPF_RXFIFO_CTL 0x4828 /* SDQPF RxFifo Control and Interrupt Enb*/
|
|
|
++#define TITAN_GE_SDQPF_RXFIFO_INTR 0x482C /* SDQPF RxFifo Interrupt Status */
|
|
|
++#define TITAN_GE_SDQPF_TXFIFO_CTL 0x4928 /* SDQPF TxFifo Control and Interrupt Enb*/
|
|
|
++#define TITAN_GE_SDQPF_TXFIFO_INTR 0x492C /* SDQPF TxFifo Interrupt Status */
|
|
|
++#define TITAN_GE_SDQPF_RXFIFO_0 0x4840 /* SDQPF RxFIFO Enable */
|
|
|
++#define TITAN_GE_SDQPF_TXFIFO_0 0x4940 /* SDQPF TxFIFO Enable */
|
|
|
++#define TITAN_GE_XDMA_CONFIG 0x5000 /* XDMA Global Configuration */
|
|
|
++#define TITAN_GE_XDMA_INTR_SUMMARY 0x5010 /* XDMA Interrupt Summary */
|
|
|
++#define TITAN_GE_XDMA_BUFADDRPRE 0x5018 /* XDMA Buffer Address Prefix */
|
|
|
++#define TITAN_GE_XDMA_DESCADDRPRE 0x501C /* XDMA Descriptor Address Prefix */
|
|
|
++#define TITAN_GE_XDMA_PORTWEIGHT 0x502C /* XDMA Port Weight Configuration */
|
|
|
++
|
|
|
++/* Rx MAC defines */
|
|
|
++#define TITAN_GE_RMAC_CONFIG_1 0x1200 /* RMAC Configuration 1 */
|
|
|
++#define TITAN_GE_RMAC_CONFIG_2 0x1204 /* RMAC Configuration 2 */
|
|
|
++#define TITAN_GE_RMAC_MAX_FRAME_LEN 0x1208 /* RMAC Max Frame Length */
|
|
|
++#define TITAN_GE_RMAC_STATION_HI 0x120C /* Rx Station Address High */
|
|
|
++#define TITAN_GE_RMAC_STATION_MID 0x1210 /* Rx Station Address Middle */
|
|
|
++#define TITAN_GE_RMAC_STATION_LOW 0x1214 /* Rx Station Address Low */
|
|
|
++#define TITAN_GE_RMAC_LINK_CONFIG 0x1218 /* RMAC Link Configuration */
|
|
|
++
|
|
|
++/* Tx MAC defines */
|
|
|
++#define TITAN_GE_TMAC_CONFIG_1 0x1240 /* TMAC Configuration 1 */
|
|
|
++#define TITAN_GE_TMAC_CONFIG_2 0x1244 /* TMAC Configuration 2 */
|
|
|
++#define TITAN_GE_TMAC_IPG 0x1248 /* TMAC Inter-Packet Gap */
|
|
|
++#define TITAN_GE_TMAC_STATION_HI 0x124C /* Tx Station Address High */
|
|
|
++#define TITAN_GE_TMAC_STATION_MID 0x1250 /* Tx Station Address Middle */
|
|
|
++#define TITAN_GE_TMAC_STATION_LOW 0x1254 /* Tx Station Address Low */
|
|
|
++#define TITAN_GE_TMAC_MAX_FRAME_LEN 0x1258 /* TMAC Max Frame Length */
|
|
|
++#define TITAN_GE_TMAC_MIN_FRAME_LEN 0x125C /* TMAC Min Frame Length */
|
|
|
++#define TITAN_GE_TMAC_PAUSE_FRAME_TIME 0x1260 /* TMAC Pause Frame Time */
|
|
|
++#define TITAN_GE_TMAC_PAUSE_FRAME_INTERVAL 0x1264 /* TMAC Pause Frame Interval */
|
|
|
++
|
|
|
++/* GMII register */
|
|
|
++#define TITAN_GE_GMII_INTERRUPT_STATUS 0x1348 /* GMII Interrupt Status */
|
|
|
++#define TITAN_GE_GMII_CONFIG_GENERAL 0x134C /* GMII Configuration General */
|
|
|
++#define TITAN_GE_GMII_CONFIG_MODE 0x1350 /* GMII Configuration Mode */
|
|
|
++
|
|
|
++/* Tx and Rx XDMA defines */
|
|
|
++#define TITAN_GE_INT_COALESCING 0x5030 /* Interrupt Coalescing */
|
|
|
++#define TITAN_GE_CHANNEL0_CONFIG 0x5040 /* Channel 0 XDMA config */
|
|
|
++#define TITAN_GE_CHANNEL0_INTERRUPT 0x504c /* Channel 0 Interrupt Status */
|
|
|
++#define TITAN_GE_GDI_INTERRUPT_ENABLE 0x5050 /* IE for the GDI Errors */
|
|
|
++#define TITAN_GE_CHANNEL0_PACKET 0x5060 /* Channel 0 Packet count */
|
|
|
++#define TITAN_GE_CHANNEL0_BYTE 0x5064 /* Channel 0 Byte count */
|
|
|
++#define TITAN_GE_CHANNEL0_TX_DESC 0x5054 /* Channel 0 Tx first desc */
|
|
|
++#define TITAN_GE_CHANNEL0_RX_DESC 0x5058 /* Channel 0 Rx first desc */
|
|
|
++
|
|
|
++/* AFX (Address Filter Exact) register offsets for Slice 0 */
|
|
|
++#define TITAN_GE_AFX_EXACT_MATCH_LOW 0x1100 /* AFX Exact Match Address Low*/
|
|
|
++#define TITAN_GE_AFX_EXACT_MATCH_MID 0x1104 /* AFX Exact Match Address Mid*/
|
|
|
++#define TITAN_GE_AFX_EXACT_MATCH_HIGH 0x1108 /* AFX Exact Match Address Hi */
|
|
|
++#define TITAN_GE_AFX_EXACT_MATCH_VID 0x110C /* AFX Exact Match VID */
|
|
|
++#define TITAN_GE_AFX_MULTICAST_HASH_LOW 0x1110 /* AFX Multicast HASH Low */
|
|
|
++#define TITAN_GE_AFX_MULTICAST_HASH_MIDLOW 0x1114 /* AFX Multicast HASH MidLow */
|
|
|
++#define TITAN_GE_AFX_MULTICAST_HASH_MIDHI 0x1118 /* AFX Multicast HASH MidHi */
|
|
|
++#define TITAN_GE_AFX_MULTICAST_HASH_HI 0x111C /* AFX Multicast HASH Hi */
|
|
|
++#define TITAN_GE_AFX_ADDRS_FILTER_CTRL_0 0x1120 /* AFX Address Filter Ctrl 0 */
|
|
|
++#define TITAN_GE_AFX_ADDRS_FILTER_CTRL_1 0x1124 /* AFX Address Filter Ctrl 1 */
|
|
|
++#define TITAN_GE_AFX_ADDRS_FILTER_CTRL_2 0x1128 /* AFX Address Filter Ctrl 2 */
|
|
|
++
|
|
|
++/* Traffic Groomer block */
|
|
|
++#define TITAN_GE_TRTG_CONFIG 0x1000 /* TRTG Config */
|
|
|
++
|
|
|
++#endif /* _TITAN_GE_H_ */
|
|
|
++
|
|
|
+diff -Nur linux-2.6.30/drivers/net/titan_mdio.c rt4ls/drivers/net/titan_mdio.c
|
|
|
+--- linux-2.6.30/drivers/net/titan_mdio.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/net/titan_mdio.c 2009-06-12 16:28:16.835950077 +0200
|
|
|
+@@ -0,0 +1,217 @@
|
|
|
++/*
|
|
|
++ * drivers/net/titan_mdio.c - Driver for Titan ethernet ports
|
|
|
++ *
|
|
|
++ * Copyright (C) 2003 PMC-Sierra Inc.
|
|
|
++ * Author : Manish Lachwani (lachwani@pmc-sierra.com)
|
|
|
++ *
|
|
|
++ * This program is free software; you can redistribute it and/or
|
|
|
++ * modify it under the terms of the GNU General Public License
|
|
|
++ * as published by the Free Software Foundation; either version 2
|
|
|
++ * of the License, or (at your option) any later version.
|
|
|
++ *
|
|
|
++ * This program is distributed in the hope that it will be useful,
|
|
|
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
++ * GNU General Public License for more details.
|
|
|
++ *
|
|
|
++ * You should have received a copy of the GNU General Public License
|
|
|
++ * along with this program; if not, write to the Free Software
|
|
|
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
++ *
|
|
|
++ * Management Data IO (MDIO) driver for the Titan GMII. Interacts with the Marvel PHY
|
|
|
++ * on the Titan. No support for the TBI as yet.
|
|
|
++ *
|
|
|
++ */
|
|
|
++
|
|
|
++#include "titan_mdio.h"
|
|
|
++
|
|
|
++#define MDIO_DEBUG
|
|
|
++
|
|
|
++/*
|
|
|
++ * Local constants
|
|
|
++ */
|
|
|
++#define MAX_CLKA 1023
|
|
|
++#define MAX_PHY_DEV 31
|
|
|
++#define MAX_PHY_REG 31
|
|
|
++#define WRITEADDRS_OPCODE 0x0
|
|
|
++#define READ_OPCODE 0x2
|
|
|
++#define WRITE_OPCODE 0x1
|
|
|
++#define MAX_MDIO_POLL 100
|
|
|
++
|
|
|
++/*
|
|
|
++ * Titan MDIO and SCMB registers
|
|
|
++ */
|
|
|
++#define TITAN_GE_SCMB_CONTROL 0x01c0 /* SCMB Control */
|
|
|
++#define TITAN_GE_SCMB_CLKA 0x01c4 /* SCMB Clock A */
|
|
|
++#define TITAN_GE_MDIO_COMMAND 0x01d0 /* MDIO Command */
|
|
|
++#define TITAN_GE_MDIO_DEVICE_PORT_ADDRESS 0x01d4 /* MDIO Device and Port addrs */
|
|
|
++#define TITAN_GE_MDIO_DATA 0x01d8 /* MDIO Data */
|
|
|
++#define TITAN_GE_MDIO_INTERRUPTS 0x01dC /* MDIO Interrupts */
|
|
|
++
|
|
|
++/*
|
|
|
++ * Function to poll the MDIO
|
|
|
++ */
|
|
|
++static int titan_ge_mdio_poll(void)
|
|
|
++{
|
|
|
++ int i, val;
|
|
|
++
|
|
|
++ for (i = 0; i < MAX_MDIO_POLL; i++) {
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_COMMAND);
|
|
|
++
|
|
|
++ if (!(val & 0x8000))
|
|
|
++ return TITAN_GE_MDIO_GOOD;
|
|
|
++ }
|
|
|
++
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++}
|
|
|
++
|
|
|
++
|
|
|
++/*
|
|
|
++ * Initialize and configure the MDIO
|
|
|
++ */
|
|
|
++int titan_ge_mdio_setup(titan_ge_mdio_config *titan_mdio)
|
|
|
++{
|
|
|
++ unsigned long val;
|
|
|
++
|
|
|
++ /* Reset the SCMB and program into MDIO mode*/
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_SCMB_CONTROL, 0x9000);
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_SCMB_CONTROL, 0x1000);
|
|
|
++
|
|
|
++ /* CLK A */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_SCMB_CLKA);
|
|
|
++ val = ( (val & ~(0x03ff)) | (titan_mdio->clka & 0x03ff));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_SCMB_CLKA, val);
|
|
|
++
|
|
|
++ /* Preamble Suppresion */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_COMMAND);
|
|
|
++ val = ( (val & ~(0x0001)) | (titan_mdio->mdio_spre & 0x0001));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_COMMAND, val);
|
|
|
++
|
|
|
++ /* MDIO mode */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS);
|
|
|
++ val = ( (val & ~(0x4000)) | (titan_mdio->mdio_mode & 0x4000));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS, val);
|
|
|
++
|
|
|
++ return TITAN_GE_MDIO_GOOD;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Set the PHY address in indirect mode
|
|
|
++ */
|
|
|
++int titan_ge_mdio_inaddrs(int dev_addr, int reg_addr)
|
|
|
++{
|
|
|
++ volatile unsigned long val;
|
|
|
++
|
|
|
++ /* Setup the PHY device */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS);
|
|
|
++ val = ( (val & ~(0x1f00)) | ( (dev_addr << 8) & 0x1f00));
|
|
|
++ val = ( (val & ~(0x001f)) | ( reg_addr & 0x001f));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS, val);
|
|
|
++
|
|
|
++ /* Write the new address */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_COMMAND);
|
|
|
++ val = ( (val & ~(0x0300)) | ( (WRITEADDRS_OPCODE << 8) & 0x0300));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_COMMAND, val);
|
|
|
++
|
|
|
++ return TITAN_GE_MDIO_GOOD;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Read the MDIO register. This is what the individual parametes mean:
|
|
|
++ *
|
|
|
++ * dev_addr : PHY ID
|
|
|
++ * reg_addr : register offset
|
|
|
++ *
|
|
|
++ * See the spec for the Titan MAC. We operate in the Direct Mode.
|
|
|
++ */
|
|
|
++
|
|
|
++#define MAX_RETRIES 2
|
|
|
++
|
|
|
++int titan_ge_mdio_read(int dev_addr, int reg_addr, unsigned int *pdata)
|
|
|
++{
|
|
|
++ volatile unsigned long val;
|
|
|
++ int retries = 0;
|
|
|
++
|
|
|
++ /* Setup the PHY device */
|
|
|
++
|
|
|
++again:
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS);
|
|
|
++ val = ( (val & ~(0x1f00)) | ( (dev_addr << 8) & 0x1f00));
|
|
|
++ val = ( (val & ~(0x001f)) | ( reg_addr & 0x001f));
|
|
|
++ val |= 0x4000;
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS, val);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /* Issue the read command */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_COMMAND);
|
|
|
++ val = ( (val & ~(0x0300)) | ( (READ_OPCODE << 8) & 0x0300));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_COMMAND, val);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ if (titan_ge_mdio_poll() != TITAN_GE_MDIO_GOOD)
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++
|
|
|
++ *pdata = (unsigned int)TITAN_GE_MDIO_READ(TITAN_GE_MDIO_DATA);
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_INTERRUPTS);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ if (val & 0x2) {
|
|
|
++ if (retries == MAX_RETRIES)
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++ else {
|
|
|
++ retries++;
|
|
|
++ goto again;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ return TITAN_GE_MDIO_GOOD;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Write to the MDIO register
|
|
|
++ *
|
|
|
++ * dev_addr : PHY ID
|
|
|
++ * reg_addr : register that needs to be written to
|
|
|
++ *
|
|
|
++ */
|
|
|
++int titan_ge_mdio_write(int dev_addr, int reg_addr, unsigned int data)
|
|
|
++{
|
|
|
++ volatile unsigned long val;
|
|
|
++
|
|
|
++ if (titan_ge_mdio_poll() != TITAN_GE_MDIO_GOOD)
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++
|
|
|
++ /* Setup the PHY device */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS);
|
|
|
++ val = ( (val & ~(0x1f00)) | ( (dev_addr << 8) & 0x1f00));
|
|
|
++ val = ( (val & ~(0x001f)) | ( reg_addr & 0x001f));
|
|
|
++ val |= 0x4000;
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_DEVICE_PORT_ADDRESS, val);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /* Setup the data to write */
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_DATA, data);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ /* Issue the write command */
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_COMMAND);
|
|
|
++ val = ( (val & ~(0x0300)) | ( (WRITE_OPCODE << 8) & 0x0300));
|
|
|
++ TITAN_GE_MDIO_WRITE(TITAN_GE_MDIO_COMMAND, val);
|
|
|
++
|
|
|
++ udelay(30);
|
|
|
++
|
|
|
++ if (titan_ge_mdio_poll() != TITAN_GE_MDIO_GOOD)
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++
|
|
|
++ val = TITAN_GE_MDIO_READ(TITAN_GE_MDIO_INTERRUPTS);
|
|
|
++ if (val & 0x2)
|
|
|
++ return TITAN_GE_MDIO_ERROR;
|
|
|
++
|
|
|
++ return TITAN_GE_MDIO_GOOD;
|
|
|
++}
|
|
|
++
|
|
|
+diff -Nur linux-2.6.30/drivers/net/titan_mdio.h rt4ls/drivers/net/titan_mdio.h
|
|
|
+--- linux-2.6.30/drivers/net/titan_mdio.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/net/titan_mdio.h 2009-06-12 16:28:16.835950077 +0200
|
|
|
+@@ -0,0 +1,56 @@
|
|
|
++/*
|
|
|
++ * MDIO used to interact with the PHY when using GMII/MII
|
|
|
++ */
|
|
|
++#ifndef _TITAN_MDIO_H
|
|
|
++#define _TITAN_MDIO_H
|
|
|
++
|
|
|
++#include <linux/netdevice.h>
|
|
|
++#include <linux/workqueue.h>
|
|
|
++#include <linux/delay.h>
|
|
|
++#include "titan_ge.h"
|
|
|
++
|
|
|
++
|
|
|
++#define TITAN_GE_MDIO_ERROR (-9000)
|
|
|
++#define TITAN_GE_MDIO_GOOD 0
|
|
|
++
|
|
|
++#define TITAN_GE_MDIO_BASE titan_ge_base
|
|
|
++
|
|
|
++#define TITAN_GE_MDIO_READ(offset) \
|
|
|
++ *(volatile u32 *)(titan_ge_base + (offset))
|
|
|
++
|
|
|
++#define TITAN_GE_MDIO_WRITE(offset, data) \
|
|
|
++ *(volatile u32 *)(titan_ge_base + (offset)) = (data)
|
|
|
++
|
|
|
++
|
|
|
++/* GMII specific registers */
|
|
|
++#define TITAN_GE_MARVEL_PHY_ID 0x00
|
|
|
++#define TITAN_PHY_AUTONEG_ADV 0x04
|
|
|
++#define TITAN_PHY_LP_ABILITY 0x05
|
|
|
++#define TITAN_GE_MDIO_MII_CTRL 0x09
|
|
|
++#define TITAN_GE_MDIO_MII_EXTENDED 0x0f
|
|
|
++#define TITAN_GE_MDIO_PHY_CTRL 0x10
|
|
|
++#define TITAN_GE_MDIO_PHY_STATUS 0x11
|
|
|
++#define TITAN_GE_MDIO_PHY_IE 0x12
|
|
|
++#define TITAN_GE_MDIO_PHY_IS 0x13
|
|
|
++#define TITAN_GE_MDIO_PHY_LED 0x18
|
|
|
++#define TITAN_GE_MDIO_PHY_LED_OVER 0x19
|
|
|
++#define PHY_ANEG_TIME_WAIT 45 /* 45 seconds wait time */
|
|
|
++
|
|
|
++/*
|
|
|
++ * MDIO Config Structure
|
|
|
++ */
|
|
|
++typedef struct {
|
|
|
++ unsigned int clka;
|
|
|
++ int mdio_spre;
|
|
|
++ int mdio_mode;
|
|
|
++} titan_ge_mdio_config;
|
|
|
++
|
|
|
++/*
|
|
|
++ * Function Prototypes
|
|
|
++ */
|
|
|
++int titan_ge_mdio_setup(titan_ge_mdio_config *);
|
|
|
++int titan_ge_mdio_inaddrs(int, int);
|
|
|
++int titan_ge_mdio_read(int, int, unsigned int *);
|
|
|
++int titan_ge_mdio_write(int, int, unsigned int);
|
|
|
++
|
|
|
++#endif /* _TITAN_MDIO_H */
|
|
|
+diff -Nur linux-2.6.30/drivers/rtc/rtc-cmos.c rt4ls/drivers/rtc/rtc-cmos.c
|
|
|
+--- linux-2.6.30/drivers/rtc/rtc-cmos.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/rtc/rtc-cmos.c 2009-06-12 16:28:34.779818333 +0200
|
|
|
+@@ -691,7 +691,8 @@
|
|
|
+ */
|
|
|
+ #if defined(CONFIG_ATARI)
|
|
|
+ address_space = 64;
|
|
|
+-#elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__sparc__)
|
|
|
++#elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) \
|
|
|
++ || defined(__sparc__) || defined(__mips__)
|
|
|
+ address_space = 128;
|
|
|
+ #else
|
|
|
+ #warning Assuming 128 bytes of RTC+NVRAM address space, not 64 bytes.
|
|
|
+@@ -756,9 +757,8 @@
|
|
|
+ /* FIXME teach the alarm code how to handle binary mode;
|
|
|
+ * <asm-generic/rtc.h> doesn't know 12-hour mode either.
|
|
|
+ */
|
|
|
+- if (is_valid_irq(rtc_irq) &&
|
|
|
+- (!(rtc_control & RTC_24H) || (rtc_control & (RTC_DM_BINARY)))) {
|
|
|
+- dev_dbg(dev, "only 24-hr BCD mode supported\n");
|
|
|
++ if (is_valid_irq(rtc_irq) && !(rtc_control & RTC_24H)) {
|
|
|
++ dev_dbg(dev, "only 24-hr supported\n");
|
|
|
+ retval = -ENXIO;
|
|
|
+ goto cleanup1;
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/drivers/video/Kconfig rt4ls/drivers/video/Kconfig
|
|
|
+--- linux-2.6.30/drivers/video/Kconfig 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/video/Kconfig 2009-06-12 16:28:47.484606170 +0200
|
|
|
+@@ -1930,6 +1930,28 @@
|
|
|
+ Turn on debugging messages. Note that you can set/unset at run time
|
|
|
+ through sysfs
|
|
|
+
|
|
|
++config FB_SM7XX
|
|
|
++ tristate "Silicon Motion SM7XX Frame Buffer Support"
|
|
|
++ depends on FB
|
|
|
++ select FB_CFB_FILLRECT
|
|
|
++ select FB_CFB_COPYAREA
|
|
|
++ select FB_CFB_IMAGEBLIT
|
|
|
++ help
|
|
|
++ Frame Buffer driver for the Silicon Motion SM7XX serial graphic card.
|
|
|
++
|
|
|
++config FB_SM7XX_ACCEL
|
|
|
++ bool "Siliconmotion Acceleration functions (EXPERIMENTAL)"
|
|
|
++ depends on FB_SM7XX && EXPERIMENTAL
|
|
|
++ help
|
|
|
++ This will compile the Trident frame buffer device with
|
|
|
++ acceleration functions.
|
|
|
++
|
|
|
++config FB_SM7XX_DUALHEAD
|
|
|
++ bool "Siliconmotion dualhead support (EXPERIMENTAL)"
|
|
|
++ depends on FB_SM7XX && EXPERIMENTAL
|
|
|
++ help
|
|
|
++ This will enable the dualhead support of SM7XX
|
|
|
++
|
|
|
+ config FB_SM501
|
|
|
+ tristate "Silicon Motion SM501 framebuffer support"
|
|
|
+ depends on FB && MFD_SM501
|
|
|
+diff -Nur linux-2.6.30/drivers/video/Makefile rt4ls/drivers/video/Makefile
|
|
|
+--- linux-2.6.30/drivers/video/Makefile 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/drivers/video/Makefile 2009-06-12 16:28:47.484606170 +0200
|
|
|
+@@ -70,6 +70,7 @@
|
|
|
+ obj-$(CONFIG_FB_TCX) += tcx.o sbuslib.o
|
|
|
+ obj-$(CONFIG_FB_LEO) += leo.o sbuslib.o
|
|
|
+ obj-$(CONFIG_FB_SGIVW) += sgivwfb.o
|
|
|
++obj-$(CONFIG_FB_SM7XX) += sm7xx/
|
|
|
+ obj-$(CONFIG_FB_ACORN) += acornfb.o
|
|
|
+ obj-$(CONFIG_FB_ATARI) += atafb.o c2p_iplan2.o atafb_mfb.o \
|
|
|
+ atafb_iplan2p2.o atafb_iplan2p4.o atafb_iplan2p8.o
|
|
|
+diff -Nur linux-2.6.30/drivers/video/sm7xx/Makefile rt4ls/drivers/video/sm7xx/Makefile
|
|
|
+--- linux-2.6.30/drivers/video/sm7xx/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/video/sm7xx/Makefile 2009-06-12 16:28:47.728622169 +0200
|
|
|
+@@ -0,0 +1,3 @@
|
|
|
++obj-$(CONFIG_FB_SM7XX) += sm7xx.o
|
|
|
++
|
|
|
++sm7xx-y := smtcfb.o
|
|
|
+diff -Nur linux-2.6.30/drivers/video/sm7xx/smtc2d.c rt4ls/drivers/video/sm7xx/smtc2d.c
|
|
|
+--- linux-2.6.30/drivers/video/sm7xx/smtc2d.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/video/sm7xx/smtc2d.c 2009-06-12 16:28:47.728622169 +0200
|
|
|
+@@ -0,0 +1,979 @@
|
|
|
++/*
|
|
|
++ * smtc2d.c -- Silicon Motion SM7xx 2D drawing engine functions.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 Silicon Motion Technology Corp.
|
|
|
++ * Author: Boyod boyod.yang@siliconmotion.com.cn
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file COPYING in the main directory of this archive for
|
|
|
++ * more details.
|
|
|
++ *
|
|
|
++ * Version 0.10.26192.21.01
|
|
|
++ * - Add PowerPC support
|
|
|
++ * - Add 2D support for Lynx -
|
|
|
++ * Verified on 2.6.19.2
|
|
|
++ * Boyod.yang <boyod.yang@siliconmotion.com.cn>
|
|
|
++ */
|
|
|
++
|
|
|
++unsigned char smtc_de_busy;
|
|
|
++
|
|
|
++void SMTC_write2Dreg(unsigned long nOffset, unsigned long nData)
|
|
|
++{
|
|
|
++ writel(nData, smtc_2DBaseAddress + nOffset);
|
|
|
++}
|
|
|
++
|
|
|
++unsigned long SMTC_read2Dreg(unsigned long nOffset)
|
|
|
++{
|
|
|
++ return readl(smtc_2DBaseAddress + nOffset);
|
|
|
++}
|
|
|
++
|
|
|
++void SMTC_write2Ddataport(unsigned long nOffset, unsigned long nData)
|
|
|
++{
|
|
|
++ writel(nData, smtc_2Ddataport + nOffset);
|
|
|
++}
|
|
|
++
|
|
|
++/**********************************************************************
|
|
|
++ *
|
|
|
++ * deInit
|
|
|
++ *
|
|
|
++ * Purpose
|
|
|
++ * Drawing engine initialization.
|
|
|
++ *
|
|
|
++ **********************************************************************/
|
|
|
++
|
|
|
++void deInit(unsigned int nModeWidth, unsigned int nModeHeight,
|
|
|
++ unsigned int bpp)
|
|
|
++{
|
|
|
++ /* Get current power configuration. */
|
|
|
++ unsigned char clock;
|
|
|
++ clock = smtc_seqr(0x21);
|
|
|
++
|
|
|
++ /* initialize global 'mutex lock' variable */
|
|
|
++ smtc_de_busy = 0;
|
|
|
++
|
|
|
++ /* Enable 2D Drawing Engine */
|
|
|
++ smtc_seqw(0x21, clock & 0xF8);
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CLIP_TL,
|
|
|
++ FIELD_VALUE(0, DE_CLIP_TL, TOP, 0) |
|
|
|
++ FIELD_SET(0, DE_CLIP_TL, STATUS, DISABLE) |
|
|
|
++ FIELD_SET(0, DE_CLIP_TL, INHIBIT, OUTSIDE) |
|
|
|
++ FIELD_VALUE(0, DE_CLIP_TL, LEFT, 0));
|
|
|
++
|
|
|
++ if (bpp >= 24) {
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ nModeWidth * 3) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ nModeWidth
|
|
|
++ * 3));
|
|
|
++ } else {
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ nModeWidth) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ nModeWidth));
|
|
|
++ }
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ nModeWidth) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ nModeWidth));
|
|
|
++
|
|
|
++ switch (bpp) {
|
|
|
++ case 8:
|
|
|
++ SMTC_write2Dreg(DE_STRETCH_FORMAT,
|
|
|
++ FIELD_SET(0, DE_STRETCH_FORMAT, PATTERN_XY,
|
|
|
++ NORMAL) | FIELD_VALUE(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ PATTERN_Y,
|
|
|
++ 0) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT, PATTERN_X,
|
|
|
++ 0) | FIELD_SET(0, DE_STRETCH_FORMAT,
|
|
|
++ PIXEL_FORMAT,
|
|
|
++ 8) | FIELD_SET(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ ADDRESSING,
|
|
|
++ XY) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT,
|
|
|
++ SOURCE_HEIGHT, 3));
|
|
|
++ break;
|
|
|
++ case 24:
|
|
|
++ SMTC_write2Dreg(DE_STRETCH_FORMAT,
|
|
|
++ FIELD_SET(0, DE_STRETCH_FORMAT, PATTERN_XY,
|
|
|
++ NORMAL) | FIELD_VALUE(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ PATTERN_Y,
|
|
|
++ 0) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT, PATTERN_X,
|
|
|
++ 0) | FIELD_SET(0, DE_STRETCH_FORMAT,
|
|
|
++ PIXEL_FORMAT,
|
|
|
++ 24) | FIELD_SET(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ ADDRESSING,
|
|
|
++ XY) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT,
|
|
|
++ SOURCE_HEIGHT, 3));
|
|
|
++ break;
|
|
|
++ case 16:
|
|
|
++ default:
|
|
|
++ SMTC_write2Dreg(DE_STRETCH_FORMAT,
|
|
|
++ FIELD_SET(0, DE_STRETCH_FORMAT, PATTERN_XY,
|
|
|
++ NORMAL) | FIELD_VALUE(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ PATTERN_Y,
|
|
|
++ 0) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT, PATTERN_X,
|
|
|
++ 0) | FIELD_SET(0, DE_STRETCH_FORMAT,
|
|
|
++ PIXEL_FORMAT,
|
|
|
++ 16) | FIELD_SET(0,
|
|
|
++ DE_STRETCH_FORMAT,
|
|
|
++ ADDRESSING,
|
|
|
++ XY) |
|
|
|
++ FIELD_VALUE(0, DE_STRETCH_FORMAT,
|
|
|
++ SOURCE_HEIGHT, 3));
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_MASKS,
|
|
|
++ FIELD_VALUE(0, DE_MASKS, BYTE_MASK, 0xFFFF) |
|
|
|
++ FIELD_VALUE(0, DE_MASKS, BIT_MASK, 0xFFFF));
|
|
|
++ SMTC_write2Dreg(DE_COLOR_COMPARE_MASK,
|
|
|
++ FIELD_VALUE(0, DE_COLOR_COMPARE_MASK, MASKS, \
|
|
|
++ 0xFFFFFF));
|
|
|
++ SMTC_write2Dreg(DE_COLOR_COMPARE,
|
|
|
++ FIELD_VALUE(0, DE_COLOR_COMPARE, COLOR, 0xFFFFFF));
|
|
|
++}
|
|
|
++
|
|
|
++void deVerticalLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX,
|
|
|
++ unsigned long nY,
|
|
|
++ unsigned long dst_height, unsigned long nColor)
|
|
|
++{
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE, ADDRESS,
|
|
|
++ dst_base));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION, dst_pitch) |
|
|
|
++ FIELD_VALUE(0, DE_PITCH, SOURCE, dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0, DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND,
|
|
|
++ FIELD_VALUE(0, DE_FOREGROUND, COLOR, nColor));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, nX) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, nY));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, 1) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, dst_height));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL,
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, DIRECTION, LEFT_TO_RIGHT) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, MAJOR, Y) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STEP_X, NEGATIVE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STEP_Y, POSITIVE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, LAST_PIXEL, OFF) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, COMMAND, SHORT_STROKE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, ROP_SELECT, ROP2) |
|
|
|
++ FIELD_VALUE(0, DE_CONTROL, ROP, 0x0C));
|
|
|
++
|
|
|
++ smtc_de_busy = 1;
|
|
|
++}
|
|
|
++
|
|
|
++void deHorizontalLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX,
|
|
|
++ unsigned long nY,
|
|
|
++ unsigned long dst_width, unsigned long nColor)
|
|
|
++{
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE, ADDRESS,
|
|
|
++ dst_base));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION, dst_pitch) |
|
|
|
++ FIELD_VALUE(0, DE_PITCH, SOURCE, dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0, DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND,
|
|
|
++ FIELD_VALUE(0, DE_FOREGROUND, COLOR, nColor));
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP,
|
|
|
++ DISABLE) | FIELD_VALUE(0, DE_DESTINATION, X,
|
|
|
++ nX) | FIELD_VALUE(0,
|
|
|
++ DE_DESTINATION,
|
|
|
++ Y,
|
|
|
++ nY));
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X,
|
|
|
++ dst_width) | FIELD_VALUE(0, DE_DIMENSION,
|
|
|
++ Y_ET, 1));
|
|
|
++ SMTC_write2Dreg(DE_CONTROL,
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START) | FIELD_SET(0,
|
|
|
++ DE_CONTROL,
|
|
|
++ DIRECTION,
|
|
|
++ RIGHT_TO_LEFT)
|
|
|
++ | FIELD_SET(0, DE_CONTROL, MAJOR, X) | FIELD_SET(0,
|
|
|
++ DE_CONTROL,
|
|
|
++ STEP_X,
|
|
|
++ POSITIVE)
|
|
|
++ | FIELD_SET(0, DE_CONTROL, STEP_Y,
|
|
|
++ NEGATIVE) | FIELD_SET(0, DE_CONTROL,
|
|
|
++ LAST_PIXEL,
|
|
|
++ OFF) | FIELD_SET(0,
|
|
|
++ DE_CONTROL,
|
|
|
++ COMMAND,
|
|
|
++ SHORT_STROKE)
|
|
|
++ | FIELD_SET(0, DE_CONTROL, ROP_SELECT,
|
|
|
++ ROP2) | FIELD_VALUE(0, DE_CONTROL, ROP,
|
|
|
++ 0x0C));
|
|
|
++
|
|
|
++ smtc_de_busy = 1;
|
|
|
++}
|
|
|
++
|
|
|
++void deLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX1,
|
|
|
++ unsigned long nY1,
|
|
|
++ unsigned long nX2, unsigned long nY2, unsigned long nColor)
|
|
|
++{
|
|
|
++ unsigned long nCommand =
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, DIRECTION, LEFT_TO_RIGHT) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, MAJOR, X) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STEP_X, POSITIVE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STEP_Y, POSITIVE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, LAST_PIXEL, OFF) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, ROP_SELECT, ROP2) |
|
|
|
++ FIELD_VALUE(0, DE_CONTROL, ROP, 0x0C);
|
|
|
++ unsigned long DeltaX;
|
|
|
++ unsigned long DeltaY;
|
|
|
++
|
|
|
++ /* Calculate delta X */
|
|
|
++ if (nX1 <= nX2)
|
|
|
++ DeltaX = nX2 - nX1;
|
|
|
++ else {
|
|
|
++ DeltaX = nX1 - nX2;
|
|
|
++ nCommand = FIELD_SET(nCommand, DE_CONTROL, STEP_X, NEGATIVE);
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Calculate delta Y */
|
|
|
++ if (nY1 <= nY2)
|
|
|
++ DeltaY = nY2 - nY1;
|
|
|
++ else {
|
|
|
++ DeltaY = nY1 - nY2;
|
|
|
++ nCommand = FIELD_SET(nCommand, DE_CONTROL, STEP_Y, NEGATIVE);
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Determine the major axis */
|
|
|
++ if (DeltaX < DeltaY)
|
|
|
++ nCommand = FIELD_SET(nCommand, DE_CONTROL, MAJOR, Y);
|
|
|
++
|
|
|
++ /* Vertical line? */
|
|
|
++ if (nX1 == nX2)
|
|
|
++ deVerticalLine(dst_base, dst_pitch, nX1, nY1, DeltaY, nColor);
|
|
|
++
|
|
|
++ /* Horizontal line? */
|
|
|
++ else if (nY1 == nY2)
|
|
|
++ deHorizontalLine(dst_base, dst_pitch, nX1, nY1, \
|
|
|
++ DeltaX, nColor);
|
|
|
++
|
|
|
++ /* Diagonal line? */
|
|
|
++ else if (DeltaX == DeltaY) {
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE,
|
|
|
++ ADDRESS, dst_base));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND,
|
|
|
++ FIELD_VALUE(0, DE_FOREGROUND, COLOR, nColor));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, 1) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, nY1));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, 1) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, DeltaX));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL,
|
|
|
++ FIELD_SET(nCommand, DE_CONTROL, COMMAND,
|
|
|
++ SHORT_STROKE));
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Generic line */
|
|
|
++ else {
|
|
|
++ unsigned int k1, k2, et, w;
|
|
|
++ if (DeltaX < DeltaY) {
|
|
|
++ k1 = 2 * DeltaX;
|
|
|
++ et = k1 - DeltaY;
|
|
|
++ k2 = et - DeltaY;
|
|
|
++ w = DeltaY + 1;
|
|
|
++ } else {
|
|
|
++ k1 = 2 * DeltaY;
|
|
|
++ et = k1 - DeltaX;
|
|
|
++ k2 = et - DeltaX;
|
|
|
++ w = DeltaX + 1;
|
|
|
++ }
|
|
|
++
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE,
|
|
|
++ ADDRESS, dst_base));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND,
|
|
|
++ FIELD_VALUE(0, DE_FOREGROUND, COLOR, nColor));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_SOURCE,
|
|
|
++ FIELD_SET(0, DE_SOURCE, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, X_K1, k1) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, Y_K2, k2));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, nX1) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, nY1));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, w) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, et));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL,
|
|
|
++ FIELD_SET(nCommand, DE_CONTROL, COMMAND,
|
|
|
++ LINE_DRAW));
|
|
|
++ }
|
|
|
++
|
|
|
++ smtc_de_busy = 1;
|
|
|
++}
|
|
|
++
|
|
|
++void deFillRect(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long dst_X,
|
|
|
++ unsigned long dst_Y,
|
|
|
++ unsigned long dst_width,
|
|
|
++ unsigned long dst_height, unsigned long nColor)
|
|
|
++{
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE, ADDRESS,
|
|
|
++ dst_base));
|
|
|
++
|
|
|
++ if (dst_pitch) {
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ dst_pitch));
|
|
|
++ }
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND,
|
|
|
++ FIELD_VALUE(0, DE_FOREGROUND, COLOR, nColor));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, dst_X) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, dst_Y));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, dst_width) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, dst_height));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL,
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, DIRECTION, LEFT_TO_RIGHT) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, LAST_PIXEL, OFF) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, COMMAND, RECTANGLE_FILL) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, ROP_SELECT, ROP2) |
|
|
|
++ FIELD_VALUE(0, DE_CONTROL, ROP, 0x0C));
|
|
|
++
|
|
|
++ smtc_de_busy = 1;
|
|
|
++}
|
|
|
++
|
|
|
++/**********************************************************************
|
|
|
++ *
|
|
|
++ * deRotatePattern
|
|
|
++ *
|
|
|
++ * Purpose
|
|
|
++ * Rotate the given pattern if necessary
|
|
|
++ *
|
|
|
++ * Parameters
|
|
|
++ * [in]
|
|
|
++ * pPattern - Pointer to DE_SURFACE structure containing
|
|
|
++ * pattern attributes
|
|
|
++ * patternX - X position (0-7) of pattern origin
|
|
|
++ * patternY - Y position (0-7) of pattern origin
|
|
|
++ *
|
|
|
++ * [out]
|
|
|
++ * pattern_dstaddr - Pointer to pre-allocated buffer containing
|
|
|
++ * rotated pattern
|
|
|
++ *
|
|
|
++ **********************************************************************/
|
|
|
++void deRotatePattern(unsigned char *pattern_dstaddr,
|
|
|
++ unsigned long pattern_src_addr,
|
|
|
++ unsigned long pattern_BPP,
|
|
|
++ unsigned long pattern_stride, int patternX, int patternY)
|
|
|
++{
|
|
|
++ unsigned int i;
|
|
|
++ unsigned long pattern[PATTERN_WIDTH * PATTERN_HEIGHT];
|
|
|
++ unsigned int x, y;
|
|
|
++ unsigned char *pjPatByte;
|
|
|
++
|
|
|
++ if (pattern_dstaddr != NULL) {
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ if (patternX || patternY) {
|
|
|
++ /* Rotate pattern */
|
|
|
++ pjPatByte = (unsigned char *)pattern;
|
|
|
++
|
|
|
++ switch (pattern_BPP) {
|
|
|
++ case 8:
|
|
|
++ {
|
|
|
++ for (y = 0; y < 8; y++) {
|
|
|
++ unsigned char *pjBuffer =
|
|
|
++ pattern_dstaddr +
|
|
|
++ ((patternY + y) & 7) * 8;
|
|
|
++ for (x = 0; x < 8; x++) {
|
|
|
++ pjBuffer[(patternX +
|
|
|
++ x) & 7] =
|
|
|
++ pjPatByte[x];
|
|
|
++ }
|
|
|
++ pjPatByte += pattern_stride;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ case 16:
|
|
|
++ {
|
|
|
++ for (y = 0; y < 8; y++) {
|
|
|
++ unsigned short *pjBuffer =
|
|
|
++ (unsigned short *)
|
|
|
++ pattern_dstaddr +
|
|
|
++ ((patternY + y) & 7) * 8;
|
|
|
++ for (x = 0; x < 8; x++) {
|
|
|
++ pjBuffer[(patternX +
|
|
|
++ x) & 7] =
|
|
|
++ ((unsigned short *)
|
|
|
++ pjPatByte)[x];
|
|
|
++ }
|
|
|
++ pjPatByte += pattern_stride;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ case 32:
|
|
|
++ {
|
|
|
++ for (y = 0; y < 8; y++) {
|
|
|
++ unsigned long *pjBuffer =
|
|
|
++ (unsigned long *)
|
|
|
++ pattern_dstaddr +
|
|
|
++ ((patternY + y) & 7) * 8;
|
|
|
++ for (x = 0; x < 8; x++) {
|
|
|
++ pjBuffer[(patternX +
|
|
|
++ x) & 7] =
|
|
|
++ ((unsigned long *)
|
|
|
++ pjPatByte)[x];
|
|
|
++ }
|
|
|
++ pjPatByte += pattern_stride;
|
|
|
++ }
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ }
|
|
|
++ } else {
|
|
|
++ /*Don't rotate,just copy pattern into pattern_dstaddr*/
|
|
|
++ for (i = 0; i < (pattern_BPP * 2); i++) {
|
|
|
++ ((unsigned long *)pattern_dstaddr)[i] =
|
|
|
++ pattern[i];
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/**********************************************************************
|
|
|
++ *
|
|
|
++ * deCopy
|
|
|
++ *
|
|
|
++ * Purpose
|
|
|
++ * Copy a rectangular area of the source surface to a destination surface
|
|
|
++ *
|
|
|
++ * Remarks
|
|
|
++ * Source bitmap must have the same color depth (BPP) as the destination
|
|
|
++ * bitmap.
|
|
|
++ *
|
|
|
++**********************************************************************/
|
|
|
++void deCopy(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long dst_BPP,
|
|
|
++ unsigned long dst_X,
|
|
|
++ unsigned long dst_Y,
|
|
|
++ unsigned long dst_width,
|
|
|
++ unsigned long dst_height,
|
|
|
++ unsigned long src_base,
|
|
|
++ unsigned long src_pitch,
|
|
|
++ unsigned long src_X,
|
|
|
++ unsigned long src_Y, pTransparent pTransp, unsigned char nROP2)
|
|
|
++{
|
|
|
++ unsigned long nDirection = 0;
|
|
|
++ unsigned long nTransparent = 0;
|
|
|
++ /* Direction of ROP2 operation:
|
|
|
++ * 1 = Left to Right,
|
|
|
++ * (-1) = Right to Left
|
|
|
++ */
|
|
|
++ unsigned long opSign = 1;
|
|
|
++ /* xWidth is in pixels */
|
|
|
++ unsigned long xWidth = 192 / (dst_BPP / 8);
|
|
|
++ unsigned long de_ctrl = 0;
|
|
|
++
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_DESTINATION_BASE, ADDRESS,
|
|
|
++ dst_base));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_SOURCE_BASE,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_SOURCE_BASE, ADDRESS,
|
|
|
++ src_base));
|
|
|
++
|
|
|
++ if (dst_pitch && src_pitch) {
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ src_pitch));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ dst_pitch) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ src_pitch));
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Set transparent bits if necessary */
|
|
|
++ if (pTransp != NULL) {
|
|
|
++ nTransparent =
|
|
|
++ pTransp->match | pTransp->select | pTransp->control;
|
|
|
++
|
|
|
++ /* Set color compare register */
|
|
|
++ SMTC_write2Dreg(DE_COLOR_COMPARE,
|
|
|
++ FIELD_VALUE(0, DE_COLOR_COMPARE, COLOR,
|
|
|
++ pTransp->color));
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Determine direction of operation */
|
|
|
++ if (src_Y < dst_Y) {
|
|
|
++ /* +----------+
|
|
|
++ |S |
|
|
|
++ | +----------+
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ +---|------+ |
|
|
|
++ | D |
|
|
|
++ +----------+ */
|
|
|
++
|
|
|
++ nDirection = BOTTOM_TO_TOP;
|
|
|
++ } else if (src_Y > dst_Y) {
|
|
|
++ /* +----------+
|
|
|
++ |D |
|
|
|
++ | +----------+
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ +---|------+ |
|
|
|
++ | S |
|
|
|
++ +----------+ */
|
|
|
++
|
|
|
++ nDirection = TOP_TO_BOTTOM;
|
|
|
++ } else {
|
|
|
++ /* src_Y == dst_Y */
|
|
|
++
|
|
|
++ if (src_X <= dst_X) {
|
|
|
++ /* +------+---+------+
|
|
|
++ |S | | D|
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ +------+---+------+ */
|
|
|
++
|
|
|
++ nDirection = RIGHT_TO_LEFT;
|
|
|
++ } else {
|
|
|
++ /* src_X > dst_X */
|
|
|
++
|
|
|
++ /* +------+---+------+
|
|
|
++ |D | | S|
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ | | | |
|
|
|
++ +------+---+------+ */
|
|
|
++
|
|
|
++ nDirection = LEFT_TO_RIGHT;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ if ((nDirection == BOTTOM_TO_TOP) || (nDirection == RIGHT_TO_LEFT)) {
|
|
|
++ src_X += dst_width - 1;
|
|
|
++ src_Y += dst_height - 1;
|
|
|
++ dst_X += dst_width - 1;
|
|
|
++ dst_Y += dst_height - 1;
|
|
|
++ opSign = (-1);
|
|
|
++ }
|
|
|
++
|
|
|
++ if (dst_BPP >= 24) {
|
|
|
++ src_X *= 3;
|
|
|
++ src_Y *= 3;
|
|
|
++ dst_X *= 3;
|
|
|
++ dst_Y *= 3;
|
|
|
++ dst_width *= 3;
|
|
|
++ if ((nDirection == BOTTOM_TO_TOP)
|
|
|
++ || (nDirection == RIGHT_TO_LEFT)) {
|
|
|
++ src_X += 2;
|
|
|
++ dst_X += 2;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Workaround for 192 byte hw bug */
|
|
|
++ if ((nROP2 != 0x0C) && ((dst_width * (dst_BPP / 8)) >= 192)) {
|
|
|
++ /*
|
|
|
++ * Perform the ROP2 operation in chunks of (xWidth *
|
|
|
++ * dst_height)
|
|
|
++ */
|
|
|
++ while (1) {
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_SOURCE,
|
|
|
++ FIELD_SET(0, DE_SOURCE, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, X_K1, src_X) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, Y_K2, src_Y));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP,
|
|
|
++ DISABLE) | FIELD_VALUE(0,
|
|
|
++ DE_DESTINATION,
|
|
|
++ X,
|
|
|
++ dst_X)
|
|
|
++ | FIELD_VALUE(0, DE_DESTINATION, Y,
|
|
|
++ dst_Y));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X,
|
|
|
++ xWidth) | FIELD_VALUE(0,
|
|
|
++ DE_DIMENSION,
|
|
|
++ Y_ET,
|
|
|
++ dst_height));
|
|
|
++
|
|
|
++ de_ctrl =
|
|
|
++ FIELD_VALUE(0, DE_CONTROL, ROP,
|
|
|
++ nROP2) | nTransparent | FIELD_SET(0,
|
|
|
++ DE_CONTROL,
|
|
|
++ ROP_SELECT,
|
|
|
++ ROP2)
|
|
|
++ | FIELD_SET(0, DE_CONTROL, COMMAND,
|
|
|
++ BITBLT) | ((nDirection ==
|
|
|
++ 1) ? FIELD_SET(0,
|
|
|
++ DE_CONTROL,
|
|
|
++ DIRECTION,
|
|
|
++ RIGHT_TO_LEFT)
|
|
|
++ : FIELD_SET(0, DE_CONTROL,
|
|
|
++ DIRECTION,
|
|
|
++ LEFT_TO_RIGHT)) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START);
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL, de_ctrl);
|
|
|
++
|
|
|
++ src_X += (opSign * xWidth);
|
|
|
++ dst_X += (opSign * xWidth);
|
|
|
++ dst_width -= xWidth;
|
|
|
++
|
|
|
++ if (dst_width <= 0) {
|
|
|
++ /* ROP2 operation is complete */
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (xWidth > dst_width)
|
|
|
++ xWidth = dst_width;
|
|
|
++ }
|
|
|
++ } else {
|
|
|
++ deWaitForNotBusy();
|
|
|
++ SMTC_write2Dreg(DE_SOURCE,
|
|
|
++ FIELD_SET(0, DE_SOURCE, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, X_K1, src_X) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, Y_K2, src_Y));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, dst_X) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, dst_Y));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, dst_width) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, dst_height));
|
|
|
++
|
|
|
++ de_ctrl = FIELD_VALUE(0, DE_CONTROL, ROP, nROP2) |
|
|
|
++ nTransparent |
|
|
|
++ FIELD_SET(0, DE_CONTROL, ROP_SELECT, ROP2) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, COMMAND, BITBLT) |
|
|
|
++ ((nDirection == 1) ? FIELD_SET(0, DE_CONTROL, DIRECTION,
|
|
|
++ RIGHT_TO_LEFT)
|
|
|
++ : FIELD_SET(0, DE_CONTROL, DIRECTION,
|
|
|
++ LEFT_TO_RIGHT)) | FIELD_SET(0, DE_CONTROL,
|
|
|
++ STATUS, START);
|
|
|
++ SMTC_write2Dreg(DE_CONTROL, de_ctrl);
|
|
|
++ }
|
|
|
++
|
|
|
++ smtc_de_busy = 1;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * This function sets the pixel format that will apply to the 2D Engine.
|
|
|
++ */
|
|
|
++void deSetPixelFormat(unsigned long bpp)
|
|
|
++{
|
|
|
++ unsigned long de_format;
|
|
|
++
|
|
|
++ de_format = SMTC_read2Dreg(DE_STRETCH_FORMAT);
|
|
|
++
|
|
|
++ switch (bpp) {
|
|
|
++ case 8:
|
|
|
++ de_format =
|
|
|
++ FIELD_SET(de_format, DE_STRETCH_FORMAT, PIXEL_FORMAT, 8);
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ case 16:
|
|
|
++ de_format =
|
|
|
++ FIELD_SET(de_format, DE_STRETCH_FORMAT, PIXEL_FORMAT, 16);
|
|
|
++ break;
|
|
|
++ case 32:
|
|
|
++ de_format =
|
|
|
++ FIELD_SET(de_format, DE_STRETCH_FORMAT, PIXEL_FORMAT, 32);
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_STRETCH_FORMAT, de_format);
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * System memory to Video memory monochrome expansion.
|
|
|
++ *
|
|
|
++ * Source is monochrome image in system memory. This function expands the
|
|
|
++ * monochrome data to color image in video memory.
|
|
|
++ */
|
|
|
++
|
|
|
++long deSystemMem2VideoMemMonoBlt(const char *pSrcbuf,
|
|
|
++ long srcDelta,
|
|
|
++ unsigned long startBit,
|
|
|
++ unsigned long dBase,
|
|
|
++ unsigned long dPitch,
|
|
|
++ unsigned long bpp,
|
|
|
++ unsigned long dx, unsigned long dy,
|
|
|
++ unsigned long width, unsigned long height,
|
|
|
++ unsigned long fColor,
|
|
|
++ unsigned long bColor,
|
|
|
++ unsigned long rop2) {
|
|
|
++ unsigned long bytePerPixel;
|
|
|
++ unsigned long ulBytesPerScan;
|
|
|
++ unsigned long ul4BytesPerScan;
|
|
|
++ unsigned long ulBytesRemain;
|
|
|
++ unsigned long de_ctrl = 0;
|
|
|
++ unsigned char ajRemain[4];
|
|
|
++ long i, j;
|
|
|
++
|
|
|
++ bytePerPixel = bpp / 8;
|
|
|
++
|
|
|
++ /* Just make sure the start bit is within legal range */
|
|
|
++ startBit &= 7;
|
|
|
++
|
|
|
++ ulBytesPerScan = (width + startBit + 7) / 8;
|
|
|
++ ul4BytesPerScan = ulBytesPerScan & ~3;
|
|
|
++ ulBytesRemain = ulBytesPerScan & 3;
|
|
|
++
|
|
|
++ if (smtc_de_busy)
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ /*
|
|
|
++ * 2D Source Base. Use 0 for HOST Blt.
|
|
|
++ */
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_SOURCE_BASE, 0);
|
|
|
++
|
|
|
++ /*
|
|
|
++ * 2D Destination Base.
|
|
|
++ *
|
|
|
++ * It is an address offset (128 bit aligned) from the beginning of
|
|
|
++ * frame buffer.
|
|
|
++ */
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_DESTINATION_BASE, dBase);
|
|
|
++
|
|
|
++ if (dPitch) {
|
|
|
++
|
|
|
++ /*
|
|
|
++ * Program pitch (distance between the 1st points of two
|
|
|
++ * adjacent lines).
|
|
|
++ *
|
|
|
++ * Note that input pitch is BYTE value, but the 2D Pitch
|
|
|
++ * register uses pixel values. Need Byte to pixel convertion.
|
|
|
++ */
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_PITCH,
|
|
|
++ FIELD_VALUE(0, DE_PITCH, DESTINATION,
|
|
|
++ dPitch /
|
|
|
++ bytePerPixel) | FIELD_VALUE(0,
|
|
|
++ DE_PITCH,
|
|
|
++ SOURCE,
|
|
|
++ dPitch /
|
|
|
++ bytePerPixel));
|
|
|
++
|
|
|
++ /* Screen Window width in Pixels.
|
|
|
++ *
|
|
|
++ * 2D engine uses this value to calculate the linear address in
|
|
|
++ * frame buffer for a given point.
|
|
|
++ */
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_WINDOW_WIDTH,
|
|
|
++ FIELD_VALUE(0, DE_WINDOW_WIDTH, DESTINATION,
|
|
|
++ (dPitch /
|
|
|
++ bytePerPixel)) | FIELD_VALUE(0,
|
|
|
++ DE_WINDOW_WIDTH,
|
|
|
++ SOURCE,
|
|
|
++ (dPitch
|
|
|
++ /
|
|
|
++ bytePerPixel)));
|
|
|
++ }
|
|
|
++ /* Note: For 2D Source in Host Write, only X_K1 field is needed, and
|
|
|
++ * Y_K2 field is not used. For mono bitmap, use startBit for X_K1.
|
|
|
++ */
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_SOURCE,
|
|
|
++ FIELD_SET(0, DE_SOURCE, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, X_K1, startBit) |
|
|
|
++ FIELD_VALUE(0, DE_SOURCE, Y_K2, 0));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DESTINATION,
|
|
|
++ FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, X, dx) |
|
|
|
++ FIELD_VALUE(0, DE_DESTINATION, Y, dy));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_DIMENSION,
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, X, width) |
|
|
|
++ FIELD_VALUE(0, DE_DIMENSION, Y_ET, height));
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_FOREGROUND, fColor);
|
|
|
++ SMTC_write2Dreg(DE_BACKGROUND, bColor);
|
|
|
++
|
|
|
++ if (bpp)
|
|
|
++ deSetPixelFormat(bpp);
|
|
|
++ /* Set the pixel format of the destination */
|
|
|
++
|
|
|
++ de_ctrl = FIELD_VALUE(0, DE_CONTROL, ROP, rop2) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, ROP_SELECT, ROP2) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, COMMAND, HOST_WRITE) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, HOST, MONO) |
|
|
|
++ FIELD_SET(0, DE_CONTROL, STATUS, START);
|
|
|
++
|
|
|
++ SMTC_write2Dreg(DE_CONTROL, de_ctrl | deGetTransparency());
|
|
|
++
|
|
|
++ /* Write MONO data (line by line) to 2D Engine data port */
|
|
|
++ for (i = 0; i < height; i++) {
|
|
|
++ /* For each line, send the data in chunks of 4 bytes */
|
|
|
++ for (j = 0; j < (ul4BytesPerScan / 4); j++)
|
|
|
++ SMTC_write2Ddataport(0,
|
|
|
++ *(unsigned long *)(pSrcbuf +
|
|
|
++ (j * 4)));
|
|
|
++
|
|
|
++ if (ulBytesRemain) {
|
|
|
++ memcpy(ajRemain, pSrcbuf + ul4BytesPerScan,
|
|
|
++ ulBytesRemain);
|
|
|
++ SMTC_write2Ddataport(0, *(unsigned long *)ajRemain);
|
|
|
++ }
|
|
|
++
|
|
|
++ pSrcbuf += srcDelta;
|
|
|
++ }
|
|
|
++ smtc_de_busy = 1;
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * This function gets the transparency status from DE_CONTROL register.
|
|
|
++ * It returns a double word with the transparent fields properly set,
|
|
|
++ * while other fields are 0.
|
|
|
++ */
|
|
|
++unsigned long deGetTransparency(void)
|
|
|
++{
|
|
|
++ unsigned long de_ctrl;
|
|
|
++
|
|
|
++ de_ctrl = SMTC_read2Dreg(DE_CONTROL);
|
|
|
++
|
|
|
++ de_ctrl &=
|
|
|
++ FIELD_MASK(DE_CONTROL_TRANSPARENCY_MATCH) |
|
|
|
++ FIELD_MASK(DE_CONTROL_TRANSPARENCY_SELECT) |
|
|
|
++ FIELD_MASK(DE_CONTROL_TRANSPARENCY);
|
|
|
++
|
|
|
++ return de_ctrl;
|
|
|
++}
|
|
|
+diff -Nur linux-2.6.30/drivers/video/sm7xx/smtc2d.h rt4ls/drivers/video/sm7xx/smtc2d.h
|
|
|
+--- linux-2.6.30/drivers/video/sm7xx/smtc2d.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/video/sm7xx/smtc2d.h 2009-06-12 16:28:47.728622169 +0200
|
|
|
+@@ -0,0 +1,530 @@
|
|
|
++/*
|
|
|
++ * smtc2d.h -- Silicon Motion SM7xx 2D drawing engine functions.
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 Silicon Motion Technology Corp.
|
|
|
++ * Author: Ge Wang, gewang@siliconmotion.com
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file COPYING in the main directory of this archive for
|
|
|
++ * more details.
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef NULL
|
|
|
++#define NULL 0
|
|
|
++#endif
|
|
|
++
|
|
|
++/* Internal macros */
|
|
|
++
|
|
|
++#define _F_START(f) (0 ? f)
|
|
|
++#define _F_END(f) (1 ? f)
|
|
|
++#define _F_SIZE(f) (1 + _F_END(f) - _F_START(f))
|
|
|
++#define _F_MASK(f) (((1ULL << _F_SIZE(f)) - 1) << _F_START(f))
|
|
|
++#define _F_NORMALIZE(v, f) (((v) & _F_MASK(f)) >> _F_START(f))
|
|
|
++#define _F_DENORMALIZE(v, f) (((v) << _F_START(f)) & _F_MASK(f))
|
|
|
++
|
|
|
++/* Global macros */
|
|
|
++
|
|
|
++#define FIELD_GET(x, reg, field) \
|
|
|
++( \
|
|
|
++ _F_NORMALIZE((x), reg ## _ ## field) \
|
|
|
++)
|
|
|
++
|
|
|
++#define FIELD_SET(x, reg, field, value) \
|
|
|
++( \
|
|
|
++ (x & ~_F_MASK(reg ## _ ## field)) \
|
|
|
++ | _F_DENORMALIZE(reg ## _ ## field ## _ ## value, reg ## _ ## field) \
|
|
|
++)
|
|
|
++
|
|
|
++#define FIELD_VALUE(x, reg, field, value) \
|
|
|
++( \
|
|
|
++ (x & ~_F_MASK(reg ## _ ## field)) \
|
|
|
++ | _F_DENORMALIZE(value, reg ## _ ## field) \
|
|
|
++)
|
|
|
++
|
|
|
++#define FIELD_CLEAR(reg, field) \
|
|
|
++( \
|
|
|
++ ~_F_MASK(reg ## _ ## field) \
|
|
|
++)
|
|
|
++
|
|
|
++/* Field Macros */
|
|
|
++
|
|
|
++#define FIELD_START(field) (0 ? field)
|
|
|
++#define FIELD_END(field) (1 ? field)
|
|
|
++#define FIELD_SIZE(field) \
|
|
|
++ (1 + FIELD_END(field) - FIELD_START(field))
|
|
|
++
|
|
|
++#define FIELD_MASK(field) \
|
|
|
++ (((1 << (FIELD_SIZE(field)-1)) \
|
|
|
++ | ((1 << (FIELD_SIZE(field)-1)) - 1)) \
|
|
|
++ << FIELD_START(field))
|
|
|
++
|
|
|
++#define FIELD_NORMALIZE(reg, field) \
|
|
|
++ (((reg) & FIELD_MASK(field)) >> FIELD_START(field))
|
|
|
++
|
|
|
++#define FIELD_DENORMALIZE(field, value) \
|
|
|
++ (((value) << FIELD_START(field)) & FIELD_MASK(field))
|
|
|
++
|
|
|
++#define FIELD_INIT(reg, field, value) \
|
|
|
++ FIELD_DENORMALIZE(reg ## _ ## field, \
|
|
|
++ reg ## _ ## field ## _ ## value)
|
|
|
++
|
|
|
++#define FIELD_INIT_VAL(reg, field, value) \
|
|
|
++ (FIELD_DENORMALIZE(reg ## _ ## field, value))
|
|
|
++
|
|
|
++#define FIELD_VAL_SET(x, r, f, v) ({ \
|
|
|
++ x = (x & ~FIELD_MASK(r ## _ ## f)) \
|
|
|
++ | FIELD_DENORMALIZE(r ## _ ## f, r ## _ ## f ## _ ## v) \
|
|
|
++})
|
|
|
++
|
|
|
++#define RGB(r, g, b) ((unsigned long)(((r) << 16) | ((g) << 8) | (b)))
|
|
|
++
|
|
|
++/* Transparent info definition */
|
|
|
++typedef struct {
|
|
|
++ unsigned long match; /* Matching pixel is OPAQUE/TRANSPARENT */
|
|
|
++ unsigned long select; /* Transparency controlled by SRC/DST */
|
|
|
++ unsigned long control; /* ENABLE/DISABLE transparency */
|
|
|
++ unsigned long color; /* Transparent color */
|
|
|
++} Transparent, *pTransparent;
|
|
|
++
|
|
|
++#define PIXEL_DEPTH_1_BP 0 /* 1 bit per pixel */
|
|
|
++#define PIXEL_DEPTH_8_BPP 1 /* 8 bits per pixel */
|
|
|
++#define PIXEL_DEPTH_16_BPP 2 /* 16 bits per pixel */
|
|
|
++#define PIXEL_DEPTH_32_BPP 3 /* 32 bits per pixel */
|
|
|
++#define PIXEL_DEPTH_YUV422 8 /* 16 bits per pixel YUV422 */
|
|
|
++#define PIXEL_DEPTH_YUV420 9 /* 16 bits per pixel YUV420 */
|
|
|
++
|
|
|
++#define PATTERN_WIDTH 8
|
|
|
++#define PATTERN_HEIGHT 8
|
|
|
++
|
|
|
++#define TOP_TO_BOTTOM 0
|
|
|
++#define BOTTOM_TO_TOP 1
|
|
|
++#define RIGHT_TO_LEFT BOTTOM_TO_TOP
|
|
|
++#define LEFT_TO_RIGHT TOP_TO_BOTTOM
|
|
|
++
|
|
|
++/* Constants used in Transparent structure */
|
|
|
++#define MATCH_OPAQUE 0x00000000
|
|
|
++#define MATCH_TRANSPARENT 0x00000400
|
|
|
++#define SOURCE 0x00000000
|
|
|
++#define DESTINATION 0x00000200
|
|
|
++
|
|
|
++/* 2D registers. */
|
|
|
++
|
|
|
++#define DE_SOURCE 0x000000
|
|
|
++#define DE_SOURCE_WRAP 31 : 31
|
|
|
++#define DE_SOURCE_WRAP_DISABLE 0
|
|
|
++#define DE_SOURCE_WRAP_ENABLE 1
|
|
|
++#define DE_SOURCE_X_K1 29 : 16
|
|
|
++#define DE_SOURCE_Y_K2 15 : 0
|
|
|
++
|
|
|
++#define DE_DESTINATION 0x000004
|
|
|
++#define DE_DESTINATION_WRAP 31 : 31
|
|
|
++#define DE_DESTINATION_WRAP_DISABLE 0
|
|
|
++#define DE_DESTINATION_WRAP_ENABLE 1
|
|
|
++#define DE_DESTINATION_X 28 : 16
|
|
|
++#define DE_DESTINATION_Y 15 : 0
|
|
|
++
|
|
|
++#define DE_DIMENSION 0x000008
|
|
|
++#define DE_DIMENSION_X 28 : 16
|
|
|
++#define DE_DIMENSION_Y_ET 15 : 0
|
|
|
++
|
|
|
++#define DE_CONTROL 0x00000C
|
|
|
++#define DE_CONTROL_STATUS 31 : 31
|
|
|
++#define DE_CONTROL_STATUS_STOP 0
|
|
|
++#define DE_CONTROL_STATUS_START 1
|
|
|
++#define DE_CONTROL_PATTERN 30 : 30
|
|
|
++#define DE_CONTROL_PATTERN_MONO 0
|
|
|
++#define DE_CONTROL_PATTERN_COLOR 1
|
|
|
++#define DE_CONTROL_UPDATE_DESTINATION_X 29 : 29
|
|
|
++#define DE_CONTROL_UPDATE_DESTINATION_X_DISABLE 0
|
|
|
++#define DE_CONTROL_UPDATE_DESTINATION_X_ENABLE 1
|
|
|
++#define DE_CONTROL_QUICK_START 28 : 28
|
|
|
++#define DE_CONTROL_QUICK_START_DISABLE 0
|
|
|
++#define DE_CONTROL_QUICK_START_ENABLE 1
|
|
|
++#define DE_CONTROL_DIRECTION 27 : 27
|
|
|
++#define DE_CONTROL_DIRECTION_LEFT_TO_RIGHT 0
|
|
|
++#define DE_CONTROL_DIRECTION_RIGHT_TO_LEFT 1
|
|
|
++#define DE_CONTROL_MAJOR 26 : 26
|
|
|
++#define DE_CONTROL_MAJOR_X 0
|
|
|
++#define DE_CONTROL_MAJOR_Y 1
|
|
|
++#define DE_CONTROL_STEP_X 25 : 25
|
|
|
++#define DE_CONTROL_STEP_X_POSITIVE 1
|
|
|
++#define DE_CONTROL_STEP_X_NEGATIVE 0
|
|
|
++#define DE_CONTROL_STEP_Y 24 : 24
|
|
|
++#define DE_CONTROL_STEP_Y_POSITIVE 1
|
|
|
++#define DE_CONTROL_STEP_Y_NEGATIVE 0
|
|
|
++#define DE_CONTROL_STRETCH 23 : 23
|
|
|
++#define DE_CONTROL_STRETCH_DISABLE 0
|
|
|
++#define DE_CONTROL_STRETCH_ENABLE 1
|
|
|
++#define DE_CONTROL_HOST 22 : 22
|
|
|
++#define DE_CONTROL_HOST_COLOR 0
|
|
|
++#define DE_CONTROL_HOST_MONO 1
|
|
|
++#define DE_CONTROL_LAST_PIXEL 21 : 21
|
|
|
++#define DE_CONTROL_LAST_PIXEL_OFF 0
|
|
|
++#define DE_CONTROL_LAST_PIXEL_ON 1
|
|
|
++#define DE_CONTROL_COMMAND 20 : 16
|
|
|
++#define DE_CONTROL_COMMAND_BITBLT 0
|
|
|
++#define DE_CONTROL_COMMAND_RECTANGLE_FILL 1
|
|
|
++#define DE_CONTROL_COMMAND_DE_TILE 2
|
|
|
++#define DE_CONTROL_COMMAND_TRAPEZOID_FILL 3
|
|
|
++#define DE_CONTROL_COMMAND_ALPHA_BLEND 4
|
|
|
++#define DE_CONTROL_COMMAND_RLE_STRIP 5
|
|
|
++#define DE_CONTROL_COMMAND_SHORT_STROKE 6
|
|
|
++#define DE_CONTROL_COMMAND_LINE_DRAW 7
|
|
|
++#define DE_CONTROL_COMMAND_HOST_WRITE 8
|
|
|
++#define DE_CONTROL_COMMAND_HOST_READ 9
|
|
|
++#define DE_CONTROL_COMMAND_HOST_WRITE_BOTTOM_UP 10
|
|
|
++#define DE_CONTROL_COMMAND_ROTATE 11
|
|
|
++#define DE_CONTROL_COMMAND_FONT 12
|
|
|
++#define DE_CONTROL_COMMAND_TEXTURE_LOAD 15
|
|
|
++#define DE_CONTROL_ROP_SELECT 15 : 15
|
|
|
++#define DE_CONTROL_ROP_SELECT_ROP3 0
|
|
|
++#define DE_CONTROL_ROP_SELECT_ROP2 1
|
|
|
++#define DE_CONTROL_ROP2_SOURCE 14 : 14
|
|
|
++#define DE_CONTROL_ROP2_SOURCE_BITMAP 0
|
|
|
++#define DE_CONTROL_ROP2_SOURCE_PATTERN 1
|
|
|
++#define DE_CONTROL_MONO_DATA 13 : 12
|
|
|
++#define DE_CONTROL_MONO_DATA_NOT_PACKED 0
|
|
|
++#define DE_CONTROL_MONO_DATA_8_PACKED 1
|
|
|
++#define DE_CONTROL_MONO_DATA_16_PACKED 2
|
|
|
++#define DE_CONTROL_MONO_DATA_32_PACKED 3
|
|
|
++#define DE_CONTROL_REPEAT_ROTATE 11 : 11
|
|
|
++#define DE_CONTROL_REPEAT_ROTATE_DISABLE 0
|
|
|
++#define DE_CONTROL_REPEAT_ROTATE_ENABLE 1
|
|
|
++#define DE_CONTROL_TRANSPARENCY_MATCH 10 : 10
|
|
|
++#define DE_CONTROL_TRANSPARENCY_MATCH_OPAQUE 0
|
|
|
++#define DE_CONTROL_TRANSPARENCY_MATCH_TRANSPARENT 1
|
|
|
++#define DE_CONTROL_TRANSPARENCY_SELECT 9 : 9
|
|
|
++#define DE_CONTROL_TRANSPARENCY_SELECT_SOURCE 0
|
|
|
++#define DE_CONTROL_TRANSPARENCY_SELECT_DESTINATION 1
|
|
|
++#define DE_CONTROL_TRANSPARENCY 8 : 8
|
|
|
++#define DE_CONTROL_TRANSPARENCY_DISABLE 0
|
|
|
++#define DE_CONTROL_TRANSPARENCY_ENABLE 1
|
|
|
++#define DE_CONTROL_ROP 7 : 0
|
|
|
++
|
|
|
++/* Pseudo fields. */
|
|
|
++
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR 27 : 24
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_225 0
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_135 1
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_315 2
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_45 3
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_270 4
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_90 5
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_180 8
|
|
|
++#define DE_CONTROL_SHORT_STROKE_DIR_0 10
|
|
|
++#define DE_CONTROL_ROTATION 25 : 24
|
|
|
++#define DE_CONTROL_ROTATION_0 0
|
|
|
++#define DE_CONTROL_ROTATION_270 1
|
|
|
++#define DE_CONTROL_ROTATION_90 2
|
|
|
++#define DE_CONTROL_ROTATION_180 3
|
|
|
++
|
|
|
++#define DE_PITCH 0x000010
|
|
|
++#define DE_PITCH_DESTINATION 28 : 16
|
|
|
++#define DE_PITCH_SOURCE 12 : 0
|
|
|
++
|
|
|
++#define DE_FOREGROUND 0x000014
|
|
|
++#define DE_FOREGROUND_COLOR 31 : 0
|
|
|
++
|
|
|
++#define DE_BACKGROUND 0x000018
|
|
|
++#define DE_BACKGROUND_COLOR 31 : 0
|
|
|
++
|
|
|
++#define DE_STRETCH_FORMAT 0x00001C
|
|
|
++#define DE_STRETCH_FORMAT_PATTERN_XY 30 : 30
|
|
|
++#define DE_STRETCH_FORMAT_PATTERN_XY_NORMAL 0
|
|
|
++#define DE_STRETCH_FORMAT_PATTERN_XY_OVERWRITE 1
|
|
|
++#define DE_STRETCH_FORMAT_PATTERN_Y 29 : 27
|
|
|
++#define DE_STRETCH_FORMAT_PATTERN_X 25 : 23
|
|
|
++#define DE_STRETCH_FORMAT_PIXEL_FORMAT 21 : 20
|
|
|
++#define DE_STRETCH_FORMAT_PIXEL_FORMAT_8 0
|
|
|
++#define DE_STRETCH_FORMAT_PIXEL_FORMAT_16 1
|
|
|
++#define DE_STRETCH_FORMAT_PIXEL_FORMAT_24 3
|
|
|
++#define DE_STRETCH_FORMAT_PIXEL_FORMAT_32 2
|
|
|
++#define DE_STRETCH_FORMAT_ADDRESSING 19 : 16
|
|
|
++#define DE_STRETCH_FORMAT_ADDRESSING_XY 0
|
|
|
++#define DE_STRETCH_FORMAT_ADDRESSING_LINEAR 15
|
|
|
++#define DE_STRETCH_FORMAT_SOURCE_HEIGHT 11 : 0
|
|
|
++
|
|
|
++#define DE_COLOR_COMPARE 0x000020
|
|
|
++#define DE_COLOR_COMPARE_COLOR 23 : 0
|
|
|
++
|
|
|
++#define DE_COLOR_COMPARE_MASK 0x000024
|
|
|
++#define DE_COLOR_COMPARE_MASK_MASKS 23 : 0
|
|
|
++
|
|
|
++#define DE_MASKS 0x000028
|
|
|
++#define DE_MASKS_BYTE_MASK 31 : 16
|
|
|
++#define DE_MASKS_BIT_MASK 15 : 0
|
|
|
++
|
|
|
++#define DE_CLIP_TL 0x00002C
|
|
|
++#define DE_CLIP_TL_TOP 31 : 16
|
|
|
++#define DE_CLIP_TL_STATUS 13 : 13
|
|
|
++#define DE_CLIP_TL_STATUS_DISABLE 0
|
|
|
++#define DE_CLIP_TL_STATUS_ENABLE 1
|
|
|
++#define DE_CLIP_TL_INHIBIT 12 : 12
|
|
|
++#define DE_CLIP_TL_INHIBIT_OUTSIDE 0
|
|
|
++#define DE_CLIP_TL_INHIBIT_INSIDE 1
|
|
|
++#define DE_CLIP_TL_LEFT 11 : 0
|
|
|
++
|
|
|
++#define DE_CLIP_BR 0x000030
|
|
|
++#define DE_CLIP_BR_BOTTOM 31 : 16
|
|
|
++#define DE_CLIP_BR_RIGHT 12 : 0
|
|
|
++
|
|
|
++#define DE_MONO_PATTERN_LOW 0x000034
|
|
|
++#define DE_MONO_PATTERN_LOW_PATTERN 31 : 0
|
|
|
++
|
|
|
++#define DE_MONO_PATTERN_HIGH 0x000038
|
|
|
++#define DE_MONO_PATTERN_HIGH_PATTERN 31 : 0
|
|
|
++
|
|
|
++#define DE_WINDOW_WIDTH 0x00003C
|
|
|
++#define DE_WINDOW_WIDTH_DESTINATION 28 : 16
|
|
|
++#define DE_WINDOW_WIDTH_SOURCE 12 : 0
|
|
|
++
|
|
|
++#define DE_WINDOW_SOURCE_BASE 0x000040
|
|
|
++#define DE_WINDOW_SOURCE_BASE_EXT 27 : 27
|
|
|
++#define DE_WINDOW_SOURCE_BASE_EXT_LOCAL 0
|
|
|
++#define DE_WINDOW_SOURCE_BASE_EXT_EXTERNAL 1
|
|
|
++#define DE_WINDOW_SOURCE_BASE_CS 26 : 26
|
|
|
++#define DE_WINDOW_SOURCE_BASE_CS_0 0
|
|
|
++#define DE_WINDOW_SOURCE_BASE_CS_1 1
|
|
|
++#define DE_WINDOW_SOURCE_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define DE_WINDOW_DESTINATION_BASE 0x000044
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_EXT 27 : 27
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_EXT_LOCAL 0
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_EXT_EXTERNAL 1
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_CS 26 : 26
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_CS_0 0
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_CS_1 1
|
|
|
++#define DE_WINDOW_DESTINATION_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define DE_ALPHA 0x000048
|
|
|
++#define DE_ALPHA_VALUE 7 : 0
|
|
|
++
|
|
|
++#define DE_WRAP 0x00004C
|
|
|
++#define DE_WRAP_X 31 : 16
|
|
|
++#define DE_WRAP_Y 15 : 0
|
|
|
++
|
|
|
++#define DE_STATUS 0x000050
|
|
|
++#define DE_STATUS_CSC 1 : 1
|
|
|
++#define DE_STATUS_CSC_CLEAR 0
|
|
|
++#define DE_STATUS_CSC_NOT_ACTIVE 0
|
|
|
++#define DE_STATUS_CSC_ACTIVE 1
|
|
|
++#define DE_STATUS_2D 0 : 0
|
|
|
++#define DE_STATUS_2D_CLEAR 0
|
|
|
++#define DE_STATUS_2D_NOT_ACTIVE 0
|
|
|
++#define DE_STATUS_2D_ACTIVE 1
|
|
|
++
|
|
|
++/* Color Space Conversion registers. */
|
|
|
++
|
|
|
++#define CSC_Y_SOURCE_BASE 0x0000C8
|
|
|
++#define CSC_Y_SOURCE_BASE_EXT 27 : 27
|
|
|
++#define CSC_Y_SOURCE_BASE_EXT_LOCAL 0
|
|
|
++#define CSC_Y_SOURCE_BASE_EXT_EXTERNAL 1
|
|
|
++#define CSC_Y_SOURCE_BASE_CS 26 : 26
|
|
|
++#define CSC_Y_SOURCE_BASE_CS_0 0
|
|
|
++#define CSC_Y_SOURCE_BASE_CS_1 1
|
|
|
++#define CSC_Y_SOURCE_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define CSC_CONSTANTS 0x0000CC
|
|
|
++#define CSC_CONSTANTS_Y 31 : 24
|
|
|
++#define CSC_CONSTANTS_R 23 : 16
|
|
|
++#define CSC_CONSTANTS_G 15 : 8
|
|
|
++#define CSC_CONSTANTS_B 7 : 0
|
|
|
++
|
|
|
++#define CSC_Y_SOURCE_X 0x0000D0
|
|
|
++#define CSC_Y_SOURCE_X_INTEGER 26 : 16
|
|
|
++#define CSC_Y_SOURCE_X_FRACTION 15 : 3
|
|
|
++
|
|
|
++#define CSC_Y_SOURCE_Y 0x0000D4
|
|
|
++#define CSC_Y_SOURCE_Y_INTEGER 27 : 16
|
|
|
++#define CSC_Y_SOURCE_Y_FRACTION 15 : 3
|
|
|
++
|
|
|
++#define CSC_U_SOURCE_BASE 0x0000D8
|
|
|
++#define CSC_U_SOURCE_BASE_EXT 27 : 27
|
|
|
++#define CSC_U_SOURCE_BASE_EXT_LOCAL 0
|
|
|
++#define CSC_U_SOURCE_BASE_EXT_EXTERNAL 1
|
|
|
++#define CSC_U_SOURCE_BASE_CS 26 : 26
|
|
|
++#define CSC_U_SOURCE_BASE_CS_0 0
|
|
|
++#define CSC_U_SOURCE_BASE_CS_1 1
|
|
|
++#define CSC_U_SOURCE_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define CSC_V_SOURCE_BASE 0x0000DC
|
|
|
++#define CSC_V_SOURCE_BASE_EXT 27 : 27
|
|
|
++#define CSC_V_SOURCE_BASE_EXT_LOCAL 0
|
|
|
++#define CSC_V_SOURCE_BASE_EXT_EXTERNAL 1
|
|
|
++#define CSC_V_SOURCE_BASE_CS 26 : 26
|
|
|
++#define CSC_V_SOURCE_BASE_CS_0 0
|
|
|
++#define CSC_V_SOURCE_BASE_CS_1 1
|
|
|
++#define CSC_V_SOURCE_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define CSC_SOURCE_DIMENSION 0x0000E0
|
|
|
++#define CSC_SOURCE_DIMENSION_X 31 : 16
|
|
|
++#define CSC_SOURCE_DIMENSION_Y 15 : 0
|
|
|
++
|
|
|
++#define CSC_SOURCE_PITCH 0x0000E4
|
|
|
++#define CSC_SOURCE_PITCH_Y 31 : 16
|
|
|
++#define CSC_SOURCE_PITCH_UV 15 : 0
|
|
|
++
|
|
|
++#define CSC_DESTINATION 0x0000E8
|
|
|
++#define CSC_DESTINATION_WRAP 31 : 31
|
|
|
++#define CSC_DESTINATION_WRAP_DISABLE 0
|
|
|
++#define CSC_DESTINATION_WRAP_ENABLE 1
|
|
|
++#define CSC_DESTINATION_X 27 : 16
|
|
|
++#define CSC_DESTINATION_Y 11 : 0
|
|
|
++
|
|
|
++#define CSC_DESTINATION_DIMENSION 0x0000EC
|
|
|
++#define CSC_DESTINATION_DIMENSION_X 31 : 16
|
|
|
++#define CSC_DESTINATION_DIMENSION_Y 15 : 0
|
|
|
++
|
|
|
++#define CSC_DESTINATION_PITCH 0x0000F0
|
|
|
++#define CSC_DESTINATION_PITCH_X 31 : 16
|
|
|
++#define CSC_DESTINATION_PITCH_Y 15 : 0
|
|
|
++
|
|
|
++#define CSC_SCALE_FACTOR 0x0000F4
|
|
|
++#define CSC_SCALE_FACTOR_HORIZONTAL 31 : 16
|
|
|
++#define CSC_SCALE_FACTOR_VERTICAL 15 : 0
|
|
|
++
|
|
|
++#define CSC_DESTINATION_BASE 0x0000F8
|
|
|
++#define CSC_DESTINATION_BASE_EXT 27 : 27
|
|
|
++#define CSC_DESTINATION_BASE_EXT_LOCAL 0
|
|
|
++#define CSC_DESTINATION_BASE_EXT_EXTERNAL 1
|
|
|
++#define CSC_DESTINATION_BASE_CS 26 : 26
|
|
|
++#define CSC_DESTINATION_BASE_CS_0 0
|
|
|
++#define CSC_DESTINATION_BASE_CS_1 1
|
|
|
++#define CSC_DESTINATION_BASE_ADDRESS 25 : 0
|
|
|
++
|
|
|
++#define CSC_CONTROL 0x0000FC
|
|
|
++#define CSC_CONTROL_STATUS 31 : 31
|
|
|
++#define CSC_CONTROL_STATUS_STOP 0
|
|
|
++#define CSC_CONTROL_STATUS_START 1
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT 30 : 28
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_YUV422 0
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_YUV420I 1
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_YUV420 2
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_YVU9 3
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_IYU1 4
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_IYU2 5
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_RGB565 6
|
|
|
++#define CSC_CONTROL_SOURCE_FORMAT_RGB8888 7
|
|
|
++#define CSC_CONTROL_DESTINATION_FORMAT 27 : 26
|
|
|
++#define CSC_CONTROL_DESTINATION_FORMAT_RGB565 0
|
|
|
++#define CSC_CONTROL_DESTINATION_FORMAT_RGB8888 1
|
|
|
++#define CSC_CONTROL_HORIZONTAL_FILTER 25 : 25
|
|
|
++#define CSC_CONTROL_HORIZONTAL_FILTER_DISABLE 0
|
|
|
++#define CSC_CONTROL_HORIZONTAL_FILTER_ENABLE 1
|
|
|
++#define CSC_CONTROL_VERTICAL_FILTER 24 : 24
|
|
|
++#define CSC_CONTROL_VERTICAL_FILTER_DISABLE 0
|
|
|
++#define CSC_CONTROL_VERTICAL_FILTER_ENABLE 1
|
|
|
++#define CSC_CONTROL_BYTE_ORDER 23 : 23
|
|
|
++#define CSC_CONTROL_BYTE_ORDER_YUYV 0
|
|
|
++#define CSC_CONTROL_BYTE_ORDER_UYVY 1
|
|
|
++
|
|
|
++#define DE_DATA_PORT_501 0x110000
|
|
|
++#define DE_DATA_PORT_712 0x400000
|
|
|
++#define DE_DATA_PORT_722 0x6000
|
|
|
++
|
|
|
++/* point to virtual Memory Map IO starting address */
|
|
|
++extern char *smtc_RegBaseAddress;
|
|
|
++/* point to virtual video memory starting address */
|
|
|
++extern char *smtc_VRAMBaseAddress;
|
|
|
++extern unsigned char smtc_de_busy;
|
|
|
++
|
|
|
++extern unsigned long memRead32(unsigned long nOffset);
|
|
|
++extern void memWrite32(unsigned long nOffset, unsigned long nData);
|
|
|
++extern unsigned long SMTC_read2Dreg(unsigned long nOffset);
|
|
|
++
|
|
|
++/* 2D functions */
|
|
|
++extern void deInit(unsigned int nModeWidth, unsigned int nModeHeight,
|
|
|
++ unsigned int bpp);
|
|
|
++
|
|
|
++extern void deWaitForNotBusy(void);
|
|
|
++
|
|
|
++extern void deVerticalLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX,
|
|
|
++ unsigned long nY,
|
|
|
++ unsigned long dst_height,
|
|
|
++ unsigned long nColor);
|
|
|
++
|
|
|
++extern void deHorizontalLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX,
|
|
|
++ unsigned long nY,
|
|
|
++ unsigned long dst_width,
|
|
|
++ unsigned long nColor);
|
|
|
++
|
|
|
++extern void deLine(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long nX1,
|
|
|
++ unsigned long nY1,
|
|
|
++ unsigned long nX2,
|
|
|
++ unsigned long nY2,
|
|
|
++ unsigned long nColor);
|
|
|
++
|
|
|
++extern void deFillRect(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long dst_X,
|
|
|
++ unsigned long dst_Y,
|
|
|
++ unsigned long dst_width,
|
|
|
++ unsigned long dst_height,
|
|
|
++ unsigned long nColor);
|
|
|
++
|
|
|
++extern void deRotatePattern(unsigned char *pattern_dstaddr,
|
|
|
++ unsigned long pattern_src_addr,
|
|
|
++ unsigned long pattern_BPP,
|
|
|
++ unsigned long pattern_stride,
|
|
|
++ int patternX,
|
|
|
++ int patternY);
|
|
|
++
|
|
|
++extern void deCopy(unsigned long dst_base,
|
|
|
++ unsigned long dst_pitch,
|
|
|
++ unsigned long dst_BPP,
|
|
|
++ unsigned long dst_X,
|
|
|
++ unsigned long dst_Y,
|
|
|
++ unsigned long dst_width,
|
|
|
++ unsigned long dst_height,
|
|
|
++ unsigned long src_base,
|
|
|
++ unsigned long src_pitch,
|
|
|
++ unsigned long src_X,
|
|
|
++ unsigned long src_Y,
|
|
|
++ pTransparent pTransp,
|
|
|
++ unsigned char nROP2);
|
|
|
++
|
|
|
++/*
|
|
|
++ * System memory to Video memory monochrome expansion.
|
|
|
++ *
|
|
|
++ * Source is monochrome image in system memory. This function expands the
|
|
|
++ * monochrome data to color image in video memory.
|
|
|
++ *
|
|
|
++ * @pSrcbuf: pointer to start of source buffer in system memory
|
|
|
++ * @srcDelta: Pitch value (in bytes) of the source buffer, +ive means top
|
|
|
++ * down and -ive mean button up
|
|
|
++ * @startBit: Mono data can start at any bit in a byte, this value should
|
|
|
++ * be 0 to 7
|
|
|
++ * @dBase: Address of destination : offset in frame buffer
|
|
|
++ * @dPitch: Pitch value of destination surface in BYTE
|
|
|
++ * @bpp: Color depth of destination surface
|
|
|
++ * @dx, dy: Starting coordinate of destination surface
|
|
|
++ * @width, height: width and height of rectange in pixel value
|
|
|
++ * @fColor,bColor: Foreground, Background color (corresponding to a 1, 0 in
|
|
|
++ * the monochrome data)
|
|
|
++ * @rop2: ROP value
|
|
|
++ */
|
|
|
++
|
|
|
++extern long deSystemMem2VideoMemMonoBlt(
|
|
|
++ const char *pSrcbuf,
|
|
|
++ long srcDelta,
|
|
|
++ unsigned long startBit,
|
|
|
++ unsigned long dBase,
|
|
|
++ unsigned long dPitch,
|
|
|
++ unsigned long bpp,
|
|
|
++ unsigned long dx, unsigned long dy,
|
|
|
++ unsigned long width, unsigned long height,
|
|
|
++ unsigned long fColor,
|
|
|
++ unsigned long bColor,
|
|
|
++ unsigned long rop2);
|
|
|
++
|
|
|
++extern unsigned long deGetTransparency(void);
|
|
|
++extern void deSetPixelFormat(unsigned long bpp);
|
|
|
+diff -Nur linux-2.6.30/drivers/video/sm7xx/smtcfb.c rt4ls/drivers/video/sm7xx/smtcfb.c
|
|
|
+--- linux-2.6.30/drivers/video/sm7xx/smtcfb.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/video/sm7xx/smtcfb.c 2009-06-12 16:28:47.728622169 +0200
|
|
|
+@@ -0,0 +1,1135 @@
|
|
|
++/*
|
|
|
++ * smtcfb.c -- Silicon Motion SM7xx frame buffer device
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 Silicon Motion Technology Corp.
|
|
|
++ * Authors: Ge Wang, gewang@siliconmotion.com
|
|
|
++ * Boyod boyod.yang@siliconmotion.com.cn
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file COPYING in the main directory of this archive for
|
|
|
++ * more details.
|
|
|
++ *
|
|
|
++ * Version 0.10.26192.21.01
|
|
|
++ * - Add PowerPC/Big endian support
|
|
|
++ * - Add 2D support for Lynx
|
|
|
++ * - Verified on2.6.19.2 Boyod.yang <boyod.yang@siliconmotion.com.cn>
|
|
|
++ *
|
|
|
++ * Version 0.09.2621.00.01
|
|
|
++ * - Only support Linux Kernel's version 2.6.21.
|
|
|
++ * Boyod.yang <boyod.yang@siliconmotion.com.cn>
|
|
|
++ *
|
|
|
++ * Version 0.09
|
|
|
++ * - Only support Linux Kernel's version 2.6.12.
|
|
|
++ * Boyod.yang <boyod.yang@siliconmotion.com.cn>
|
|
|
++ */
|
|
|
++
|
|
|
++#ifndef __KERNEL__
|
|
|
++#define __KERNEL__
|
|
|
++#endif
|
|
|
++
|
|
|
++#include <linux/io.h>
|
|
|
++#include <linux/fb.h>
|
|
|
++#include <linux/pci.h>
|
|
|
++#include <linux/init.h>
|
|
|
++#include <linux/uaccess.h>
|
|
|
++#include <linux/screen_info.h>
|
|
|
++
|
|
|
++#ifdef CONFIG_PM
|
|
|
++#include <linux/pm.h>
|
|
|
++#endif
|
|
|
++
|
|
|
++struct screen_info smtc_screen_info;
|
|
|
++
|
|
|
++#include "smtcfb.h"
|
|
|
++#include "smtc2d.h"
|
|
|
++
|
|
|
++#ifdef DEBUG
|
|
|
++#define smdbg(format, arg...) printk(KERN_DEBUG format , ## arg)
|
|
|
++#else
|
|
|
++#define smdbg(format, arg...)
|
|
|
++#endif
|
|
|
++
|
|
|
++/*
|
|
|
++* Private structure
|
|
|
++*/
|
|
|
++struct smtcfb_info {
|
|
|
++ /*
|
|
|
++ * The following is a pointer to be passed into the
|
|
|
++ * functions below. The modules outside the main
|
|
|
++ * voyager.c driver have no knowledge as to what
|
|
|
++ * is within this structure.
|
|
|
++ */
|
|
|
++ struct fb_info fb;
|
|
|
++ struct display_switch *dispsw;
|
|
|
++ struct pci_dev *dev;
|
|
|
++ signed int currcon;
|
|
|
++
|
|
|
++ struct {
|
|
|
++ u8 red, green, blue;
|
|
|
++ } palette[NR_RGB];
|
|
|
++
|
|
|
++ u_int palette_size;
|
|
|
++};
|
|
|
++
|
|
|
++struct par_info {
|
|
|
++ /*
|
|
|
++ * Hardware
|
|
|
++ */
|
|
|
++ u16 chipID;
|
|
|
++ unsigned char __iomem *m_pMMIO;
|
|
|
++ char __iomem *m_pLFB;
|
|
|
++ char *m_pDPR;
|
|
|
++ char *m_pVPR;
|
|
|
++ char *m_pCPR;
|
|
|
++
|
|
|
++ u_int width;
|
|
|
++ u_int height;
|
|
|
++ u_int hz;
|
|
|
++ u_long BaseAddressInVRAM;
|
|
|
++ u8 chipRevID;
|
|
|
++};
|
|
|
++
|
|
|
++struct vesa_mode_table {
|
|
|
++ char mode_index[15];
|
|
|
++ u16 lfb_width;
|
|
|
++ u16 lfb_height;
|
|
|
++ u16 lfb_depth;
|
|
|
++};
|
|
|
++
|
|
|
++static struct vesa_mode_table vesa_mode[] = {
|
|
|
++ {"640x480x8", 640, 480, 8},
|
|
|
++ {"800x480x8", 800, 480, 8},
|
|
|
++ {"800x600x8", 800, 600, 8},
|
|
|
++ {"1024x768x8", 1024, 768, 8},
|
|
|
++ {"1280x1024x8", 1280, 1024, 8},
|
|
|
++
|
|
|
++ {"640x480x16", 640, 480, 16},
|
|
|
++ {"800x480x16", 800, 480, 16},
|
|
|
++ {"800x600x16", 800, 600, 16},
|
|
|
++ {"1024x768x16", 1024, 768, 16},
|
|
|
++ {"1280x1024x16", 1280, 1024, 16},
|
|
|
++
|
|
|
++ {"640x480x24", 640, 480, 24},
|
|
|
++ {"800x480x24", 800, 480, 24},
|
|
|
++ {"800x600x24", 800, 600, 24},
|
|
|
++ {"1024x768x24", 1024, 768, 24},
|
|
|
++ {"1280x1024x24", 1280, 1024, 24},
|
|
|
++};
|
|
|
++
|
|
|
++char __iomem *smtc_RegBaseAddress; /* Memory Map IO starting address */
|
|
|
++char __iomem *smtc_VRAMBaseAddress; /* video memory starting address */
|
|
|
++
|
|
|
++char *smtc_2DBaseAddress; /* 2D engine starting address */
|
|
|
++char *smtc_2Ddataport; /* 2D data port offset */
|
|
|
++short smtc_2Dacceleration;
|
|
|
++
|
|
|
++static u32 colreg[17];
|
|
|
++static struct par_info hw; /* hardware information */
|
|
|
++
|
|
|
++#if defined(CONFIG_FB_SM7XX_DUALHEAD)
|
|
|
++
|
|
|
++static u32 colreg2[17];
|
|
|
++/* hardware information for second display (CRT) */
|
|
|
++static struct par_info hw2;
|
|
|
++/* fb_info for second display (CRT) */
|
|
|
++struct smtcfb_info smtcfb_info2;
|
|
|
++
|
|
|
++#endif /* CONFIG_FB_SM501_DUALHEAD */
|
|
|
++
|
|
|
++u16 smtc_ChipIDs[] = {
|
|
|
++ 0x710,
|
|
|
++ 0x712,
|
|
|
++ 0x720
|
|
|
++};
|
|
|
++
|
|
|
++int sm712be_flag;
|
|
|
++
|
|
|
++#define numSMTCchipIDs (sizeof(smtc_ChipIDs) / sizeof(u16))
|
|
|
++
|
|
|
++void deWaitForNotBusy(void)
|
|
|
++{
|
|
|
++ unsigned long i = 0x1000000;
|
|
|
++ while (i--) {
|
|
|
++ if ((smtc_seqr(0x16) & 0x18) == 0x10)
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ smtc_de_busy = 0;
|
|
|
++}
|
|
|
++
|
|
|
++static void sm712_set_timing(struct smtcfb_info *sfb,
|
|
|
++ struct par_info *ppar_info)
|
|
|
++{
|
|
|
++ int i = 0, j = 0;
|
|
|
++ u32 m_nScreenStride;
|
|
|
++
|
|
|
++ smdbg("\nppar_info->width = %d ppar_info->height = %d"
|
|
|
++ "sfb->fb.var.bits_per_pixel = %d ppar_info->hz = %d\n",
|
|
|
++ ppar_info->width, ppar_info->height,
|
|
|
++ sfb->fb.var.bits_per_pixel, ppar_info->hz);
|
|
|
++
|
|
|
++ for (j = 0; j < numVGAModes; j++) {
|
|
|
++ if (VGAMode[j].mmSizeX == ppar_info->width &&
|
|
|
++ VGAMode[j].mmSizeY == ppar_info->height &&
|
|
|
++ VGAMode[j].bpp == sfb->fb.var.bits_per_pixel &&
|
|
|
++ VGAMode[j].hz == ppar_info->hz) {
|
|
|
++
|
|
|
++ smdbg("\nVGAMode[j].mmSizeX = %d VGAMode[j].mmSizeY ="
|
|
|
++ "%d VGAMode[j].bpp = %d"
|
|
|
++ "VGAMode[j].hz=%d\n",
|
|
|
++ VGAMode[j].mmSizeX, VGAMode[j].mmSizeY,
|
|
|
++ VGAMode[j].bpp, VGAMode[j].hz);
|
|
|
++
|
|
|
++ smdbg("VGAMode index=%d\n", j);
|
|
|
++
|
|
|
++ smtc_mmiowb(0x0, 0x3c6);
|
|
|
++
|
|
|
++ smtc_seqw(0, 0x1);
|
|
|
++
|
|
|
++ smtc_mmiowb(VGAMode[j].Init_MISC, 0x3c2);
|
|
|
++
|
|
|
++ /* init SEQ register SR00 - SR04 */
|
|
|
++ for (i = 0; i < SIZE_SR00_SR04; i++)
|
|
|
++ smtc_seqw(i, VGAMode[j].Init_SR00_SR04[i]);
|
|
|
++
|
|
|
++ /* init SEQ register SR10 - SR24 */
|
|
|
++ for (i = 0; i < SIZE_SR10_SR24; i++)
|
|
|
++ smtc_seqw(i + 0x10,
|
|
|
++ VGAMode[j].Init_SR10_SR24[i]);
|
|
|
++
|
|
|
++ /* init SEQ register SR30 - SR75 */
|
|
|
++ for (i = 0; i < SIZE_SR30_SR75; i++)
|
|
|
++ if (((i + 0x30) != 0x62) \
|
|
|
++ && ((i + 0x30) != 0x6a) \
|
|
|
++ && ((i + 0x30) != 0x6b))
|
|
|
++ smtc_seqw(i + 0x30,
|
|
|
++ VGAMode[j].Init_SR30_SR75[i]);
|
|
|
++
|
|
|
++ /* init SEQ register SR80 - SR93 */
|
|
|
++ for (i = 0; i < SIZE_SR80_SR93; i++)
|
|
|
++ smtc_seqw(i + 0x80,
|
|
|
++ VGAMode[j].Init_SR80_SR93[i]);
|
|
|
++
|
|
|
++ /* init SEQ register SRA0 - SRAF */
|
|
|
++ for (i = 0; i < SIZE_SRA0_SRAF; i++)
|
|
|
++ smtc_seqw(i + 0xa0,
|
|
|
++ VGAMode[j].Init_SRA0_SRAF[i]);
|
|
|
++
|
|
|
++ /* init Graphic register GR00 - GR08 */
|
|
|
++ for (i = 0; i < SIZE_GR00_GR08; i++)
|
|
|
++ smtc_grphw(i, VGAMode[j].Init_GR00_GR08[i]);
|
|
|
++
|
|
|
++ /* init Attribute register AR00 - AR14 */
|
|
|
++ for (i = 0; i < SIZE_AR00_AR14; i++)
|
|
|
++ smtc_attrw(i, VGAMode[j].Init_AR00_AR14[i]);
|
|
|
++
|
|
|
++ /* init CRTC register CR00 - CR18 */
|
|
|
++ for (i = 0; i < SIZE_CR00_CR18; i++)
|
|
|
++ smtc_crtcw(i, VGAMode[j].Init_CR00_CR18[i]);
|
|
|
++
|
|
|
++ /* init CRTC register CR30 - CR4D */
|
|
|
++ for (i = 0; i < SIZE_CR30_CR4D; i++)
|
|
|
++ smtc_crtcw(i + 0x30,
|
|
|
++ VGAMode[j].Init_CR30_CR4D[i]);
|
|
|
++
|
|
|
++ /* init CRTC register CR90 - CRA7 */
|
|
|
++ for (i = 0; i < SIZE_CR90_CRA7; i++)
|
|
|
++ smtc_crtcw(i + 0x90,
|
|
|
++ VGAMode[j].Init_CR90_CRA7[i]);
|
|
|
++ }
|
|
|
++ }
|
|
|
++ smtc_mmiowb(0x67, 0x3c2);
|
|
|
++
|
|
|
++ /* set VPR registers */
|
|
|
++ writel(0x0, ppar_info->m_pVPR + 0x0C);
|
|
|
++ writel(0x0, ppar_info->m_pVPR + 0x40);
|
|
|
++
|
|
|
++ /* set data width */
|
|
|
++ m_nScreenStride =
|
|
|
++ (ppar_info->width * sfb->fb.var.bits_per_pixel) / 64;
|
|
|
++ switch (sfb->fb.var.bits_per_pixel) {
|
|
|
++ case 8:
|
|
|
++ writel(0x0, ppar_info->m_pVPR + 0x0);
|
|
|
++ break;
|
|
|
++ case 16:
|
|
|
++ writel(0x00020000, ppar_info->m_pVPR + 0x0);
|
|
|
++ break;
|
|
|
++ case 24:
|
|
|
++ writel(0x00040000, ppar_info->m_pVPR + 0x0);
|
|
|
++ break;
|
|
|
++ case 32:
|
|
|
++ writel(0x00030000, ppar_info->m_pVPR + 0x0);
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ writel((u32) (((m_nScreenStride + 2) << 16) | m_nScreenStride),
|
|
|
++ ppar_info->m_pVPR + 0x10);
|
|
|
++
|
|
|
++}
|
|
|
++
|
|
|
++static void sm712_setpalette(int regno, unsigned red, unsigned green,
|
|
|
++ unsigned blue, struct fb_info *info)
|
|
|
++{
|
|
|
++ struct par_info *cur_par = (struct par_info *)info->par;
|
|
|
++
|
|
|
++ if (cur_par->BaseAddressInVRAM)
|
|
|
++ /*
|
|
|
++ * second display palette for dual head. Enable CRT RAM, 6-bit
|
|
|
++ * RAM
|
|
|
++ */
|
|
|
++ smtc_seqw(0x66, (smtc_seqr(0x66) & 0xC3) | 0x20);
|
|
|
++ else
|
|
|
++ /* primary display palette. Enable LCD RAM only, 6-bit RAM */
|
|
|
++ smtc_seqw(0x66, (smtc_seqr(0x66) & 0xC3) | 0x10);
|
|
|
++ smtc_mmiowb(regno, dac_reg);
|
|
|
++ smtc_mmiowb(red >> 10, dac_val);
|
|
|
++ smtc_mmiowb(green >> 10, dac_val);
|
|
|
++ smtc_mmiowb(blue >> 10, dac_val);
|
|
|
++}
|
|
|
++
|
|
|
++static void smtc_set_timing(struct smtcfb_info *sfb, struct par_info
|
|
|
++ *ppar_info)
|
|
|
++{
|
|
|
++ switch (ppar_info->chipID) {
|
|
|
++ case 0x710:
|
|
|
++ case 0x712:
|
|
|
++ case 0x720:
|
|
|
++ sm712_set_timing(sfb, ppar_info);
|
|
|
++ break;
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++static struct fb_var_screeninfo smtcfb_var = {
|
|
|
++ .xres = 1024,
|
|
|
++ .yres = 600,
|
|
|
++ .xres_virtual = 1024,
|
|
|
++ .yres_virtual = 600,
|
|
|
++ .bits_per_pixel = 16,
|
|
|
++ .red = {16, 8, 0},
|
|
|
++ .green = {8, 8, 0},
|
|
|
++ .blue = {0, 8, 0},
|
|
|
++ .activate = FB_ACTIVATE_NOW,
|
|
|
++ .height = -1,
|
|
|
++ .width = -1,
|
|
|
++ .vmode = FB_VMODE_NONINTERLACED,
|
|
|
++};
|
|
|
++
|
|
|
++static struct fb_fix_screeninfo smtcfb_fix = {
|
|
|
++ .id = "sm712fb",
|
|
|
++ .type = FB_TYPE_PACKED_PIXELS,
|
|
|
++ .visual = FB_VISUAL_TRUECOLOR,
|
|
|
++ .line_length = 800 * 3,
|
|
|
++ .accel = FB_ACCEL_SMI_LYNX,
|
|
|
++};
|
|
|
++
|
|
|
++/* chan_to_field
|
|
|
++ *
|
|
|
++ * convert a colour value into a field position
|
|
|
++ *
|
|
|
++ * from pxafb.c
|
|
|
++ */
|
|
|
++
|
|
|
++static inline unsigned int chan_to_field(unsigned int chan,
|
|
|
++ struct fb_bitfield *bf)
|
|
|
++{
|
|
|
++ chan &= 0xffff;
|
|
|
++ chan >>= 16 - bf->length;
|
|
|
++ return chan << bf->offset;
|
|
|
++}
|
|
|
++
|
|
|
++static int smtc_setcolreg(unsigned regno, unsigned red, unsigned green,
|
|
|
++ unsigned blue, unsigned trans, struct fb_info *info)
|
|
|
++{
|
|
|
++ struct smtcfb_info *sfb = (struct smtcfb_info *)info;
|
|
|
++ u32 val;
|
|
|
++
|
|
|
++ if (regno > 255)
|
|
|
++ return 1;
|
|
|
++
|
|
|
++ switch (sfb->fb.fix.visual) {
|
|
|
++ case FB_VISUAL_DIRECTCOLOR:
|
|
|
++ case FB_VISUAL_TRUECOLOR:
|
|
|
++ /*
|
|
|
++ * 16/32 bit true-colour, use pseuo-palette for 16 base color
|
|
|
++ */
|
|
|
++ if (regno < 16) {
|
|
|
++ if (sfb->fb.var.bits_per_pixel == 16) {
|
|
|
++ u32 *pal = sfb->fb.pseudo_palette;
|
|
|
++ val = chan_to_field(red, &sfb->fb.var.red);
|
|
|
++ val |= chan_to_field(green, \
|
|
|
++ &sfb->fb.var.green);
|
|
|
++ val |= chan_to_field(blue, &sfb->fb.var.blue);
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ pal[regno] =
|
|
|
++ ((red & 0xf800) >> 8) |
|
|
|
++ ((green & 0xe000) >> 13) |
|
|
|
++ ((green & 0x1c00) << 3) |
|
|
|
++ ((blue & 0xf800) >> 3);
|
|
|
++#else
|
|
|
++ pal[regno] = val;
|
|
|
++#endif
|
|
|
++ } else {
|
|
|
++ u32 *pal = sfb->fb.pseudo_palette;
|
|
|
++ val = chan_to_field(red, &sfb->fb.var.red);
|
|
|
++ val |= chan_to_field(green, \
|
|
|
++ &sfb->fb.var.green);
|
|
|
++ val |= chan_to_field(blue, &sfb->fb.var.blue);
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ val =
|
|
|
++ (val & 0xff00ff00 >> 8) |
|
|
|
++ (val & 0x00ff00ff << 8);
|
|
|
++#endif
|
|
|
++ pal[regno] = val;
|
|
|
++ }
|
|
|
++ }
|
|
|
++ break;
|
|
|
++
|
|
|
++ case FB_VISUAL_PSEUDOCOLOR:
|
|
|
++ /* color depth 8 bit */
|
|
|
++ sm712_setpalette(regno, red, green, blue, info);
|
|
|
++ break;
|
|
|
++
|
|
|
++ default:
|
|
|
++ return 1; /* unknown type */
|
|
|
++ }
|
|
|
++
|
|
|
++ return 0;
|
|
|
++
|
|
|
++}
|
|
|
++
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++static ssize_t smtcfb_read(struct fb_info *info, char __user * buf, size_t
|
|
|
++ count, loff_t *ppos)
|
|
|
++{
|
|
|
++ unsigned long p = *ppos;
|
|
|
++
|
|
|
++ u32 *buffer, *dst;
|
|
|
++ u32 __iomem *src;
|
|
|
++ int c, i, cnt = 0, err = 0;
|
|
|
++ unsigned long total_size;
|
|
|
++
|
|
|
++ if (!info || !info->screen_base)
|
|
|
++ return -ENODEV;
|
|
|
++
|
|
|
++ if (info->state != FBINFO_STATE_RUNNING)
|
|
|
++ return -EPERM;
|
|
|
++
|
|
|
++ total_size = info->screen_size;
|
|
|
++
|
|
|
++ if (total_size == 0)
|
|
|
++ total_size = info->fix.smem_len;
|
|
|
++
|
|
|
++ if (p >= total_size)
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ if (count >= total_size)
|
|
|
++ count = total_size;
|
|
|
++
|
|
|
++ if (count + p > total_size)
|
|
|
++ count = total_size - p;
|
|
|
++
|
|
|
++ buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
|
|
|
++ if (!buffer)
|
|
|
++ return -ENOMEM;
|
|
|
++
|
|
|
++ src = (u32 __iomem *) (info->screen_base + p);
|
|
|
++
|
|
|
++ if (info->fbops->fb_sync)
|
|
|
++ info->fbops->fb_sync(info);
|
|
|
++
|
|
|
++ while (count) {
|
|
|
++ c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
|
|
|
++ dst = buffer;
|
|
|
++ for (i = c >> 2; i--;) {
|
|
|
++ *dst = fb_readl(src++);
|
|
|
++ *dst =
|
|
|
++ (*dst & 0xff00ff00 >> 8) |
|
|
|
++ (*dst & 0x00ff00ff << 8);
|
|
|
++ dst++;
|
|
|
++ }
|
|
|
++ if (c & 3) {
|
|
|
++ u8 *dst8 = (u8 *) dst;
|
|
|
++ u8 __iomem *src8 = (u8 __iomem *) src;
|
|
|
++
|
|
|
++ for (i = c & 3; i--;) {
|
|
|
++ if (i & 1) {
|
|
|
++ *dst8++ = fb_readb(++src8);
|
|
|
++ } else {
|
|
|
++ *dst8++ = fb_readb(--src8);
|
|
|
++ src8 += 2;
|
|
|
++ }
|
|
|
++ }
|
|
|
++ src = (u32 __iomem *) src8;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (copy_to_user(buf, buffer, c)) {
|
|
|
++ err = -EFAULT;
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ *ppos += c;
|
|
|
++ buf += c;
|
|
|
++ cnt += c;
|
|
|
++ count -= c;
|
|
|
++ }
|
|
|
++
|
|
|
++ kfree(buffer);
|
|
|
++
|
|
|
++ return (err) ? err : cnt;
|
|
|
++}
|
|
|
++
|
|
|
++static ssize_t
|
|
|
++smtcfb_write(struct fb_info *info, const char __user *buf, size_t count,
|
|
|
++ loff_t *ppos)
|
|
|
++{
|
|
|
++ unsigned long p = *ppos;
|
|
|
++
|
|
|
++ u32 *buffer, *src;
|
|
|
++ u32 __iomem *dst;
|
|
|
++ int c, i, cnt = 0, err = 0;
|
|
|
++ unsigned long total_size;
|
|
|
++
|
|
|
++ if (!info || !info->screen_base)
|
|
|
++ return -ENODEV;
|
|
|
++
|
|
|
++ if (info->state != FBINFO_STATE_RUNNING)
|
|
|
++ return -EPERM;
|
|
|
++
|
|
|
++ total_size = info->screen_size;
|
|
|
++
|
|
|
++ if (total_size == 0)
|
|
|
++ total_size = info->fix.smem_len;
|
|
|
++
|
|
|
++ if (p > total_size)
|
|
|
++ return -EFBIG;
|
|
|
++
|
|
|
++ if (count > total_size) {
|
|
|
++ err = -EFBIG;
|
|
|
++ count = total_size;
|
|
|
++ }
|
|
|
++
|
|
|
++ if (count + p > total_size) {
|
|
|
++ if (!err)
|
|
|
++ err = -ENOSPC;
|
|
|
++
|
|
|
++ count = total_size - p;
|
|
|
++ }
|
|
|
++
|
|
|
++ buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
|
|
|
++ if (!buffer)
|
|
|
++ return -ENOMEM;
|
|
|
++
|
|
|
++ dst = (u32 __iomem *) (info->screen_base + p);
|
|
|
++
|
|
|
++ if (info->fbops->fb_sync)
|
|
|
++ info->fbops->fb_sync(info);
|
|
|
++
|
|
|
++ while (count) {
|
|
|
++ c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
|
|
|
++ src = buffer;
|
|
|
++
|
|
|
++ if (copy_from_user(src, buf, c)) {
|
|
|
++ err = -EFAULT;
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ for (i = c >> 2; i--;) {
|
|
|
++ fb_writel((*src & 0xff00ff00 >> 8) |
|
|
|
++ (*src & 0x00ff00ff << 8), dst++);
|
|
|
++ src++;
|
|
|
++ }
|
|
|
++ if (c & 3) {
|
|
|
++ u8 *src8 = (u8 *) src;
|
|
|
++ u8 __iomem *dst8 = (u8 __iomem *) dst;
|
|
|
++
|
|
|
++ for (i = c & 3; i--;) {
|
|
|
++ if (i & 1) {
|
|
|
++ fb_writeb(*src8++, ++dst8);
|
|
|
++ } else {
|
|
|
++ fb_writeb(*src8++, --dst8);
|
|
|
++ dst8 += 2;
|
|
|
++ }
|
|
|
++ }
|
|
|
++ dst = (u32 __iomem *) dst8;
|
|
|
++ }
|
|
|
++
|
|
|
++ *ppos += c;
|
|
|
++ buf += c;
|
|
|
++ cnt += c;
|
|
|
++ count -= c;
|
|
|
++ }
|
|
|
++
|
|
|
++ kfree(buffer);
|
|
|
++
|
|
|
++ return (cnt) ? cnt : err;
|
|
|
++}
|
|
|
++#endif /* ! __BIG_ENDIAN */
|
|
|
++
|
|
|
++#include "smtc2d.c"
|
|
|
++
|
|
|
++void smtcfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
|
|
|
++{
|
|
|
++ struct par_info *p = (struct par_info *)info->par;
|
|
|
++
|
|
|
++ if (smtc_2Dacceleration) {
|
|
|
++ if (!area->width || !area->height)
|
|
|
++ return;
|
|
|
++
|
|
|
++ deCopy(p->BaseAddressInVRAM, 0, info->var.bits_per_pixel,
|
|
|
++ area->dx, area->dy, area->width, area->height,
|
|
|
++ p->BaseAddressInVRAM, 0, area->sx, area->sy, 0, 0xC);
|
|
|
++
|
|
|
++ } else
|
|
|
++ cfb_copyarea(info, area);
|
|
|
++}
|
|
|
++
|
|
|
++void smtcfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
|
|
|
++{
|
|
|
++ struct par_info *p = (struct par_info *)info->par;
|
|
|
++
|
|
|
++ if (smtc_2Dacceleration) {
|
|
|
++ if (!rect->width || !rect->height)
|
|
|
++ return;
|
|
|
++ if (info->var.bits_per_pixel >= 24)
|
|
|
++ deFillRect(p->BaseAddressInVRAM, 0, rect->dx * 3,
|
|
|
++ rect->dy * 3, rect->width * 3, rect->height,
|
|
|
++ rect->color);
|
|
|
++ else
|
|
|
++ deFillRect(p->BaseAddressInVRAM, 0, rect->dx, rect->dy,
|
|
|
++ rect->width, rect->height, rect->color);
|
|
|
++ } else
|
|
|
++ cfb_fillrect(info, rect);
|
|
|
++}
|
|
|
++
|
|
|
++void smtcfb_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
|
++{
|
|
|
++ struct par_info *p = (struct par_info *)info->par;
|
|
|
++ u32 bg_col = 0, fg_col = 0;
|
|
|
++
|
|
|
++ if ((smtc_2Dacceleration) && (image->depth == 1)) {
|
|
|
++ if (smtc_de_busy)
|
|
|
++ deWaitForNotBusy();
|
|
|
++
|
|
|
++ switch (info->var.bits_per_pixel) {
|
|
|
++ case 8:
|
|
|
++ bg_col = image->bg_color;
|
|
|
++ fg_col = image->fg_color;
|
|
|
++ break;
|
|
|
++ case 16:
|
|
|
++ bg_col =
|
|
|
++ ((u32 *) (info->pseudo_palette))[image->bg_color];
|
|
|
++ fg_col =
|
|
|
++ ((u32 *) (info->pseudo_palette))[image->fg_color];
|
|
|
++ break;
|
|
|
++ case 32:
|
|
|
++ bg_col =
|
|
|
++ ((u32 *) (info->pseudo_palette))[image->bg_color];
|
|
|
++ fg_col =
|
|
|
++ ((u32 *) (info->pseudo_palette))[image->fg_color];
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ deSystemMem2VideoMemMonoBlt(
|
|
|
++ image->data,
|
|
|
++ image->width / 8,
|
|
|
++ 0,
|
|
|
++ p->BaseAddressInVRAM,
|
|
|
++ 0,
|
|
|
++ 0,
|
|
|
++ image->dx, image->dy,
|
|
|
++ image->width, image->height,
|
|
|
++ fg_col, bg_col,
|
|
|
++ 0x0C);
|
|
|
++
|
|
|
++ } else
|
|
|
++ cfb_imageblit(info, image);
|
|
|
++}
|
|
|
++
|
|
|
++static struct fb_ops smtcfb_ops = {
|
|
|
++ .owner = THIS_MODULE,
|
|
|
++ .fb_setcolreg = smtc_setcolreg,
|
|
|
++ .fb_fillrect = smtcfb_fillrect,
|
|
|
++ .fb_imageblit = smtcfb_imageblit,
|
|
|
++ .fb_copyarea = smtcfb_copyarea,
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ .fb_read = smtcfb_read,
|
|
|
++ .fb_write = smtcfb_write,
|
|
|
++#endif
|
|
|
++
|
|
|
++};
|
|
|
++
|
|
|
++void smtcfb_setmode(struct smtcfb_info *sfb)
|
|
|
++{
|
|
|
++ switch (sfb->fb.var.bits_per_pixel) {
|
|
|
++ case 32:
|
|
|
++ sfb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
|
|
|
++ sfb->fb.fix.line_length = sfb->fb.var.xres * 4;
|
|
|
++ sfb->fb.var.red.length = 8;
|
|
|
++ sfb->fb.var.green.length = 8;
|
|
|
++ sfb->fb.var.blue.length = 8;
|
|
|
++ sfb->fb.var.red.offset = 16;
|
|
|
++ sfb->fb.var.green.offset = 8;
|
|
|
++ sfb->fb.var.blue.offset = 0;
|
|
|
++
|
|
|
++ break;
|
|
|
++ case 8:
|
|
|
++ sfb->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
|
|
|
++ sfb->fb.fix.line_length = sfb->fb.var.xres;
|
|
|
++ sfb->fb.var.red.offset = 5;
|
|
|
++ sfb->fb.var.red.length = 3;
|
|
|
++ sfb->fb.var.green.offset = 2;
|
|
|
++ sfb->fb.var.green.length = 3;
|
|
|
++ sfb->fb.var.blue.offset = 0;
|
|
|
++ sfb->fb.var.blue.length = 2;
|
|
|
++ break;
|
|
|
++ case 24:
|
|
|
++ sfb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
|
|
|
++ sfb->fb.fix.line_length = sfb->fb.var.xres * 3;
|
|
|
++ sfb->fb.var.red.length = 8;
|
|
|
++ sfb->fb.var.green.length = 8;
|
|
|
++ sfb->fb.var.blue.length = 8;
|
|
|
++
|
|
|
++ sfb->fb.var.red.offset = 16;
|
|
|
++ sfb->fb.var.green.offset = 8;
|
|
|
++ sfb->fb.var.blue.offset = 0;
|
|
|
++
|
|
|
++ break;
|
|
|
++ case 16:
|
|
|
++ default:
|
|
|
++ sfb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
|
|
|
++ sfb->fb.fix.line_length = sfb->fb.var.xres * 2;
|
|
|
++
|
|
|
++ sfb->fb.var.red.length = 5;
|
|
|
++ sfb->fb.var.green.length = 6;
|
|
|
++ sfb->fb.var.blue.length = 5;
|
|
|
++
|
|
|
++ sfb->fb.var.red.offset = 11;
|
|
|
++ sfb->fb.var.green.offset = 5;
|
|
|
++ sfb->fb.var.blue.offset = 0;
|
|
|
++
|
|
|
++ break;
|
|
|
++ }
|
|
|
++
|
|
|
++ hw.width = sfb->fb.var.xres;
|
|
|
++ hw.height = sfb->fb.var.yres;
|
|
|
++ hw.hz = 60;
|
|
|
++ smtc_set_timing(sfb, &hw);
|
|
|
++ if (smtc_2Dacceleration) {
|
|
|
++ printk("2D acceleration enabled!\n");
|
|
|
++ /* Init smtc drawing engine */
|
|
|
++ deInit(sfb->fb.var.xres, sfb->fb.var.yres,
|
|
|
++ sfb->fb.var.bits_per_pixel);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++#if defined(CONFIG_FB_SM7XX_DUALHEAD)
|
|
|
++void smtc_head2_init(struct smtcfb_info *sfb)
|
|
|
++{
|
|
|
++ smtcfb_info2 = *sfb;
|
|
|
++ smtcfb_info2.fb.pseudo_palette = &colreg2;
|
|
|
++ smtcfb_info2.fb.par = &hw2;
|
|
|
++ sprintf(smtcfb_info2.fb.fix.id, "sm%Xfb2", hw.chipID);
|
|
|
++ hw2.chipID = hw.chipID;
|
|
|
++ hw2.chipRevID = hw.chipRevID;
|
|
|
++ hw2.width = smtcfb_info2.fb.var.xres;
|
|
|
++ hw2.height = smtcfb_info2.fb.var.yres;
|
|
|
++ hw2.hz = 60;
|
|
|
++ hw2.m_pMMIO = smtc_RegBaseAddress;
|
|
|
++
|
|
|
++ /*hard code 2nd head starting from half VRAM size postion */
|
|
|
++ hw2.BaseAddressInVRAM = smtcfb_info2.fb.fix.smem_len / 2;
|
|
|
++
|
|
|
++ hw2.m_pLFB = smtc_VRAMBaseAddress + hw2.BaseAddressInVRAM;
|
|
|
++ smtcfb_info2.fb.screen_base = hw2.m_pLFB;
|
|
|
++
|
|
|
++ writel(hw2.BaseAddressInVRAM >> 3, hw2.m_pVPR + 0x10);
|
|
|
++}
|
|
|
++#endif
|
|
|
++
|
|
|
++/*
|
|
|
++ * Alloc struct smtcfb_info and assign the default value
|
|
|
++ */
|
|
|
++static struct smtcfb_info *__devinit smtc_alloc_fb_info(struct pci_dev *dev,
|
|
|
++ char *name)
|
|
|
++{
|
|
|
++ struct smtcfb_info *sfb;
|
|
|
++
|
|
|
++ sfb = kmalloc(sizeof(struct smtcfb_info), GFP_KERNEL);
|
|
|
++
|
|
|
++ if (!sfb)
|
|
|
++ return NULL;
|
|
|
++
|
|
|
++ memset(sfb, 0, sizeof(struct smtcfb_info));
|
|
|
++
|
|
|
++ sfb->currcon = -1;
|
|
|
++ sfb->dev = dev;
|
|
|
++
|
|
|
++ /*** Init sfb->fb with default value ***/
|
|
|
++ sfb->fb.flags = FBINFO_FLAG_DEFAULT;
|
|
|
++ sfb->fb.fbops = &smtcfb_ops;
|
|
|
++ sfb->fb.var = smtcfb_var;
|
|
|
++ sfb->fb.fix = smtcfb_fix;
|
|
|
++
|
|
|
++ strcpy(sfb->fb.fix.id, name);
|
|
|
++
|
|
|
++ sfb->fb.fix.type = FB_TYPE_PACKED_PIXELS;
|
|
|
++ sfb->fb.fix.type_aux = 0;
|
|
|
++ sfb->fb.fix.xpanstep = 0;
|
|
|
++ sfb->fb.fix.ypanstep = 0;
|
|
|
++ sfb->fb.fix.ywrapstep = 0;
|
|
|
++ sfb->fb.fix.accel = FB_ACCEL_SMI_LYNX;
|
|
|
++
|
|
|
++ sfb->fb.var.nonstd = 0;
|
|
|
++ sfb->fb.var.activate = FB_ACTIVATE_NOW;
|
|
|
++ sfb->fb.var.height = -1;
|
|
|
++ sfb->fb.var.width = -1;
|
|
|
++ /* text mode acceleration */
|
|
|
++ sfb->fb.var.accel_flags = FB_ACCELF_TEXT;
|
|
|
++ sfb->fb.var.vmode = FB_VMODE_NONINTERLACED;
|
|
|
++ sfb->fb.par = &hw;
|
|
|
++ sfb->fb.pseudo_palette = colreg;
|
|
|
++
|
|
|
++ return sfb;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Unmap in the memory mapped IO registers
|
|
|
++ */
|
|
|
++
|
|
|
++static void __devinit smtc_unmap_mmio(struct smtcfb_info *sfb)
|
|
|
++{
|
|
|
++ if (sfb && smtc_RegBaseAddress)
|
|
|
++ smtc_RegBaseAddress = NULL;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Map in the screen memory
|
|
|
++ */
|
|
|
++
|
|
|
++static int __devinit smtc_map_smem(struct smtcfb_info *sfb,
|
|
|
++ struct pci_dev *dev, u_long smem_len)
|
|
|
++{
|
|
|
++ if (sfb->fb.var.bits_per_pixel == 32) {
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ sfb->fb.fix.smem_start = pci_resource_start(dev, 0)
|
|
|
++ + 0x800000;
|
|
|
++#else
|
|
|
++ sfb->fb.fix.smem_start = pci_resource_start(dev, 0);
|
|
|
++#endif
|
|
|
++ } else {
|
|
|
++ sfb->fb.fix.smem_start = pci_resource_start(dev, 0);
|
|
|
++ }
|
|
|
++
|
|
|
++ sfb->fb.fix.smem_len = smem_len;
|
|
|
++
|
|
|
++ sfb->fb.screen_base = smtc_VRAMBaseAddress;
|
|
|
++
|
|
|
++ if (!sfb->fb.screen_base) {
|
|
|
++ printk(KERN_INFO "%s: unable to map screen memory\n",
|
|
|
++ sfb->fb.fix.id);
|
|
|
++ return -ENOMEM;
|
|
|
++ }
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * Unmap in the screen memory
|
|
|
++ *
|
|
|
++ */
|
|
|
++static void __devinit smtc_unmap_smem(struct smtcfb_info *sfb)
|
|
|
++{
|
|
|
++ if (sfb && sfb->fb.screen_base) {
|
|
|
++ iounmap(sfb->fb.screen_base);
|
|
|
++ sfb->fb.screen_base = NULL;
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++/*
|
|
|
++ * We need to wake up the LynxEM+, and make sure its in linear memory mode.
|
|
|
++ */
|
|
|
++static inline void __devinit sm7xx_init_hw(void)
|
|
|
++{
|
|
|
++ outb_p(0x18, 0x3c4);
|
|
|
++ outb_p(0x11, 0x3c5);
|
|
|
++}
|
|
|
++
|
|
|
++static void __devinit smtc_free_fb_info(struct smtcfb_info *sfb)
|
|
|
++{
|
|
|
++ if (sfb) {
|
|
|
++ fb_alloc_cmap(&sfb->fb.cmap, 0, 0);
|
|
|
++ kfree(sfb);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++static int __init smtcfb_init(void)
|
|
|
++{
|
|
|
++ struct smtcfb_info *sfb;
|
|
|
++ u_long smem_size = 0x00800000; /* default 8MB */
|
|
|
++ char name[16];
|
|
|
++ int err, i = 0;
|
|
|
++ unsigned long pFramebufferPhysical;
|
|
|
++ struct pci_dev *pdev = NULL;
|
|
|
++
|
|
|
++ printk(KERN_INFO
|
|
|
++ "Silicon Motion display driver " SMTC_LINUX_FB_VERSION "\n");
|
|
|
++
|
|
|
++ /* init the global variable */
|
|
|
++ smtc_2Dacceleration = 0; /* default no 2D acceleration */
|
|
|
++
|
|
|
++ do {
|
|
|
++ pdev = pci_get_device(0x126f, smtc_ChipIDs[i], pdev);
|
|
|
++ if (pdev == NULL) {
|
|
|
++ i++;
|
|
|
++ } else {
|
|
|
++ hw.chipID = smtc_ChipIDs[i];
|
|
|
++ break;
|
|
|
++ }
|
|
|
++ } while (i < numSMTCchipIDs);
|
|
|
++
|
|
|
++ err = pci_enable_device(pdev); /* enable SMTC chip */
|
|
|
++
|
|
|
++ if (err)
|
|
|
++ return err;
|
|
|
++
|
|
|
++ err = -ENOMEM;
|
|
|
++
|
|
|
++ sprintf(name, "sm%Xfb", hw.chipID);
|
|
|
++
|
|
|
++ sfb = smtc_alloc_fb_info(pdev, name);
|
|
|
++
|
|
|
++ if (!sfb)
|
|
|
++ goto failed;
|
|
|
++
|
|
|
++ sm7xx_init_hw();
|
|
|
++
|
|
|
++ /*get mode parameter from smtc_screen_info */
|
|
|
++ if (smtc_screen_info.lfb_width != 0) {
|
|
|
++ sfb->fb.var.xres = smtc_screen_info.lfb_width;
|
|
|
++ sfb->fb.var.yres = smtc_screen_info.lfb_height;
|
|
|
++ sfb->fb.var.bits_per_pixel = smtc_screen_info.lfb_depth;
|
|
|
++ } else {
|
|
|
++ /* default resolution 1024x600 16bit mode */
|
|
|
++ sfb->fb.var.xres = SCREEN_X_RES;
|
|
|
++ sfb->fb.var.yres = SCREEN_Y_RES;
|
|
|
++ sfb->fb.var.bits_per_pixel = SCREEN_BPP;
|
|
|
++ }
|
|
|
++
|
|
|
++ smdbg("\nsfb->fb.var.bits_per_pixel = %d sm712be_flag = %d\n",
|
|
|
++ sfb->fb.var.bits_per_pixel, sm712be_flag);
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ if (sm712be_flag == 1 && sfb->fb.var.bits_per_pixel == 24)
|
|
|
++ sfb->fb.var.bits_per_pixel = (smtc_screen_info.lfb_depth = 32);
|
|
|
++#endif
|
|
|
++ /* Map address and memory detection */
|
|
|
++ pFramebufferPhysical = pci_resource_start(pdev, 0);
|
|
|
++ pci_read_config_byte(pdev, PCI_REVISION_ID, &hw.chipRevID);
|
|
|
++
|
|
|
++ switch (hw.chipID) {
|
|
|
++ case 0x710:
|
|
|
++ case 0x712:
|
|
|
++ sfb->fb.fix.mmio_start = pFramebufferPhysical + 0x00400000;
|
|
|
++ sfb->fb.fix.mmio_len = 0x00400000;
|
|
|
++ smem_size = SM712_VIDEOMEMORYSIZE;
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ hw.m_pLFB = (smtc_VRAMBaseAddress =
|
|
|
++ ioremap(pFramebufferPhysical, 0x00c00000));
|
|
|
++#else
|
|
|
++ hw.m_pLFB = (smtc_VRAMBaseAddress =
|
|
|
++ ioremap(pFramebufferPhysical, 0x00800000));
|
|
|
++#endif
|
|
|
++ hw.m_pMMIO = (smtc_RegBaseAddress =
|
|
|
++ smtc_VRAMBaseAddress + 0x00700000);
|
|
|
++ smtc_2DBaseAddress = (hw.m_pDPR =
|
|
|
++ smtc_VRAMBaseAddress + 0x00408000);
|
|
|
++ smtc_2Ddataport = smtc_VRAMBaseAddress + DE_DATA_PORT_712;
|
|
|
++ hw.m_pVPR = hw.m_pLFB + 0x0040c000;
|
|
|
++ if (sfb->fb.var.bits_per_pixel == 32) {
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ smtc_VRAMBaseAddress += 0x800000;
|
|
|
++ hw.m_pLFB += 0x800000;
|
|
|
++ printk(KERN_INFO
|
|
|
++ "\nsmtc_VRAMBaseAddress=%p hw.m_pLFB=%p\n",
|
|
|
++ smtc_VRAMBaseAddress, hw.m_pLFB);
|
|
|
++#endif
|
|
|
++ }
|
|
|
++ if (!smtc_RegBaseAddress) {
|
|
|
++
|
|
|
++ printk(KERN_INFO
|
|
|
++ "%s: unable to map memory mapped IO\n",
|
|
|
++ sfb->fb.fix.id);
|
|
|
++
|
|
|
++ return -ENOMEM;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* set MCLK = 14.31818 * (0x16 / 0x2) */
|
|
|
++ smtc_seqw(0x6a, 0x16);
|
|
|
++ smtc_seqw(0x6b, 0x02);
|
|
|
++ smtc_seqw(0x62, 0x3e);
|
|
|
++ /* enable PCI burst */
|
|
|
++ smtc_seqw(0x17, 0x20);
|
|
|
++ /* enabel word swap */
|
|
|
++ if (sfb->fb.var.bits_per_pixel == 32) {
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++ smtc_seqw(0x17, 0x30);
|
|
|
++#endif
|
|
|
++ }
|
|
|
++#ifdef CONFIG_FB_SM7XX_ACCEL
|
|
|
++ smtc_2Dacceleration = 1;
|
|
|
++#endif
|
|
|
++
|
|
|
++ break;
|
|
|
++
|
|
|
++ case 0x720:
|
|
|
++ sfb->fb.fix.mmio_start = pFramebufferPhysical;
|
|
|
++ sfb->fb.fix.mmio_len = 0x00200000;
|
|
|
++ smem_size = SM722_VIDEOMEMORYSIZE;
|
|
|
++ smtc_2DBaseAddress = (hw.m_pDPR =
|
|
|
++ ioremap(pFramebufferPhysical, 0x00a00000));
|
|
|
++ hw.m_pLFB = (smtc_VRAMBaseAddress =
|
|
|
++ smtc_2DBaseAddress + 0x00200000);
|
|
|
++ hw.m_pMMIO = (smtc_RegBaseAddress =
|
|
|
++ smtc_2DBaseAddress + 0x000c0000);
|
|
|
++ smtc_2Ddataport = smtc_2DBaseAddress + DE_DATA_PORT_722;
|
|
|
++ hw.m_pVPR = smtc_2DBaseAddress + 0x800;
|
|
|
++
|
|
|
++ smtc_seqw(0x62, 0xff);
|
|
|
++ smtc_seqw(0x6a, 0x0d);
|
|
|
++ smtc_seqw(0x6b, 0x02);
|
|
|
++ smtc_2Dacceleration = 0;
|
|
|
++ break;
|
|
|
++ default:
|
|
|
++ printk(KERN_INFO
|
|
|
++ "No valid Silicon Motion display chip was detected!\n");
|
|
|
++
|
|
|
++ smtc_free_fb_info(sfb);
|
|
|
++ return err;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* can support 32 bpp */
|
|
|
++ if (15 == sfb->fb.var.bits_per_pixel)
|
|
|
++ sfb->fb.var.bits_per_pixel = 16;
|
|
|
++
|
|
|
++ sfb->fb.var.xres_virtual = sfb->fb.var.xres;
|
|
|
++
|
|
|
++ sfb->fb.var.yres_virtual = sfb->fb.var.yres;
|
|
|
++ err = smtc_map_smem(sfb, pdev, smem_size);
|
|
|
++ if (err)
|
|
|
++ goto failed;
|
|
|
++
|
|
|
++ smtcfb_setmode(sfb);
|
|
|
++ /* Primary display starting from 0 postion */
|
|
|
++ hw.BaseAddressInVRAM = 0;
|
|
|
++ sfb->fb.par = &hw;
|
|
|
++
|
|
|
++ err = register_framebuffer(&sfb->fb);
|
|
|
++ if (err < 0)
|
|
|
++ goto failed;
|
|
|
++
|
|
|
++ printk(KERN_INFO "Silicon Motion SM%X Rev%X primary display mode"
|
|
|
++ "%dx%d-%d Init Complete.\n", hw.chipID, hw.chipRevID,
|
|
|
++ sfb->fb.var.xres, sfb->fb.var.yres,
|
|
|
++ sfb->fb.var.bits_per_pixel);
|
|
|
++
|
|
|
++#if defined(CONFIG_FB_SM7XX_DUALHEAD)
|
|
|
++ smtc_head2_init(sfb);
|
|
|
++ err = register_framebuffer(&smtcfb_info2.fb);
|
|
|
++
|
|
|
++ /* if second head display fails, also fails the primary display */
|
|
|
++ if (err < 0) {
|
|
|
++ printk(KERN_INFO
|
|
|
++ "Silicon Motion, Inc. second head init fail\n");
|
|
|
++ goto failed;
|
|
|
++ }
|
|
|
++
|
|
|
++ printk(KERN_INFO "Silicon Motion SM%X Rev%X secondary display mode"
|
|
|
++ "%dx%d-%d Init Complete.\n", hw.chipID, hw.chipRevID,
|
|
|
++ hw2.width, hw2.height,
|
|
|
++ smtcfb_info2.fb.var.bits_per_pixel);
|
|
|
++#endif
|
|
|
++
|
|
|
++ return 0;
|
|
|
++
|
|
|
++ failed:
|
|
|
++ printk(KERN_INFO "Silicon Motion, Inc. primary display init fail\n");
|
|
|
++
|
|
|
++ smtc_unmap_smem(sfb);
|
|
|
++ smtc_unmap_mmio(sfb);
|
|
|
++ smtc_free_fb_info(sfb);
|
|
|
++
|
|
|
++ return err;
|
|
|
++}
|
|
|
++
|
|
|
++static void __exit smtcfb_exit(void)
|
|
|
++{
|
|
|
++}
|
|
|
++
|
|
|
++module_init(smtcfb_init);
|
|
|
++module_exit(smtcfb_exit);
|
|
|
++
|
|
|
++/*
|
|
|
++ * sm712be_setup - process command line options
|
|
|
++ * @options: string of options
|
|
|
++ * Returns zero.
|
|
|
++ *
|
|
|
++ */
|
|
|
++static int __init sm712be_setup(char *options)
|
|
|
++{
|
|
|
++ sm712be_flag = 0;
|
|
|
++ if (!options || !*options) {
|
|
|
++ smdbg("\n No sm712be parameter\n");
|
|
|
++ return -EINVAL;
|
|
|
++ }
|
|
|
++ if (strstr(options, "enable") != NULL)
|
|
|
++ sm712be_flag = 1;
|
|
|
++
|
|
|
++ smdbg("\nsm712be_setup = %s sm712be_flag = %d\n", options,
|
|
|
++ sm712be_flag);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
++__setup("sm712be=", sm712be_setup);
|
|
|
++
|
|
|
++/*
|
|
|
++ * sm712vga_setup - process command line options, get vga parameter
|
|
|
++ * @options: string of options
|
|
|
++ * Returns zero.
|
|
|
++ *
|
|
|
++ */
|
|
|
++static int __init sm712vga_setup(char *options)
|
|
|
++{
|
|
|
++ int index;
|
|
|
++ sm712be_flag = 0;
|
|
|
++
|
|
|
++ if (!options || !*options) {
|
|
|
++ smdbg("\n No vga parameter\n");
|
|
|
++ return -EINVAL;
|
|
|
++ }
|
|
|
++
|
|
|
++ smtc_screen_info.lfb_width = 0;
|
|
|
++ smtc_screen_info.lfb_height = 0;
|
|
|
++ smtc_screen_info.lfb_depth = 0;
|
|
|
++
|
|
|
++ smdbg("\nsm712vga_setup = %s\n", options);
|
|
|
++
|
|
|
++ for (index = 0;
|
|
|
++ index < (sizeof(vesa_mode) / sizeof(struct vesa_mode_table));
|
|
|
++ index++) {
|
|
|
++ if (strstr(options, vesa_mode[index].mode_index)) {
|
|
|
++ smtc_screen_info.lfb_width = vesa_mode[index].lfb_width;
|
|
|
++ smtc_screen_info.lfb_height =
|
|
|
++ vesa_mode[index].lfb_height;
|
|
|
++ smtc_screen_info.lfb_depth = vesa_mode[index].lfb_depth;
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++ return -1;
|
|
|
++}
|
|
|
++
|
|
|
++__setup("vga=", sm712vga_setup);
|
|
|
++
|
|
|
++MODULE_AUTHOR("Siliconmotion ");
|
|
|
++MODULE_DESCRIPTION("Framebuffer driver for SMI Graphic Cards");
|
|
|
++MODULE_LICENSE("GPL");
|
|
|
+diff -Nur linux-2.6.30/drivers/video/sm7xx/smtcfb.h rt4ls/drivers/video/sm7xx/smtcfb.h
|
|
|
+--- linux-2.6.30/drivers/video/sm7xx/smtcfb.h 1970-01-01 01:00:00.000000000 +0100
|
|
|
++++ rt4ls/drivers/video/sm7xx/smtcfb.h 2009-06-12 16:28:47.728622169 +0200
|
|
|
+@@ -0,0 +1,793 @@
|
|
|
++/*
|
|
|
++ * smtcfb.h -- Silicon Motion SM7xx frame buffer device
|
|
|
++ *
|
|
|
++ * Copyright (C) 2006 Silicon Motion Technology Corp.
|
|
|
++ * Authors: Ge Wang, gewang@siliconmotion.com
|
|
|
++ * Boyod boyod.yang@siliconmotion.com.cn
|
|
|
++ *
|
|
|
++ * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology
|
|
|
++ * Author: Wu Zhangjin, wuzj@lemote.com
|
|
|
++ *
|
|
|
++ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
++ * License. See the file COPYING in the main directory of this archive for
|
|
|
++ * more details.
|
|
|
++ */
|
|
|
++
|
|
|
++#define SMTC_LINUX_FB_VERSION "version 0.11.2619.21.01 July 27, 2008"
|
|
|
++
|
|
|
++#define NR_PALETTE 256
|
|
|
++#define NR_RGB 2
|
|
|
++
|
|
|
++#define FB_ACCEL_SMI_LYNX 88
|
|
|
++
|
|
|
++#ifdef __BIG_ENDIAN
|
|
|
++#define PC_VGA 0
|
|
|
++#else
|
|
|
++#define PC_VGA 1
|
|
|
++#endif
|
|
|
++
|
|
|
++#define SCREEN_X_RES 1024
|
|
|
++#define SCREEN_Y_RES 600
|
|
|
++#define SCREEN_BPP 16
|
|
|
++
|
|
|
++#ifndef FIELD_OFFSET
|
|
|
++#define FIELD_OFSFET(type, field) \
|
|
|
++ ((unsigned long) (PUCHAR) & (((type *)0)->field))
|
|
|
++#endif
|
|
|
++
|
|
|
++/*Assume SM712 graphics chip has 4MB VRAM */
|
|
|
++#define SM712_VIDEOMEMORYSIZE 0x00400000
|
|
|
++/*Assume SM722 graphics chip has 8MB VRAM */
|
|
|
++#define SM722_VIDEOMEMORYSIZE 0x00800000
|
|
|
++
|
|
|
++#define dac_reg (0x3c8)
|
|
|
++#define dac_val (0x3c9)
|
|
|
++
|
|
|
++extern char *smtc_RegBaseAddress;
|
|
|
++#define smtc_mmiowb(dat, reg) writeb(dat, smtc_RegBaseAddress + reg)
|
|
|
++#define smtc_mmioww(dat, reg) writew(dat, smtc_RegBaseAddress + reg)
|
|
|
++#define smtc_mmiowl(dat, reg) writel(dat, smtc_RegBaseAddress + reg)
|
|
|
++
|
|
|
++#define smtc_mmiorb(reg) readb(smtc_RegBaseAddress + reg)
|
|
|
++#define smtc_mmiorw(reg) readw(smtc_RegBaseAddress + reg)
|
|
|
++#define smtc_mmiorl(reg) readl(smtc_RegBaseAddress + reg)
|
|
|
++
|
|
|
++#define SIZE_SR00_SR04 (0x04 - 0x00 + 1)
|
|
|
++#define SIZE_SR10_SR24 (0x24 - 0x10 + 1)
|
|
|
++#define SIZE_SR30_SR75 (0x75 - 0x30 + 1)
|
|
|
++#define SIZE_SR80_SR93 (0x93 - 0x80 + 1)
|
|
|
++#define SIZE_SRA0_SRAF (0xAF - 0xA0 + 1)
|
|
|
++#define SIZE_GR00_GR08 (0x08 - 0x00 + 1)
|
|
|
++#define SIZE_AR00_AR14 (0x14 - 0x00 + 1)
|
|
|
++#define SIZE_CR00_CR18 (0x18 - 0x00 + 1)
|
|
|
++#define SIZE_CR30_CR4D (0x4D - 0x30 + 1)
|
|
|
++#define SIZE_CR90_CRA7 (0xA7 - 0x90 + 1)
|
|
|
++#define SIZE_VPR (0x6C + 1)
|
|
|
++#define SIZE_DPR (0x44 + 1)
|
|
|
++
|
|
|
++static inline void smtc_crtcw(int reg, int val)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3d4);
|
|
|
++ smtc_mmiowb(val, 0x3d5);
|
|
|
++}
|
|
|
++
|
|
|
++static inline unsigned int smtc_crtcr(int reg)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3d4);
|
|
|
++ return smtc_mmiorb(0x3d5);
|
|
|
++}
|
|
|
++
|
|
|
++static inline void smtc_grphw(int reg, int val)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3ce);
|
|
|
++ smtc_mmiowb(val, 0x3cf);
|
|
|
++}
|
|
|
++
|
|
|
++static inline unsigned int smtc_grphr(int reg)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3ce);
|
|
|
++ return smtc_mmiorb(0x3cf);
|
|
|
++}
|
|
|
++
|
|
|
++static inline void smtc_attrw(int reg, int val)
|
|
|
++{
|
|
|
++ smtc_mmiorb(0x3da);
|
|
|
++ smtc_mmiowb(reg, 0x3c0);
|
|
|
++ smtc_mmiorb(0x3c1);
|
|
|
++ smtc_mmiowb(val, 0x3c0);
|
|
|
++}
|
|
|
++
|
|
|
++static inline void smtc_seqw(int reg, int val)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3c4);
|
|
|
++ smtc_mmiowb(val, 0x3c5);
|
|
|
++}
|
|
|
++
|
|
|
++static inline unsigned int smtc_seqr(int reg)
|
|
|
++{
|
|
|
++ smtc_mmiowb(reg, 0x3c4);
|
|
|
++ return smtc_mmiorb(0x3c5);
|
|
|
++}
|
|
|
++
|
|
|
++/* The next structure holds all information relevant for a specific video mode.
|
|
|
++ */
|
|
|
++
|
|
|
++struct ModeInit {
|
|
|
++ int mmSizeX;
|
|
|
++ int mmSizeY;
|
|
|
++ int bpp;
|
|
|
++ int hz;
|
|
|
++ unsigned char Init_MISC;
|
|
|
++ unsigned char Init_SR00_SR04[SIZE_SR00_SR04];
|
|
|
++ unsigned char Init_SR10_SR24[SIZE_SR10_SR24];
|
|
|
++ unsigned char Init_SR30_SR75[SIZE_SR30_SR75];
|
|
|
++ unsigned char Init_SR80_SR93[SIZE_SR80_SR93];
|
|
|
++ unsigned char Init_SRA0_SRAF[SIZE_SRA0_SRAF];
|
|
|
++ unsigned char Init_GR00_GR08[SIZE_GR00_GR08];
|
|
|
++ unsigned char Init_AR00_AR14[SIZE_AR00_AR14];
|
|
|
++ unsigned char Init_CR00_CR18[SIZE_CR00_CR18];
|
|
|
++ unsigned char Init_CR30_CR4D[SIZE_CR30_CR4D];
|
|
|
++ unsigned char Init_CR90_CRA7[SIZE_CR90_CRA7];
|
|
|
++};
|
|
|
++
|
|
|
++/**********************************************************************
|
|
|
++ SM712 Mode table.
|
|
|
++ **********************************************************************/
|
|
|
++struct ModeInit VGAMode[] = {
|
|
|
++ {
|
|
|
++ /* mode#0: 640 x 480 16Bpp 60Hz */
|
|
|
++ 640, 480, 16, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xE3,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x00, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
|
|
|
++ 0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
|
|
|
++ 0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
|
|
|
++ 0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
|
|
|
++ 0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
|
|
|
++ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
|
|
|
++ 0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
|
|
|
++ 0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
|
|
|
++ 0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ {
|
|
|
++ /* mode#1: 640 x 480 24Bpp 60Hz */
|
|
|
++ 640, 480, 24, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xE3,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x00, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
|
|
|
++ 0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
|
|
|
++ 0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
|
|
|
++ 0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
|
|
|
++ 0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
|
|
|
++ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
|
|
|
++ 0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
|
|
|
++ 0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
|
|
|
++ 0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ {
|
|
|
++ /* mode#0: 640 x 480 32Bpp 60Hz */
|
|
|
++ 640, 480, 32, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xE3,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x00, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
|
|
|
++ 0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
|
|
|
++ 0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
|
|
|
++ 0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
|
|
|
++ 0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
|
|
|
++ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
|
|
|
++ 0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
|
|
|
++ 0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
|
|
|
++ 0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++
|
|
|
++ { /* mode#2: 800 x 600 16Bpp 60Hz */
|
|
|
++ 800, 600, 16, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0x2B,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x34, 0x03, 0x20, 0x09, 0xC0, 0x24, 0x24, 0x24,
|
|
|
++ 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x38, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x24, 0x24, 0x24,
|
|
|
++ 0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
|
|
|
++ 0x04, 0x55, 0x59, 0x24, 0x24, 0x00, 0x00, 0x24,
|
|
|
++ 0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
|
|
|
++ 0x02, 0x45, 0x30, 0x35, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0x00, 0x00, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x24,
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x24,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
|
|
|
++ 0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
|
|
|
++ 0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
|
|
|
++ 0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ { /* mode#3: 800 x 600 24Bpp 60Hz */
|
|
|
++ 800, 600, 24, 60,
|
|
|
++ 0x2B,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x36, 0x03, 0x20, 0x09, 0xC0, 0x36, 0x36, 0x36,
|
|
|
++ 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x36, 0x36, 0x36,
|
|
|
++ 0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
|
|
|
++ 0x04, 0x55, 0x59, 0x36, 0x36, 0x00, 0x00, 0x36,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
|
|
|
++ 0x02, 0x45, 0x30, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x36,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x36, 0x36,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
|
|
|
++ 0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
|
|
|
++ 0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
|
|
|
++ 0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ { /* mode#7: 800 x 600 32Bpp 60Hz */
|
|
|
++ 800, 600, 32, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0x2B,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x34, 0x03, 0x20, 0x09, 0xC0, 0x24, 0x24, 0x24,
|
|
|
++ 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x38, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x24, 0x24, 0x24,
|
|
|
++ 0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
|
|
|
++ 0x04, 0x55, 0x59, 0x24, 0x24, 0x00, 0x00, 0x24,
|
|
|
++ 0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
|
|
|
++ 0x02, 0x45, 0x30, 0x35, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0x00, 0x00, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x24,
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x24,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
|
|
|
++ 0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
|
|
|
++ 0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
|
|
|
++ 0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ /* We use 1024x768 table to light 1024x600 panel for lemote */
|
|
|
++ { /* mode#4: 1024 x 600 16Bpp 60Hz */
|
|
|
++ 1024, 600, 16, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xEB,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x00, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xC8, 0x40, 0x14, 0x60, 0x00, 0x0A, 0x17, 0x20,
|
|
|
++ 0x51, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x00, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x22, 0x03, 0x24, 0x09, 0xC0, 0x22, 0x22, 0x22,
|
|
|
++ 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x22, 0x22, 0x22,
|
|
|
++ 0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
|
|
|
++ 0x00, 0x60, 0x59, 0x22, 0x22, 0x00, 0x00, 0x22,
|
|
|
++ 0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x16, 0x02, 0x0D, 0x82, 0x09, 0x02,
|
|
|
++ 0x04, 0x45, 0x3F, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
|
|
|
++ 0xA3, 0x7F, 0x00, 0x82, 0x0b, 0x6f, 0x57, 0x00,
|
|
|
++ 0x5c, 0x0f, 0xE0, 0xe0, 0x7F, 0x57,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
|
|
|
++ 0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ { /* mode#5: 1024 x 768 24Bpp 60Hz */
|
|
|
++ 1024, 768, 24, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xEB,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x30, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
|
|
|
++ 0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
|
|
|
++ 0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
|
|
|
++ 0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x3B, 0x0D, 0x09, 0x02,
|
|
|
++ 0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
|
|
|
++ 0xA3, 0x7F, 0x00, 0x86, 0x15, 0x24, 0xFF, 0x00,
|
|
|
++ 0x01, 0x07, 0xE5, 0x20, 0x7F, 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
|
|
|
++ 0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ { /* mode#4: 1024 x 768 32Bpp 60Hz */
|
|
|
++ 1024, 768, 32, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xEB,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x32, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
|
|
|
++ 0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
|
|
|
++ 0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
|
|
|
++ 0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x3B, 0x0D, 0x09, 0x02,
|
|
|
++ 0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
|
|
|
++ 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
|
|
|
++ 0xA3, 0x7F, 0x00, 0x86, 0x15, 0x24, 0xFF, 0x00,
|
|
|
++ 0x01, 0x07, 0xE5, 0x20, 0x7F, 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
|
|
|
++ 0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
|
|
|
++ },
|
|
|
++ },
|
|
|
++ { /* mode#6: 320 x 240 16Bpp 60Hz */
|
|
|
++ 320, 240, 16, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xEB,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x32, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
|
|
|
++ 0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
|
|
|
++ 0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
|
|
|
++ 0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x08, 0x43, 0x08, 0x43,
|
|
|
++ 0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
|
|
|
++ 0x00, 0x00, 0x30, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
|
|
|
++ 0x2E, 0x27, 0x00, 0x2b, 0x0c, 0x0F, 0xEF, 0x00,
|
|
|
++ 0xFe, 0x0f, 0x01, 0xC0, 0x27, 0xEF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
|
|
|
++ 0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
|
|
|
++ },
|
|
|
++ },
|
|
|
++
|
|
|
++ { /* mode#8: 320 x 240 32Bpp 60Hz */
|
|
|
++ 320, 240, 32, 60,
|
|
|
++ /* Init_MISC */
|
|
|
++ 0xEB,
|
|
|
++ { /* Init_SR0_SR4 */
|
|
|
++ 0x03, 0x01, 0x0F, 0x03, 0x0E,
|
|
|
++ },
|
|
|
++ { /* Init_SR10_SR24 */
|
|
|
++ 0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
|
|
|
++ 0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0xC4, 0x32, 0x02, 0x01, 0x01,
|
|
|
++ },
|
|
|
++ { /* Init_SR30_SR75 */
|
|
|
++ 0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
|
|
|
++ 0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
|
|
|
++ 0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
|
|
|
++ 0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
|
|
|
++ 0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
|
|
|
++ 0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
|
|
|
++ 0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
|
|
|
++ 0x50, 0x03, 0x74, 0x14, 0x08, 0x43, 0x08, 0x43,
|
|
|
++ 0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
|
|
|
++ },
|
|
|
++ { /* Init_SR80_SR93 */
|
|
|
++ 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
|
|
|
++ 0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
|
|
|
++ 0x00, 0x00, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_SRA0_SRAF */
|
|
|
++ 0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
|
|
|
++ 0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
|
|
|
++ },
|
|
|
++ { /* Init_GR00_GR08 */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_AR00_AR14 */
|
|
|
++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
++ 0x41, 0x00, 0x0F, 0x00, 0x00,
|
|
|
++ },
|
|
|
++ { /* Init_CR00_CR18 */
|
|
|
++ 0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
|
|
|
++ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
++ 0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
|
|
|
++ 0xFF,
|
|
|
++ },
|
|
|
++ { /* Init_CR30_CR4D */
|
|
|
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
|
|
|
++ 0x00, 0x00, 0x30, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
|
|
|
++ 0x2E, 0x27, 0x00, 0x2b, 0x0c, 0x0F, 0xEF, 0x00,
|
|
|
++ 0xFe, 0x0f, 0x01, 0xC0, 0x27, 0xEF,
|
|
|
++ },
|
|
|
++ { /* Init_CR90_CRA7 */
|
|
|
++ 0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
|
|
|
++ 0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
|
|
|
++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
|
|
|
++ },
|
|
|
++ },
|
|
|
++};
|
|
|
++
|
|
|
++#define numVGAModes (sizeof(VGAMode) / sizeof(struct ModeInit))
|
|
|
+diff -Nur linux-2.6.30/fs/autofs4/waitq.c rt4ls/fs/autofs4/waitq.c
|
|
|
+--- linux-2.6.30/fs/autofs4/waitq.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/fs/autofs4/waitq.c 2009-06-12 16:28:48.180649291 +0200
|
|
|
+@@ -297,14 +297,20 @@
|
|
|
+ */
|
|
|
+ if (notify == NFY_MOUNT) {
|
|
|
+ /*
|
|
|
+- * If the dentry was successfully mounted while we slept
|
|
|
+- * on the wait queue mutex we can return success. If it
|
|
|
+- * isn't mounted (doesn't have submounts for the case of
|
|
|
+- * a multi-mount with no mount at it's base) we can
|
|
|
+- * continue on and create a new request.
|
|
|
+- */
|
|
|
+- if (have_submounts(dentry))
|
|
|
+- return 0;
|
|
|
++ * If the dentry isn't hashed just go ahead and try the
|
|
|
++ * mount again with a new wait (not much else we can do).
|
|
|
++ */
|
|
|
++ if (!d_unhashed(dentry)) {
|
|
|
++ /*
|
|
|
++ * But if the dentry is hashed, that means that we
|
|
|
++ * got here through the revalidate path. Thus, we
|
|
|
++ * need to check if the dentry has been mounted
|
|
|
++ * while we waited on the wq_mutex. If it has,
|
|
|
++ * simply return success.
|
|
|
++ */
|
|
|
++ if (d_mountpoint(dentry))
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+diff -Nur linux-2.6.30/fs/jbd/commit.c rt4ls/fs/jbd/commit.c
|
|
|
+--- linux-2.6.30/fs/jbd/commit.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/fs/jbd/commit.c 2009-06-12 16:28:48.464665929 +0200
|
|
|
+@@ -241,7 +241,7 @@
|
|
|
+ spin_lock(&journal->j_list_lock);
|
|
|
+ }
|
|
|
+ /* Someone already cleaned up the buffer? */
|
|
|
+- if (!buffer_jbd(bh) || bh2jh(bh) != jh
|
|
|
++ if (!buffer_jbd(bh)
|
|
|
+ || jh->b_transaction != commit_transaction
|
|
|
+ || jh->b_jlist != BJ_SyncData) {
|
|
|
+ jbd_unlock_bh_state(bh);
|
|
|
+@@ -478,9 +478,7 @@
|
|
|
+ spin_lock(&journal->j_list_lock);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+- if (buffer_jbd(bh) && bh2jh(bh) == jh &&
|
|
|
+- jh->b_transaction == commit_transaction &&
|
|
|
+- jh->b_jlist == BJ_Locked) {
|
|
|
++ if (buffer_jbd(bh) && jh->b_jlist == BJ_Locked) {
|
|
|
+ __journal_unfile_buffer(jh);
|
|
|
+ jbd_unlock_bh_state(bh);
|
|
|
+ journal_remove_journal_head(bh);
|
|
|
+diff -Nur linux-2.6.30/include/linux/cpumask.h rt4ls/include/linux/cpumask.h
|
|
|
+--- linux-2.6.30/include/linux/cpumask.h 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/include/linux/cpumask.h 2009-06-12 16:29:16.018395927 +0200
|
|
|
+@@ -1022,8 +1022,6 @@
|
|
|
+
|
|
|
+ bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
|
|
|
+ bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
|
|
|
+-bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
|
|
|
+-bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
|
|
|
+ void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
|
|
|
+ void free_cpumask_var(cpumask_var_t mask);
|
|
|
+ void free_bootmem_cpumask_var(cpumask_var_t mask);
|
|
|
+@@ -1042,19 +1040,6 @@
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+-static inline bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
|
|
|
+-{
|
|
|
+- cpumask_clear(*mask);
|
|
|
+- return true;
|
|
|
+-}
|
|
|
+-
|
|
|
+-static inline bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags,
|
|
|
+- int node)
|
|
|
+-{
|
|
|
+- cpumask_clear(*mask);
|
|
|
+- return true;
|
|
|
+-}
|
|
|
+-
|
|
|
+ static inline void alloc_bootmem_cpumask_var(cpumask_var_t *mask)
|
|
|
+ {
|
|
|
+ }
|
|
|
+diff -Nur linux-2.6.30/ipc/shm.c rt4ls/ipc/shm.c
|
|
|
+--- linux-2.6.30/ipc/shm.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/ipc/shm.c 2009-06-12 16:29:47.289072291 +0200
|
|
|
+@@ -969,13 +969,10 @@
|
|
|
+ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
|
|
|
+ {
|
|
|
+ struct mm_struct *mm = current->mm;
|
|
|
+- struct vm_area_struct *vma;
|
|
|
++ struct vm_area_struct *vma, *next;
|
|
|
+ unsigned long addr = (unsigned long)shmaddr;
|
|
|
+- int retval = -EINVAL;
|
|
|
+-#ifdef CONFIG_MMU
|
|
|
+ loff_t size = 0;
|
|
|
+- struct vm_area_struct *next;
|
|
|
+-#endif
|
|
|
++ int retval = -EINVAL;
|
|
|
+
|
|
|
+ if (addr & ~PAGE_MASK)
|
|
|
+ return retval;
|
|
|
+diff -Nur linux-2.6.30/kernel/sched_cpupri.c rt4ls/kernel/sched_cpupri.c
|
|
|
+--- linux-2.6.30/kernel/sched_cpupri.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/kernel/sched_cpupri.c 2009-06-12 16:29:48.957102637 +0200
|
|
|
+@@ -165,7 +165,7 @@
|
|
|
+ vec->count = 0;
|
|
|
+ if (bootmem)
|
|
|
+ alloc_bootmem_cpumask_var(&vec->mask);
|
|
|
+- else if (!zalloc_cpumask_var(&vec->mask, GFP_KERNEL))
|
|
|
++ else if (!alloc_cpumask_var(&vec->mask, GFP_KERNEL))
|
|
|
+ goto cleanup;
|
|
|
+ }
|
|
|
+
|
|
|
+diff -Nur linux-2.6.30/kernel/sched_rt.c rt4ls/kernel/sched_rt.c
|
|
|
+--- linux-2.6.30/kernel/sched_rt.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/kernel/sched_rt.c 2009-06-12 16:29:48.969124560 +0200
|
|
|
+@@ -1591,7 +1591,7 @@
|
|
|
+ unsigned int i;
|
|
|
+
|
|
|
+ for_each_possible_cpu(i)
|
|
|
+- zalloc_cpumask_var_node(&per_cpu(local_cpu_mask, i),
|
|
|
++ alloc_cpumask_var_node(&per_cpu(local_cpu_mask, i),
|
|
|
+ GFP_KERNEL, cpu_to_node(i));
|
|
|
+ }
|
|
|
+ #endif /* CONFIG_SMP */
|
|
|
+diff -Nur linux-2.6.30/kernel/smp.c rt4ls/kernel/smp.c
|
|
|
+--- linux-2.6.30/kernel/smp.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/kernel/smp.c 2009-06-12 16:29:48.969124560 +0200
|
|
|
+@@ -52,7 +52,7 @@
|
|
|
+ switch (action) {
|
|
|
+ case CPU_UP_PREPARE:
|
|
|
+ case CPU_UP_PREPARE_FROZEN:
|
|
|
+- if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL,
|
|
|
++ if (!alloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL,
|
|
|
+ cpu_to_node(cpu)))
|
|
|
+ return NOTIFY_BAD;
|
|
|
+ break;
|
|
|
+diff -Nur linux-2.6.30/lib/cpumask.c rt4ls/lib/cpumask.c
|
|
|
+--- linux-2.6.30/lib/cpumask.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/lib/cpumask.c 2009-06-12 16:29:49.032452180 +0200
|
|
|
+@@ -119,12 +119,6 @@
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL(alloc_cpumask_var_node);
|
|
|
+
|
|
|
+-bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node)
|
|
|
+-{
|
|
|
+- return alloc_cpumask_var_node(mask, flags | __GFP_ZERO, node);
|
|
|
+-}
|
|
|
+-EXPORT_SYMBOL(zalloc_cpumask_var_node);
|
|
|
+-
|
|
|
+ /**
|
|
|
+ * alloc_cpumask_var - allocate a struct cpumask
|
|
|
+ * @mask: pointer to cpumask_var_t where the cpumask is returned
|
|
|
+@@ -141,12 +135,6 @@
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL(alloc_cpumask_var);
|
|
|
+
|
|
|
+-bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
|
|
|
+-{
|
|
|
+- return alloc_cpumask_var(mask, flags | __GFP_ZERO);
|
|
|
+-}
|
|
|
+-EXPORT_SYMBOL(zalloc_cpumask_var);
|
|
|
+-
|
|
|
+ /**
|
|
|
+ * alloc_bootmem_cpumask_var - allocate a struct cpumask from the bootmem arena.
|
|
|
+ * @mask: pointer to cpumask_var_t where the cpumask is returned
|
|
|
+diff -Nur linux-2.6.30/net/sched/cls_cgroup.c rt4ls/net/sched/cls_cgroup.c
|
|
|
+--- linux-2.6.30/net/sched/cls_cgroup.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/net/sched/cls_cgroup.c 2009-06-12 16:29:50.516543166 +0200
|
|
|
+@@ -167,9 +167,6 @@
|
|
|
+ struct tcf_exts e;
|
|
|
+ int err;
|
|
|
+
|
|
|
+- if (!tca[TCA_OPTIONS])
|
|
|
+- return -EINVAL;
|
|
|
+-
|
|
|
+ if (head == NULL) {
|
|
|
+ if (!handle)
|
|
|
+ return -EINVAL;
|
|
|
+diff -Nur linux-2.6.30/sound/core/pcm_native.c rt4ls/sound/core/pcm_native.c
|
|
|
+--- linux-2.6.30/sound/core/pcm_native.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/sound/core/pcm_native.c 2009-06-12 16:29:54.880818910 +0200
|
|
|
+@@ -3091,7 +3091,11 @@
|
|
|
+ return VM_FAULT_SIGBUS;
|
|
|
+ } else {
|
|
|
+ vaddr = runtime->dma_area + offset;
|
|
|
++#if defined(__mips__) && defined(CONFIG_DMA_NONCOHERENT)
|
|
|
++ page = virt_to_page(CAC_ADDR(vaddr));
|
|
|
++#else
|
|
|
+ page = virt_to_page(vaddr);
|
|
|
++#endif
|
|
|
+ }
|
|
|
+ get_page(page);
|
|
|
+ vmf->page = page;
|
|
|
+@@ -3206,6 +3210,11 @@
|
|
|
+ if (PCM_RUNTIME_CHECK(substream))
|
|
|
+ return -ENXIO;
|
|
|
+
|
|
|
++#if defined(__mips__) && defined(CONFIG_DMA_NONCOHERENT)
|
|
|
++ /* all mmap using uncached mode */
|
|
|
++ area->vm_page_prot = pgprot_noncached(area->vm_page_prot);
|
|
|
++ area->vm_flags |= (VM_RESERVED | VM_IO);
|
|
|
++#endif
|
|
|
+ offset = area->vm_pgoff << PAGE_SHIFT;
|
|
|
+ switch (offset) {
|
|
|
+ case SNDRV_PCM_MMAP_OFFSET_STATUS:
|
|
|
+diff -Nur linux-2.6.30/sound/core/sgbuf.c rt4ls/sound/core/sgbuf.c
|
|
|
+--- linux-2.6.30/sound/core/sgbuf.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/sound/core/sgbuf.c 2009-06-12 16:29:54.904819175 +0200
|
|
|
+@@ -114,7 +114,11 @@
|
|
|
+ if (!i)
|
|
|
+ table->addr |= chunk; /* mark head */
|
|
|
+ table++;
|
|
|
++#if defined(__mips__) && defined(CONFIG_DMA_NONCOHERENT)
|
|
|
++ *pgtable++ = virt_to_page(CAC_ADDR(tmpb.area));
|
|
|
++#else
|
|
|
+ *pgtable++ = virt_to_page(tmpb.area);
|
|
|
++#endif
|
|
|
+ tmpb.area += PAGE_SIZE;
|
|
|
+ tmpb.addr += PAGE_SIZE;
|
|
|
+ }
|
|
|
+@@ -125,7 +129,12 @@
|
|
|
+ }
|
|
|
+
|
|
|
+ sgbuf->size = size;
|
|
|
++#if defined(__mips__) && defined(CONFIG_DMA_NONCOHERENT)
|
|
|
++ dmab->area = vmap(sgbuf->page_table, sgbuf->pages, \
|
|
|
++ VM_MAP | VM_IO, pgprot_noncached(PAGE_KERNEL));
|
|
|
++#else
|
|
|
+ dmab->area = vmap(sgbuf->page_table, sgbuf->pages, VM_MAP, PAGE_KERNEL);
|
|
|
++#endif
|
|
|
+ if (! dmab->area)
|
|
|
+ goto _failed;
|
|
|
+ if (res_size)
|
|
|
+diff -Nur linux-2.6.30/sound/pci/Kconfig rt4ls/sound/pci/Kconfig
|
|
|
+--- linux-2.6.30/sound/pci/Kconfig 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/sound/pci/Kconfig 2009-06-12 16:29:55.036828170 +0200
|
|
|
+@@ -259,7 +259,6 @@
|
|
|
+
|
|
|
+ config SND_CS5535AUDIO
|
|
|
+ tristate "CS5535/CS5536 Audio"
|
|
|
+- depends on X86 && !X86_64
|
|
|
+ select SND_PCM
|
|
|
+ select SND_AC97_CODEC
|
|
|
+ help
|
|
|
+diff -Nur linux-2.6.30/virt/kvm/kvm_main.c rt4ls/virt/kvm/kvm_main.c
|
|
|
+--- linux-2.6.30/virt/kvm/kvm_main.c 2009-06-10 05:05:27.000000000 +0200
|
|
|
++++ rt4ls/virt/kvm/kvm_main.c 2009-06-12 16:29:55.860876705 +0200
|
|
|
+@@ -2301,7 +2301,7 @@
|
|
|
+
|
|
|
+ bad_pfn = page_to_pfn(bad_page);
|
|
|
+
|
|
|
+- if (!zalloc_cpumask_var(&cpus_hardware_enabled, GFP_KERNEL)) {
|
|
|
++ if (!alloc_cpumask_var(&cpus_hardware_enabled, GFP_KERNEL)) {
|
|
|
+ r = -ENOMEM;
|
|
|
+ goto out_free_0;
|
|
|
+ }
|