mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 into devel
This commit is contained in:
commit
fc05505b77
@ -281,7 +281,7 @@
|
||||
seriously wrong while debugging, it will most often be the case
|
||||
that you want to enable gdb to be verbose about its target
|
||||
communications. You do this prior to issuing the <constant>target
|
||||
remote</constant> command by typing in: <constant>set remote debug 1</constant>
|
||||
remote</constant> command by typing in: <constant>set debug remote 1</constant>
|
||||
</para>
|
||||
</chapter>
|
||||
<chapter id="KGDBTestSuite">
|
||||
|
@ -17,6 +17,12 @@ are specified on the kernel command line with the module name plus
|
||||
|
||||
usbcore.blinkenlights=1
|
||||
|
||||
Hyphens (dashes) and underscores are equivalent in parameter names, so
|
||||
log_buf_len=1M print-fatal-signals=1
|
||||
can also be entered as
|
||||
log-buf-len=1M print_fatal_signals=1
|
||||
|
||||
|
||||
This document may not be entirely up to date and comprehensive. The command
|
||||
"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
|
||||
module. Loadable modules, after being loaded into the running kernel, also
|
||||
@ -345,7 +351,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
not play well with APC CPU idle - disable it if you have
|
||||
APC and your system crashes randomly.
|
||||
|
||||
apic= [APIC,i386] Advanced Programmable Interrupt Controller
|
||||
apic= [APIC,X86-32] Advanced Programmable Interrupt Controller
|
||||
Change the output verbosity whilst booting
|
||||
Format: { quiet (default) | verbose | debug }
|
||||
Change the amount of debugging information output
|
||||
@ -702,7 +708,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
to discrete, to make X server driver able to add WB
|
||||
entry later. This parameter enables that.
|
||||
|
||||
enable_timer_pin_1 [i386,x86-64]
|
||||
enable_timer_pin_1 [X86]
|
||||
Enable PIN 1 of APIC timer
|
||||
Can be useful to work around chipset bugs
|
||||
(in particular on some ATI chipsets).
|
||||
@ -775,7 +781,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
hashdist= [KNL,NUMA] Large hashes allocated during boot
|
||||
are distributed across NUMA nodes. Defaults on
|
||||
for IA-64, off otherwise.
|
||||
for 64bit NUMA, off otherwise.
|
||||
Format: 0 | 1 (for off | on)
|
||||
|
||||
hcl= [IA-64] SGI's Hardware Graph compatibility layer
|
||||
|
@ -54,9 +54,9 @@ locking error messages, inside curlies. A contrived example:
|
||||
The bit position indicates STATE, STATE-read, for each of the states listed
|
||||
above, and the character displayed in each indicates:
|
||||
|
||||
'.' acquired while irqs disabled
|
||||
'+' acquired in irq context
|
||||
'-' acquired with irqs enabled
|
||||
'.' acquired while irqs disabled and not in irq context
|
||||
'-' acquired in irq context
|
||||
'+' acquired with irqs enabled
|
||||
'?' acquired in irq context with irqs enabled.
|
||||
|
||||
Unused mutexes cannot be part of the cause of an error.
|
||||
|
@ -39,8 +39,6 @@ Currently, these files are in /proc/sys/vm:
|
||||
- nr_hugepages
|
||||
- nr_overcommit_hugepages
|
||||
- nr_pdflush_threads
|
||||
- nr_pdflush_threads_min
|
||||
- nr_pdflush_threads_max
|
||||
- nr_trim_pages (only if CONFIG_MMU=n)
|
||||
- numa_zonelist_order
|
||||
- oom_dump_tasks
|
||||
@ -469,32 +467,6 @@ The default value is 0.
|
||||
|
||||
==============================================================
|
||||
|
||||
nr_pdflush_threads_min
|
||||
|
||||
This value controls the minimum number of pdflush threads.
|
||||
|
||||
At boot time, the kernel will create and maintain 'nr_pdflush_threads_min'
|
||||
threads for the kernel's lifetime.
|
||||
|
||||
The default value is 2. The minimum value you can specify is 1, and
|
||||
the maximum value is the current setting of 'nr_pdflush_threads_max'.
|
||||
|
||||
See 'nr_pdflush_threads_max' below for more information.
|
||||
|
||||
==============================================================
|
||||
|
||||
nr_pdflush_threads_max
|
||||
|
||||
This value controls the maximum number of pdflush threads that can be
|
||||
created. The pdflush algorithm will create a new pdflush thread (up to
|
||||
this maximum) if no pdflush threads have been available for >= 1 second.
|
||||
|
||||
The default value is 8. The minimum value you can specify is the
|
||||
current value of 'nr_pdflush_threads_min' and the
|
||||
maximum is 1000.
|
||||
|
||||
==============================================================
|
||||
|
||||
overcommit_memory:
|
||||
|
||||
This value contains a flag that enables memory overcommitment.
|
||||
|
@ -113,7 +113,7 @@ versions of the sysfs interface.
|
||||
"devices" directory at /sys/subsystem/<name>/devices.
|
||||
|
||||
If /sys/subsystem exists, /sys/bus, /sys/class and /sys/block can be
|
||||
ignored. If it does not exist, you have always to scan all three
|
||||
ignored. If it does not exist, you always have to scan all three
|
||||
places, as the kernel is free to move a subsystem from one place to
|
||||
the other, as long as the devices are still reachable by the same
|
||||
subsystem name.
|
||||
|
@ -3434,11 +3434,10 @@ L: linuxppc-dev@ozlabs.org
|
||||
S: Maintained
|
||||
|
||||
LINUX FOR POWERPC EMBEDDED MPC5XXX
|
||||
P: Sylvain Munaut
|
||||
M: tnt@246tNt.com
|
||||
P: Grant Likely
|
||||
M: grant.likely@secretlab.ca
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
T: git git://git.secretlab.ca/git/linux-2.6.git
|
||||
S: Maintained
|
||||
|
||||
LINUX FOR POWERPC EMBEDDED PPC4XX
|
||||
@ -3456,6 +3455,7 @@ P: Grant Likely
|
||||
M: grant.likely@secretlab.ca
|
||||
W: http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
T: git git://git.secretlab.ca/git/linux-2.6.git
|
||||
S: Maintained
|
||||
|
||||
LINUX FOR POWERPC EMBEDDED PPC8XX
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 30
|
||||
EXTRAVERSION = -rc4
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Vindictive Armadillo
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -1,7 +1,9 @@
|
||||
#ifndef __ALPHA_PERCPU_H
|
||||
#define __ALPHA_PERCPU_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/threads.h>
|
||||
#include <linux/percpu-defs.h>
|
||||
|
||||
/*
|
||||
* Determine the real variable name from the name visible in the
|
||||
@ -73,6 +75,28 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
|
||||
|
||||
#endif /* SMP */
|
||||
|
||||
#include <asm-generic/percpu.h>
|
||||
#ifdef CONFIG_SMP
|
||||
#define PER_CPU_BASE_SECTION ".data.percpu"
|
||||
#else
|
||||
#define PER_CPU_BASE_SECTION ".data"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
#ifdef MODULE
|
||||
#define PER_CPU_SHARED_ALIGNED_SECTION ""
|
||||
#else
|
||||
#define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned"
|
||||
#endif
|
||||
#define PER_CPU_FIRST_SECTION ".first"
|
||||
|
||||
#else
|
||||
|
||||
#define PER_CPU_SHARED_ALIGNED_SECTION ""
|
||||
#define PER_CPU_FIRST_SECTION ""
|
||||
|
||||
#endif
|
||||
|
||||
#define PER_CPU_ATTRIBUTES
|
||||
|
||||
#endif /* __ALPHA_PERCPU_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.29-rc5
|
||||
# Tue Mar 3 21:45:57 2009
|
||||
# Linux kernel version: 2.6.30-rc4
|
||||
# Mon May 4 11:58:57 2009
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
@ -66,20 +66,20 @@ CONFIG_NAMESPACES=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_UID16=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# 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_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
@ -89,6 +89,7 @@ CONFIG_AIO=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_PCI_QUIRKS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
@ -101,6 +102,7 @@ CONFIG_KPROBES=y
|
||||
CONFIG_KRETPROBES=y
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_HAVE_KRETPROBES=y
|
||||
# CONFIG_SLOW_WORK is not set
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
@ -113,7 +115,6 @@ CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
@ -142,6 +143,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_EP93XX is not set
|
||||
# CONFIG_ARCH_GEMINI is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
@ -162,6 +164,7 @@ CONFIG_ARCH_KIRKWOOD=y
|
||||
# CONFIG_ARCH_ORION5X is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
# CONFIG_ARCH_SA1100 is not set
|
||||
# CONFIG_ARCH_S3C2410 is not set
|
||||
@ -217,6 +220,7 @@ CONFIG_PCI_SYSCALL=y
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_PCI_STUB is not set
|
||||
# CONFIG_PCI_IOV is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
@ -237,6 +241,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_ARCH_FLATMEM_HAS_HOLES=y
|
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||
# CONFIG_HIGHMEM is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -249,6 +254,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
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_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
@ -293,7 +300,6 @@ CONFIG_NET=y
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
@ -324,7 +330,7 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_LRO=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
@ -357,6 +363,7 @@ CONFIG_NET_DSA_MV88E6123_61_65=y
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
@ -365,20 +372,20 @@ CONFIG_NET_DSA_MV88E6123_61_65=y
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
# CONFIG_NET_TCPPROBE 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_PHONET is not set
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_CFG80211=y
|
||||
# CONFIG_CFG80211_REG_DEBUG is not set
|
||||
# CONFIG_NL80211 is not set
|
||||
CONFIG_WIRELESS_OLD_REGULATORY=y
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
CONFIG_WIRELESS_EXT_SYSFS=y
|
||||
CONFIG_LIB80211=y
|
||||
# CONFIG_LIB80211_DEBUG is not set
|
||||
CONFIG_MAC80211=y
|
||||
|
||||
#
|
||||
@ -513,7 +520,6 @@ CONFIG_MTD_NAND_ORION=y
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
@ -592,8 +598,10 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# 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_FUTURE_DOMAIN is not set
|
||||
@ -614,6 +622,7 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_SRP is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
CONFIG_ATA=y
|
||||
# CONFIG_ATA_NONSTANDARD is not set
|
||||
CONFIG_SATA_PMP=y
|
||||
@ -687,6 +696,7 @@ CONFIG_SATA_MV=y
|
||||
# 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 is not set
|
||||
@ -724,8 +734,10 @@ CONFIG_MII=y
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_ENC28J60 is not set
|
||||
# CONFIG_ETHOC is not set
|
||||
# CONFIG_SMC911X is not set
|
||||
# CONFIG_SMSC911X is not set
|
||||
# CONFIG_DNET is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
@ -763,6 +775,7 @@ CONFIG_NETDEV_1000=y
|
||||
# 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
|
||||
@ -777,6 +790,7 @@ CONFIG_MV643XX_ETH=y
|
||||
# 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
|
||||
@ -789,10 +803,11 @@ CONFIG_WLAN_80211=y
|
||||
CONFIG_LIBERTAS=y
|
||||
# CONFIG_LIBERTAS_USB is not set
|
||||
CONFIG_LIBERTAS_SDIO=y
|
||||
# CONFIG_LIBERTAS_SPI is not set
|
||||
# CONFIG_LIBERTAS_DEBUG is not set
|
||||
# CONFIG_LIBERTAS_THINFIRM is not set
|
||||
# CONFIG_HERMES 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
|
||||
@ -800,20 +815,20 @@ CONFIG_LIBERTAS_SDIO=y
|
||||
# CONFIG_RTL8187 is not set
|
||||
# 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_IWLCORE is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
# CONFIG_IWLAGN is not set
|
||||
# CONFIG_IWL3945 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
|
||||
@ -908,6 +923,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
#
|
||||
# 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
|
||||
@ -982,7 +998,6 @@ CONFIG_I2C_MV64XXX=y
|
||||
# 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
|
||||
@ -1082,15 +1097,17 @@ CONFIG_USB_HID=y
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_COMPAT=y
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EZKEY=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
@ -1152,11 +1169,11 @@ CONFIG_USB_PRINTER=m
|
||||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
|
||||
#
|
||||
|
||||
#
|
||||
# see USB_STORAGE Help for more information
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
@ -1198,7 +1215,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# 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
|
||||
@ -1215,6 +1231,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_USB_GPIO_VBUS is not set
|
||||
# CONFIG_NOP_USB_XCEIV is not set
|
||||
# CONFIG_UWB is not set
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_DEBUG is not set
|
||||
@ -1245,7 +1262,11 @@ CONFIG_LEDS_CLASS=y
|
||||
#
|
||||
# CONFIG_LEDS_PCA9532 is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_GPIO_PLATFORM=y
|
||||
# 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
|
||||
@ -1255,6 +1276,10 @@ CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
|
||||
#
|
||||
# iptables trigger is under Netfilter config (LED target)
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
@ -1329,7 +1354,9 @@ CONFIG_DMA_ENGINE=y
|
||||
# DMA Clients
|
||||
#
|
||||
# CONFIG_NET_DMA is not set
|
||||
# CONFIG_ASYNC_TX_DMA is not set
|
||||
# CONFIG_DMATEST is not set
|
||||
# CONFIG_AUXDISPLAY is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
@ -1341,6 +1368,7 @@ CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
# CONFIG_EXT3_FS_XATTR is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
CONFIG_JBD=y
|
||||
@ -1360,6 +1388,11 @@ CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# Caches
|
||||
#
|
||||
# CONFIG_FSCACHE is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
@ -1419,6 +1452,7 @@ CONFIG_CRAMFS=y
|
||||
# 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=y
|
||||
CONFIG_NFS_V3=y
|
||||
@ -1430,7 +1464,6 @@ CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
@ -1502,6 +1535,9 @@ CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
@ -1538,10 +1574,12 @@ CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
# CONFIG_PAGE_POISONING is not set
|
||||
CONFIG_NOP_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_TRACING=y
|
||||
CONFIG_TRACING_SUPPORT=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
@ -1551,11 +1589,15 @@ CONFIG_TRACING=y
|
||||
# CONFIG_PREEMPT_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_STACK_TRACER 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_PRINTK_DEBUG is not set
|
||||
# CONFIG_DYNAMIC_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
@ -1587,10 +1629,12 @@ 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 is not set
|
||||
CONFIG_CRYPTO_WORKQUEUE=y
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
@ -1659,6 +1703,7 @@ CONFIG_CRYPTO_ARC4=y
|
||||
# Compression
|
||||
#
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_ZLIB is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
|
||||
#
|
||||
@ -1667,6 +1712,7 @@ CONFIG_CRYPTO_ARC4=y
|
||||
# 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
|
||||
@ -1682,7 +1728,7 @@ CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_NLATTR=y
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.27-rc4
|
||||
# Fri Aug 22 12:38:51 2008
|
||||
# Linux kernel version: 2.6.30-rc4
|
||||
# Mon May 4 14:07:25 2009
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
@ -22,8 +22,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
@ -44,10 +42,19 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_BSD_PROCESS_ACCT 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 is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
# 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
|
||||
@ -55,48 +62,45 @@ CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=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_COMPAT_BRK=y
|
||||
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_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_TRACEPOINTS=y
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_KPROBES=y
|
||||
# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
|
||||
CONFIG_KRETPROBES=y
|
||||
# CONFIG_HAVE_IOREMAP_PROT is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_HAVE_KRETPROBES=y
|
||||
# CONFIG_HAVE_ARCH_TRACEHOOK is not set
|
||||
# CONFIG_HAVE_DMA_ATTRS is not set
|
||||
# CONFIG_USE_GENERIC_SMP_HELPERS is not set
|
||||
# CONFIG_HAVE_CLK is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_SLOW_WORK is not set
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=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
|
||||
@ -104,11 +108,8 @@ CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
@ -124,7 +125,7 @@ CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
@ -134,10 +135,10 @@ CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_EP93XX is not set
|
||||
# CONFIG_ARCH_GEMINI is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
@ -158,14 +159,17 @@ CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_ARCH_ORION5X=y
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
# CONFIG_ARCH_SA1100 is not set
|
||||
# CONFIG_ARCH_S3C2410 is not set
|
||||
# CONFIG_ARCH_S3C64XX is not set
|
||||
# CONFIG_ARCH_SHARK is not set
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
# CONFIG_ARCH_OMAP is not set
|
||||
# CONFIG_ARCH_MSM7X00A is not set
|
||||
# CONFIG_ARCH_MSM is not set
|
||||
# CONFIG_ARCH_W90X900 is not set
|
||||
|
||||
#
|
||||
# Orion Implementations
|
||||
@ -175,6 +179,7 @@ CONFIG_MACH_RD88F5182=y
|
||||
CONFIG_MACH_KUROBOX_PRO=y
|
||||
CONFIG_MACH_DNS323=y
|
||||
CONFIG_MACH_TS209=y
|
||||
CONFIG_MACH_TERASTATION_PRO2=y
|
||||
CONFIG_MACH_LINKSTATION_PRO=y
|
||||
CONFIG_MACH_LINKSTATION_MINI=y
|
||||
CONFIG_MACH_TS409=y
|
||||
@ -187,14 +192,6 @@ CONFIG_MACH_WNR854T=y
|
||||
CONFIG_MACH_RD88F5181L_GE=y
|
||||
CONFIG_MACH_RD88F5181L_FXO=y
|
||||
CONFIG_MACH_RD88F6183AP_GE=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
|
||||
#
|
||||
# Power management
|
||||
#
|
||||
CONFIG_PLAT_ORION=y
|
||||
|
||||
#
|
||||
@ -228,6 +225,8 @@ CONFIG_PCI_SYSCALL=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_PCI_STUB is not set
|
||||
# CONFIG_PCI_IOV is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
@ -237,25 +236,32 @@ CONFIG_TICK_ONESHOT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
CONFIG_VMSPLIT_3G=y
|
||||
# CONFIG_VMSPLIT_2G is not set
|
||||
# CONFIG_VMSPLIT_1G is not set
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_OABI_COMPAT=y
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
CONFIG_ARCH_FLATMEM_HAS_HOLES=y
|
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||
# CONFIG_HIGHMEM is not set
|
||||
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 is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
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_LEDS=y
|
||||
CONFIG_LEDS_CPU=y
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
@ -269,6 +275,11 @@ CONFIG_CMDLINE=""
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
|
||||
#
|
||||
# CPU Power Management
|
||||
#
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
@ -285,13 +296,18 @@ CONFIG_VFP=y
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_HAVE_AOUT=y
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_SUSPEND is not set
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_NET=y
|
||||
|
||||
@ -328,7 +344,7 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_LRO=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
@ -343,6 +359,15 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_TAG_DSA=y
|
||||
CONFIG_NET_DSA_TAG_EDSA=y
|
||||
# CONFIG_NET_DSA_TAG_TRAILER is not set
|
||||
CONFIG_NET_DSA_MV88E6XXX=y
|
||||
# CONFIG_NET_DSA_MV88E6060 is not set
|
||||
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
|
||||
CONFIG_NET_DSA_MV88E6131=y
|
||||
CONFIG_NET_DSA_MV88E6123_61_65=y
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
@ -352,27 +377,29 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
# CONFIG_NET_TCPPROBE 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
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
CONFIG_WIRELESS=y
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_OLD_REGULATORY is not set
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
CONFIG_WIRELESS_EXT_SYSFS=y
|
||||
# CONFIG_LIB80211 is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
@ -397,6 +424,7 @@ CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
@ -450,9 +478,7 @@ CONFIG_MTD_CFI_UTIL=y
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x0
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x0
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=0
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||
# CONFIG_MTD_IMPA7 is not set
|
||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||
@ -477,6 +503,7 @@ CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_VERIFY_WRITE=y
|
||||
# CONFIG_MTD_NAND_ECC_SMC is not set
|
||||
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
|
||||
# CONFIG_MTD_NAND_GPIO is not set
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
||||
# CONFIG_MTD_NAND_CAFE is not set
|
||||
@ -486,6 +513,11 @@ CONFIG_MTD_NAND_PLATFORM=y
|
||||
CONFIG_MTD_NAND_ORION=y
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
@ -507,11 +539,20 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_PHANTOM is not set
|
||||
# CONFIG_EEPROM_93CX6 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 is not set
|
||||
|
||||
@ -569,7 +610,11 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# 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_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
@ -589,6 +634,7 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_SRP is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
CONFIG_ATA=y
|
||||
# CONFIG_ATA_NONSTANDARD is not set
|
||||
CONFIG_SATA_PMP=y
|
||||
@ -663,6 +709,7 @@ CONFIG_SATA_MV=y
|
||||
# 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 is not set
|
||||
@ -670,7 +717,26 @@ CONFIG_NETDEVICES=y
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
CONFIG_MARVELL_PHY=y
|
||||
# CONFIG_DAVICOM_PHY is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# 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_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
@ -680,19 +746,25 @@ CONFIG_MII=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_ETHOC is not set
|
||||
# CONFIG_SMC911X is not set
|
||||
# CONFIG_SMSC911X is not set
|
||||
# CONFIG_DNET is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 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_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
# CONFIG_E100 is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
@ -702,10 +774,12 @@ CONFIG_NET_PCI=y
|
||||
# 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
|
||||
@ -713,6 +787,7 @@ CONFIG_NETDEV_1000=y
|
||||
# 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
|
||||
@ -727,6 +802,8 @@ CONFIG_MV643XX_ETH=y
|
||||
# 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
|
||||
|
||||
@ -735,7 +812,10 @@ CONFIG_MV643XX_ETH=y
|
||||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
@ -819,11 +899,11 @@ 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 is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
@ -886,12 +966,9 @@ CONFIG_I2C_MV64XXX=y
|
||||
# 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
|
||||
@ -911,14 +988,17 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1029 is not set
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7462 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ADT7475 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
# CONFIG_SENSORS_F71882FG is not set
|
||||
# CONFIG_SENSORS_F75375S is not set
|
||||
# CONFIG_SENSORS_G760A is not set
|
||||
# CONFIG_SENSORS_GL518SM is not set
|
||||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
@ -933,10 +1013,15 @@ CONFIG_SENSORS_LM75=y
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_LM93 is not set
|
||||
# CONFIG_SENSORS_LTC4215 is not set
|
||||
# CONFIG_SENSORS_LTC4245 is not set
|
||||
# CONFIG_SENSORS_LM95241 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_MAX6650 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_PC87427 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_SHT15 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_DME1737 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
@ -956,12 +1041,14 @@ CONFIG_SENSORS_LM75=y
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP 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_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
@ -970,9 +1057,12 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -1013,9 +1103,36 @@ CONFIG_HID=y
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
# CONFIG_HID_PID is not set
|
||||
# CONFIG_USB_HIDDEV is not set
|
||||
|
||||
#
|
||||
# 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
|
||||
@ -1030,10 +1147,13 @@ CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_DEVICE_CLASS=y
|
||||
# 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 is not set
|
||||
# CONFIG_USB_WUSB is not set
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
@ -1042,12 +1162,15 @@ CONFIG_USB_DEVICE_CLASS=y
|
||||
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 is not set
|
||||
# CONFIG_USB_OHCI_HCD is not set
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# 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
|
||||
@ -1055,20 +1178,20 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
|
||||
# CONFIG_USB_ACM is not set
|
||||
CONFIG_USB_PRINTER=y
|
||||
# CONFIG_USB_WDM is not set
|
||||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
# 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 is not set
|
||||
CONFIG_USB_STORAGE_DPCM=y
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
@ -1076,7 +1199,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# CONFIG_USB_STORAGE_ALAUDA is not set
|
||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
||||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
# CONFIG_USB_STORAGE_SIERRA is not set
|
||||
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
|
||||
@ -1097,6 +1219,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# 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
|
||||
@ -1104,7 +1227,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# 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
|
||||
@ -1114,8 +1236,18 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# 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_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_USB_GPIO_VBUS is not set
|
||||
# CONFIG_NOP_USB_XCEIV is not set
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
|
||||
@ -1124,7 +1256,10 @@ CONFIG_LEDS_CLASS=y
|
||||
#
|
||||
# CONFIG_LEDS_PCA9532 is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_GPIO_PLATFORM=y
|
||||
# CONFIG_LEDS_LP5521 is not set
|
||||
# CONFIG_LEDS_PCA955X is not set
|
||||
# CONFIG_LEDS_BD2802 is not set
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
@ -1132,7 +1267,12 @@ CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
|
||||
#
|
||||
# iptables trigger is under Netfilter config (LED target)
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
@ -1164,6 +1304,7 @@ CONFIG_RTC_DRV_M41T80=y
|
||||
# CONFIG_RTC_DRV_M41T80_WDT is not set
|
||||
CONFIG_RTC_DRV_S35390A=y
|
||||
# CONFIG_RTC_DRV_FM3130 is not set
|
||||
# CONFIG_RTC_DRV_RX8581 is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
@ -1173,12 +1314,15 @@ CONFIG_RTC_DRV_S35390A=y
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_CMOS is not set
|
||||
# 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=y
|
||||
# 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
|
||||
|
||||
#
|
||||
@ -1196,16 +1340,12 @@ CONFIG_DMA_ENGINE=y
|
||||
# DMA Clients
|
||||
#
|
||||
# CONFIG_NET_DMA is not set
|
||||
# CONFIG_ASYNC_TX_DMA is not set
|
||||
# CONFIG_DMATEST is not set
|
||||
|
||||
#
|
||||
# Voltage and Current regulators
|
||||
#
|
||||
# CONFIG_AUXDISPLAY is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
|
||||
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
|
||||
# CONFIG_REGULATOR_BQ24022 is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -1214,14 +1354,25 @@ CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
# CONFIG_EXT3_FS_XATTR is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_EXT4_FS=m
|
||||
# CONFIG_EXT4DEV_COMPAT is not set
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT4_FS_SECURITY is not set
|
||||
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 is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_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
|
||||
@ -1230,6 +1381,11 @@ CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# Caches
|
||||
#
|
||||
# CONFIG_FSCACHE is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
@ -1254,15 +1410,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
#
|
||||
CONFIG_PROC_FS=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_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
@ -1282,6 +1436,7 @@ CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
@ -1290,6 +1445,7 @@ CONFIG_CRAMFS=y
|
||||
# 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=y
|
||||
CONFIG_NFS_V3=y
|
||||
@ -1381,13 +1537,16 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
@ -1411,25 +1570,46 @@ CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_KPROBES_SANITY_TEST is not set
|
||||
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_LKDTM is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_HAVE_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_PAGE_POISONING is not set
|
||||
CONFIG_NOP_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_TRACING=y
|
||||
CONFIG_TRACING_SUPPORT=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_FUNCTION_TRACER is not set
|
||||
# CONFIG_IRQSOFF_TRACER is not set
|
||||
# CONFIG_PREEMPT_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_STACK_TRACER 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_KGDB is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
@ -1441,18 +1621,27 @@ CONFIG_DEBUG_LL=y
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_ASYNC_CORE=y
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
# Crypto core or helper
|
||||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=m
|
||||
CONFIG_CRYPTO_ALGAPI2=m
|
||||
CONFIG_CRYPTO_AEAD2=m
|
||||
CONFIG_CRYPTO_BLKCIPHER=m
|
||||
CONFIG_CRYPTO_BLKCIPHER2=m
|
||||
CONFIG_CRYPTO_HASH2=m
|
||||
CONFIG_CRYPTO_RNG2=m
|
||||
CONFIG_CRYPTO_PCOMP=m
|
||||
CONFIG_CRYPTO_MANAGER=m
|
||||
CONFIG_CRYPTO_MANAGER2=m
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
CONFIG_CRYPTO_WORKQUEUE=m
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
@ -1521,18 +1710,24 @@ CONFIG_CRYPTO_PCBC=m
|
||||
# Compression
|
||||
#
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# 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_FIRST_BIT is not set
|
||||
# CONFIG_GENERIC_FIND_NEXT_BIT is not set
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC16=m
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_CRC_ITU_T=m
|
||||
CONFIG_CRC32=y
|
||||
@ -1540,7 +1735,7 @@ CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_NLATTR=y
|
||||
|
@ -45,13 +45,15 @@ typedef struct user_fp elf_fpregset_t;
|
||||
#define EF_ARM_HASENTRY 0x00000002 /* All */
|
||||
#define EF_ARM_RELEXEC 0x00000001 /* All */
|
||||
|
||||
#define R_ARM_NONE 0
|
||||
#define R_ARM_PC24 1
|
||||
#define R_ARM_ABS32 2
|
||||
#define R_ARM_CALL 28
|
||||
#define R_ARM_JUMP24 29
|
||||
#define R_ARM_V4BX 40
|
||||
#define R_ARM_PREL31 42
|
||||
#define R_ARM_NONE 0
|
||||
#define R_ARM_PC24 1
|
||||
#define R_ARM_ABS32 2
|
||||
#define R_ARM_CALL 28
|
||||
#define R_ARM_JUMP24 29
|
||||
#define R_ARM_V4BX 40
|
||||
#define R_ARM_PREL31 42
|
||||
#define R_ARM_MOVW_ABS_NC 43
|
||||
#define R_ARM_MOVT_ABS 44
|
||||
|
||||
/*
|
||||
* These are used to set parameters in the core dumps.
|
||||
|
@ -169,6 +169,21 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||
*(u32 *)loc = offset & 0x7fffffff;
|
||||
break;
|
||||
|
||||
case R_ARM_MOVW_ABS_NC:
|
||||
case R_ARM_MOVT_ABS:
|
||||
offset = *(u32 *)loc;
|
||||
offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff);
|
||||
offset = (offset ^ 0x8000) - 0x8000;
|
||||
|
||||
offset += sym->st_value;
|
||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_ABS)
|
||||
offset >>= 16;
|
||||
|
||||
*(u32 *)loc &= 0xfff0f000;
|
||||
*(u32 *)loc |= ((offset & 0xf000) << 4) |
|
||||
(offset & 0x0fff);
|
||||
break;
|
||||
|
||||
default:
|
||||
printk(KERN_ERR "%s: unknown relocation: %u\n",
|
||||
module->name, ELF32_R_TYPE(rel->r_info));
|
||||
|
@ -211,7 +211,7 @@ static struct resource ide_resources[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static u64 ide_dma_mask = DMA_32BIT_MASK;
|
||||
static u64 ide_dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
static struct platform_device ide_dev = {
|
||||
.name = "palm_bk3710",
|
||||
@ -220,7 +220,7 @@ static struct platform_device ide_dev = {
|
||||
.num_resources = ARRAY_SIZE(ide_resources),
|
||||
.dev = {
|
||||
.dma_mask = &ide_dma_mask,
|
||||
.coherent_dma_mask = DMA_32BIT_MASK,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
|
25
arch/arm/mach-davinci/include/mach/asp.h
Normal file
25
arch/arm/mach-davinci/include/mach/asp.h
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* <mach/asp.h> - DaVinci Audio Serial Port support
|
||||
*/
|
||||
#ifndef __ASM_ARCH_DAVINCI_ASP_H
|
||||
#define __ASM_ARCH_DAVINCI_ASP_H
|
||||
|
||||
#include <mach/irqs.h>
|
||||
|
||||
/* Bases of register banks */
|
||||
#define DAVINCI_ASP0_BASE 0x01E02000
|
||||
#define DAVINCI_ASP1_BASE 0x01E04000
|
||||
|
||||
/* EDMA channels */
|
||||
#define DAVINCI_DMA_ASP0_TX 2
|
||||
#define DAVINCI_DMA_ASP0_RX 3
|
||||
#define DAVINCI_DMA_ASP1_TX 8
|
||||
#define DAVINCI_DMA_ASP1_RX 9
|
||||
|
||||
/* Interrupts */
|
||||
#define DAVINCI_ASP0_RX_INT IRQ_MBRINT
|
||||
#define DAVINCI_ASP0_TX_INT IRQ_MBXINT
|
||||
#define DAVINCI_ASP1_RX_INT IRQ_MBRINT
|
||||
#define DAVINCI_ASP1_TX_INT IRQ_MBXINT
|
||||
|
||||
#endif /* __ASM_ARCH_DAVINCI_ASP_H */
|
@ -78,6 +78,12 @@ config MACH_IXDP465
|
||||
IXDP465 Development Platform (Also known as BMP).
|
||||
For more information on this platform, see <file:Documentation/arm/IXP4xx>.
|
||||
|
||||
config MACH_GORAMO_MLR
|
||||
bool "GORAMO Multi Link Router"
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support GORAMO
|
||||
MultiLink router.
|
||||
|
||||
config MACH_KIXRP435
|
||||
bool "KIXRP435"
|
||||
help
|
||||
|
@ -30,6 +30,7 @@ obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o
|
||||
obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o
|
||||
obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o
|
||||
obj-$(CONFIG_MACH_FSG) += fsg-setup.o
|
||||
obj-$(CONFIG_MACH_GORAMO_MLR) += goramo_mlr.o
|
||||
|
||||
obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o
|
||||
obj-$(CONFIG_IXP4XX_QMGR) += ixp4xx_qmgr.o
|
||||
|
507
arch/arm/mach-ixp4xx/goramo_mlr.c
Normal file
507
arch/arm/mach-ixp4xx/goramo_mlr.c
Normal file
@ -0,0 +1,507 @@
|
||||
/*
|
||||
* Goramo MultiLink router platform code
|
||||
* Copyright (C) 2006-2009 Krzysztof Halasa <khc@pm.waw.pl>
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/hdlc.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/flash.h>
|
||||
#include <asm/mach/pci.h>
|
||||
|
||||
#define xgpio_irq(n) (IRQ_IXP4XX_GPIO ## n)
|
||||
#define gpio_irq(n) xgpio_irq(n)
|
||||
|
||||
#define SLOT_ETHA 0x0B /* IDSEL = AD21 */
|
||||
#define SLOT_ETHB 0x0C /* IDSEL = AD20 */
|
||||
#define SLOT_MPCI 0x0D /* IDSEL = AD19 */
|
||||
#define SLOT_NEC 0x0E /* IDSEL = AD18 */
|
||||
|
||||
#define IRQ_ETHA IRQ_IXP4XX_GPIO4
|
||||
#define IRQ_ETHB IRQ_IXP4XX_GPIO5
|
||||
#define IRQ_NEC IRQ_IXP4XX_GPIO3
|
||||
#define IRQ_MPCI IRQ_IXP4XX_GPIO12
|
||||
|
||||
/* GPIO lines */
|
||||
#define GPIO_SCL 0
|
||||
#define GPIO_SDA 1
|
||||
#define GPIO_STR 2
|
||||
#define GPIO_HSS0_DCD_N 6
|
||||
#define GPIO_HSS1_DCD_N 7
|
||||
#define GPIO_HSS0_CTS_N 10
|
||||
#define GPIO_HSS1_CTS_N 11
|
||||
#define GPIO_HSS1_RTS_N 13
|
||||
#define GPIO_HSS0_RTS_N 14
|
||||
|
||||
/* Control outputs from 74HC4094 */
|
||||
#define CONTROL_HSS0_CLK_INT 0
|
||||
#define CONTROL_HSS1_CLK_INT 1
|
||||
#define CONTROL_HSS0_DTR_N 2
|
||||
#define CONTROL_HSS1_DTR_N 3
|
||||
#define CONTROL_EXT 4
|
||||
#define CONTROL_AUTO_RESET 5
|
||||
#define CONTROL_PCI_RESET_N 6
|
||||
#define CONTROL_EEPROM_WC_N 7
|
||||
|
||||
/* offsets from start of flash ROM = 0x50000000 */
|
||||
#define CFG_ETH0_ADDRESS 0x40 /* 6 bytes */
|
||||
#define CFG_ETH1_ADDRESS 0x46 /* 6 bytes */
|
||||
#define CFG_REV 0x4C /* u32 */
|
||||
#define CFG_SDRAM_SIZE 0x50 /* u32 */
|
||||
#define CFG_SDRAM_CONF 0x54 /* u32 */
|
||||
#define CFG_SDRAM_MODE 0x58 /* u32 */
|
||||
#define CFG_SDRAM_REFRESH 0x5C /* u32 */
|
||||
|
||||
#define CFG_HW_BITS 0x60 /* u32 */
|
||||
#define CFG_HW_USB_PORTS 0x00000007 /* 0 = no NEC chip, 1-5 = ports # */
|
||||
#define CFG_HW_HAS_PCI_SLOT 0x00000008
|
||||
#define CFG_HW_HAS_ETH0 0x00000010
|
||||
#define CFG_HW_HAS_ETH1 0x00000020
|
||||
#define CFG_HW_HAS_HSS0 0x00000040
|
||||
#define CFG_HW_HAS_HSS1 0x00000080
|
||||
#define CFG_HW_HAS_UART0 0x00000100
|
||||
#define CFG_HW_HAS_UART1 0x00000200
|
||||
#define CFG_HW_HAS_EEPROM 0x00000400
|
||||
|
||||
#define FLASH_CMD_READ_ARRAY 0xFF
|
||||
#define FLASH_CMD_READ_ID 0x90
|
||||
#define FLASH_SER_OFF 0x102 /* 0x81 in 16-bit mode */
|
||||
|
||||
static u32 hw_bits = 0xFFFFFFFD; /* assume all hardware present */;
|
||||
static u8 control_value;
|
||||
|
||||
static void set_scl(u8 value)
|
||||
{
|
||||
gpio_line_set(GPIO_SCL, !!value);
|
||||
udelay(3);
|
||||
}
|
||||
|
||||
static void set_sda(u8 value)
|
||||
{
|
||||
gpio_line_set(GPIO_SDA, !!value);
|
||||
udelay(3);
|
||||
}
|
||||
|
||||
static void set_str(u8 value)
|
||||
{
|
||||
gpio_line_set(GPIO_STR, !!value);
|
||||
udelay(3);
|
||||
}
|
||||
|
||||
static inline void set_control(int line, int value)
|
||||
{
|
||||
if (value)
|
||||
control_value |= (1 << line);
|
||||
else
|
||||
control_value &= ~(1 << line);
|
||||
}
|
||||
|
||||
|
||||
static void output_control(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
gpio_line_config(GPIO_SCL, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_SDA, IXP4XX_GPIO_OUT);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
set_scl(0);
|
||||
set_sda(control_value & (0x80 >> i)); /* MSB first */
|
||||
set_scl(1); /* active edge */
|
||||
}
|
||||
|
||||
set_str(1);
|
||||
set_str(0);
|
||||
|
||||
set_scl(0);
|
||||
set_sda(1); /* Be ready for START */
|
||||
set_scl(1);
|
||||
}
|
||||
|
||||
|
||||
static void (*set_carrier_cb_tab[2])(void *pdev, int carrier);
|
||||
|
||||
static int hss_set_clock(int port, unsigned int clock_type)
|
||||
{
|
||||
int ctrl_int = port ? CONTROL_HSS1_CLK_INT : CONTROL_HSS0_CLK_INT;
|
||||
|
||||
switch (clock_type) {
|
||||
case CLOCK_DEFAULT:
|
||||
case CLOCK_EXT:
|
||||
set_control(ctrl_int, 0);
|
||||
output_control();
|
||||
return CLOCK_EXT;
|
||||
|
||||
case CLOCK_INT:
|
||||
set_control(ctrl_int, 1);
|
||||
output_control();
|
||||
return CLOCK_INT;
|
||||
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static irqreturn_t hss_dcd_irq(int irq, void *pdev)
|
||||
{
|
||||
int i, port = (irq == gpio_irq(GPIO_HSS1_DCD_N));
|
||||
gpio_line_get(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N, &i);
|
||||
set_carrier_cb_tab[port](pdev, !i);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
static int hss_open(int port, void *pdev,
|
||||
void (*set_carrier_cb)(void *pdev, int carrier))
|
||||
{
|
||||
int i, irq;
|
||||
|
||||
if (!port)
|
||||
irq = gpio_irq(GPIO_HSS0_DCD_N);
|
||||
else
|
||||
irq = gpio_irq(GPIO_HSS1_DCD_N);
|
||||
|
||||
gpio_line_get(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N, &i);
|
||||
set_carrier_cb(pdev, !i);
|
||||
|
||||
set_carrier_cb_tab[!!port] = set_carrier_cb;
|
||||
|
||||
if ((i = request_irq(irq, hss_dcd_irq, 0, "IXP4xx HSS", pdev)) != 0) {
|
||||
printk(KERN_ERR "ixp4xx_hss: failed to request IRQ%i (%i)\n",
|
||||
irq, i);
|
||||
return i;
|
||||
}
|
||||
|
||||
set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 0);
|
||||
output_control();
|
||||
gpio_line_set(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void hss_close(int port, void *pdev)
|
||||
{
|
||||
free_irq(port ? gpio_irq(GPIO_HSS1_DCD_N) : gpio_irq(GPIO_HSS0_DCD_N),
|
||||
pdev);
|
||||
set_carrier_cb_tab[!!port] = NULL; /* catch bugs */
|
||||
|
||||
set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 1);
|
||||
output_control();
|
||||
gpio_line_set(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 1);
|
||||
}
|
||||
|
||||
|
||||
/* Flash memory */
|
||||
static struct flash_platform_data flash_data = {
|
||||
.map_name = "cfi_probe",
|
||||
.width = 2,
|
||||
};
|
||||
|
||||
static struct resource flash_resource = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
static struct platform_device device_flash = {
|
||||
.name = "IXP4XX-Flash",
|
||||
.id = 0,
|
||||
.dev = { .platform_data = &flash_data },
|
||||
.num_resources = 1,
|
||||
.resource = &flash_resource,
|
||||
};
|
||||
|
||||
|
||||
/* I^2C interface */
|
||||
static struct i2c_gpio_platform_data i2c_data = {
|
||||
.sda_pin = GPIO_SDA,
|
||||
.scl_pin = GPIO_SCL,
|
||||
};
|
||||
|
||||
static struct platform_device device_i2c = {
|
||||
.name = "i2c-gpio",
|
||||
.id = 0,
|
||||
.dev = { .platform_data = &i2c_data },
|
||||
};
|
||||
|
||||
|
||||
/* IXP425 2 UART ports */
|
||||
static struct resource uart_resources[] = {
|
||||
{
|
||||
.start = IXP4XX_UART1_BASE_PHYS,
|
||||
.end = IXP4XX_UART1_BASE_PHYS + 0x0fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = IXP4XX_UART2_BASE_PHYS,
|
||||
.end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port uart_data[] = {
|
||||
{
|
||||
.mapbase = IXP4XX_UART1_BASE_PHYS,
|
||||
.membase = (char __iomem *)IXP4XX_UART1_BASE_VIRT +
|
||||
REG_OFFSET,
|
||||
.irq = IRQ_IXP4XX_UART1,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = IXP4XX_UART_XTAL,
|
||||
},
|
||||
{
|
||||
.mapbase = IXP4XX_UART2_BASE_PHYS,
|
||||
.membase = (char __iomem *)IXP4XX_UART2_BASE_VIRT +
|
||||
REG_OFFSET,
|
||||
.irq = IRQ_IXP4XX_UART2,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = IXP4XX_UART_XTAL,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct platform_device device_uarts = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev.platform_data = uart_data,
|
||||
.num_resources = 2,
|
||||
.resource = uart_resources,
|
||||
};
|
||||
|
||||
|
||||
/* Built-in 10/100 Ethernet MAC interfaces */
|
||||
static struct eth_plat_info eth_plat[] = {
|
||||
{
|
||||
.phy = 0,
|
||||
.rxq = 3,
|
||||
.txreadyq = 32,
|
||||
}, {
|
||||
.phy = 1,
|
||||
.rxq = 4,
|
||||
.txreadyq = 33,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device device_eth_tab[] = {
|
||||
{
|
||||
.name = "ixp4xx_eth",
|
||||
.id = IXP4XX_ETH_NPEB,
|
||||
.dev.platform_data = eth_plat,
|
||||
}, {
|
||||
.name = "ixp4xx_eth",
|
||||
.id = IXP4XX_ETH_NPEC,
|
||||
.dev.platform_data = eth_plat + 1,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* IXP425 2 synchronous serial ports */
|
||||
static struct hss_plat_info hss_plat[] = {
|
||||
{
|
||||
.set_clock = hss_set_clock,
|
||||
.open = hss_open,
|
||||
.close = hss_close,
|
||||
.txreadyq = 34,
|
||||
}, {
|
||||
.set_clock = hss_set_clock,
|
||||
.open = hss_open,
|
||||
.close = hss_close,
|
||||
.txreadyq = 35,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device device_hss_tab[] = {
|
||||
{
|
||||
.name = "ixp4xx_hss",
|
||||
.id = 0,
|
||||
.dev.platform_data = hss_plat,
|
||||
}, {
|
||||
.name = "ixp4xx_hss",
|
||||
.id = 1,
|
||||
.dev.platform_data = hss_plat + 1,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
static struct platform_device *device_tab[6] __initdata = {
|
||||
&device_flash, /* index 0 */
|
||||
};
|
||||
|
||||
static inline u8 __init flash_readb(u8 __iomem *flash, u32 addr)
|
||||
{
|
||||
#ifdef __ARMEB__
|
||||
return __raw_readb(flash + addr);
|
||||
#else
|
||||
return __raw_readb(flash + (addr ^ 3));
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline u16 __init flash_readw(u8 __iomem *flash, u32 addr)
|
||||
{
|
||||
#ifdef __ARMEB__
|
||||
return __raw_readw(flash + addr);
|
||||
#else
|
||||
return __raw_readw(flash + (addr ^ 2));
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __init gmlr_init(void)
|
||||
{
|
||||
u8 __iomem *flash;
|
||||
int i, devices = 1; /* flash */
|
||||
|
||||
ixp4xx_sys_init();
|
||||
|
||||
if ((flash = ioremap(IXP4XX_EXP_BUS_BASE_PHYS, 0x80)) == NULL)
|
||||
printk(KERN_ERR "goramo-mlr: unable to access system"
|
||||
" configuration data\n");
|
||||
else {
|
||||
system_rev = __raw_readl(flash + CFG_REV);
|
||||
hw_bits = __raw_readl(flash + CFG_HW_BITS);
|
||||
|
||||
for (i = 0; i < ETH_ALEN; i++) {
|
||||
eth_plat[0].hwaddr[i] =
|
||||
flash_readb(flash, CFG_ETH0_ADDRESS + i);
|
||||
eth_plat[1].hwaddr[i] =
|
||||
flash_readb(flash, CFG_ETH1_ADDRESS + i);
|
||||
}
|
||||
|
||||
__raw_writew(FLASH_CMD_READ_ID, flash);
|
||||
system_serial_high = flash_readw(flash, FLASH_SER_OFF);
|
||||
system_serial_high <<= 16;
|
||||
system_serial_high |= flash_readw(flash, FLASH_SER_OFF + 2);
|
||||
system_serial_low = flash_readw(flash, FLASH_SER_OFF + 4);
|
||||
system_serial_low <<= 16;
|
||||
system_serial_low |= flash_readw(flash, FLASH_SER_OFF + 6);
|
||||
__raw_writew(FLASH_CMD_READ_ARRAY, flash);
|
||||
|
||||
iounmap(flash);
|
||||
}
|
||||
|
||||
switch (hw_bits & (CFG_HW_HAS_UART0 | CFG_HW_HAS_UART1)) {
|
||||
case CFG_HW_HAS_UART0:
|
||||
memset(&uart_data[1], 0, sizeof(uart_data[1]));
|
||||
device_uarts.num_resources = 1;
|
||||
break;
|
||||
|
||||
case CFG_HW_HAS_UART1:
|
||||
device_uarts.dev.platform_data = &uart_data[1];
|
||||
device_uarts.resource = &uart_resources[1];
|
||||
device_uarts.num_resources = 1;
|
||||
break;
|
||||
}
|
||||
if (hw_bits & (CFG_HW_HAS_UART0 | CFG_HW_HAS_UART1))
|
||||
device_tab[devices++] = &device_uarts; /* max index 1 */
|
||||
|
||||
if (hw_bits & CFG_HW_HAS_ETH0)
|
||||
device_tab[devices++] = &device_eth_tab[0]; /* max index 2 */
|
||||
if (hw_bits & CFG_HW_HAS_ETH1)
|
||||
device_tab[devices++] = &device_eth_tab[1]; /* max index 3 */
|
||||
|
||||
if (hw_bits & CFG_HW_HAS_HSS0)
|
||||
device_tab[devices++] = &device_hss_tab[0]; /* max index 4 */
|
||||
if (hw_bits & CFG_HW_HAS_HSS1)
|
||||
device_tab[devices++] = &device_hss_tab[1]; /* max index 5 */
|
||||
|
||||
if (hw_bits & CFG_HW_HAS_EEPROM)
|
||||
device_tab[devices++] = &device_i2c; /* max index 6 */
|
||||
|
||||
gpio_line_config(GPIO_SCL, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_SDA, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_STR, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_HSS0_RTS_N, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_HSS1_RTS_N, IXP4XX_GPIO_OUT);
|
||||
gpio_line_config(GPIO_HSS0_DCD_N, IXP4XX_GPIO_IN);
|
||||
gpio_line_config(GPIO_HSS1_DCD_N, IXP4XX_GPIO_IN);
|
||||
set_irq_type(gpio_irq(GPIO_HSS0_DCD_N), IRQ_TYPE_EDGE_BOTH);
|
||||
set_irq_type(gpio_irq(GPIO_HSS1_DCD_N), IRQ_TYPE_EDGE_BOTH);
|
||||
|
||||
set_control(CONTROL_HSS0_DTR_N, 1);
|
||||
set_control(CONTROL_HSS1_DTR_N, 1);
|
||||
set_control(CONTROL_EEPROM_WC_N, 1);
|
||||
set_control(CONTROL_PCI_RESET_N, 1);
|
||||
output_control();
|
||||
|
||||
msleep(1); /* Wait for PCI devices to initialize */
|
||||
|
||||
flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
|
||||
flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
|
||||
|
||||
platform_add_devices(device_tab, devices);
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
static void __init gmlr_pci_preinit(void)
|
||||
{
|
||||
set_irq_type(IRQ_ETHA, IRQ_TYPE_LEVEL_LOW);
|
||||
set_irq_type(IRQ_ETHB, IRQ_TYPE_LEVEL_LOW);
|
||||
set_irq_type(IRQ_NEC, IRQ_TYPE_LEVEL_LOW);
|
||||
set_irq_type(IRQ_MPCI, IRQ_TYPE_LEVEL_LOW);
|
||||
ixp4xx_pci_preinit();
|
||||
}
|
||||
|
||||
static void __init gmlr_pci_postinit(void)
|
||||
{
|
||||
if ((hw_bits & CFG_HW_USB_PORTS) >= 2 &&
|
||||
(hw_bits & CFG_HW_USB_PORTS) < 5) {
|
||||
/* need to adjust number of USB ports on NEC chip */
|
||||
u32 value, addr = BIT(32 - SLOT_NEC) | 0xE0;
|
||||
if (!ixp4xx_pci_read(addr, NP_CMD_CONFIGREAD, &value)) {
|
||||
value &= ~7;
|
||||
value |= (hw_bits & CFG_HW_USB_PORTS);
|
||||
ixp4xx_pci_write(addr, NP_CMD_CONFIGWRITE, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int __init gmlr_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{
|
||||
switch(slot) {
|
||||
case SLOT_ETHA: return IRQ_ETHA;
|
||||
case SLOT_ETHB: return IRQ_ETHB;
|
||||
case SLOT_NEC: return IRQ_NEC;
|
||||
default: return IRQ_MPCI;
|
||||
}
|
||||
}
|
||||
|
||||
static struct hw_pci gmlr_hw_pci __initdata = {
|
||||
.nr_controllers = 1,
|
||||
.preinit = gmlr_pci_preinit,
|
||||
.postinit = gmlr_pci_postinit,
|
||||
.swizzle = pci_std_swizzle,
|
||||
.setup = ixp4xx_setup,
|
||||
.scan = ixp4xx_scan_bus,
|
||||
.map_irq = gmlr_map_irq,
|
||||
};
|
||||
|
||||
static int __init gmlr_pci_init(void)
|
||||
{
|
||||
if (machine_is_goramo_mlr() &&
|
||||
(hw_bits & (CFG_HW_USB_PORTS | CFG_HW_HAS_PCI_SLOT)))
|
||||
pci_common_init(&gmlr_hw_pci);
|
||||
return 0;
|
||||
}
|
||||
|
||||
subsys_initcall(gmlr_pci_init);
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
|
||||
MACHINE_START(GORAMO_MLR, "MultiLink")
|
||||
/* Maintainer: Krzysztof Halasa */
|
||||
.phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
|
||||
.io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
|
||||
.map_io = ixp4xx_map_io,
|
||||
.init_irq = ixp4xx_init_irq,
|
||||
.timer = &ixp4xx_timer,
|
||||
.boot_params = 0x0100,
|
||||
.init_machine = gmlr_init,
|
||||
MACHINE_END
|
@ -26,6 +26,8 @@
|
||||
#define IXP46X_PROCESSOR_ID_VALUE 0x69054200 /* including IXP455 */
|
||||
#define IXP46X_PROCESSOR_ID_MASK 0xfffffff0
|
||||
|
||||
#define cpu_is_ixp42x_rev_a0() ((read_cpuid_id() & (IXP42X_PROCESSOR_ID_MASK | 0xF)) == \
|
||||
IXP42X_PROCESSOR_ID_VALUE)
|
||||
#define cpu_is_ixp42x() ((read_cpuid_id() & IXP42X_PROCESSOR_ID_MASK) == \
|
||||
IXP42X_PROCESSOR_ID_VALUE)
|
||||
#define cpu_is_ixp43x() ((read_cpuid_id() & IXP43X_PROCESSOR_ID_MASK) == \
|
||||
@ -35,8 +37,11 @@
|
||||
|
||||
static inline u32 ixp4xx_read_feature_bits(void)
|
||||
{
|
||||
unsigned int val = ~*IXP4XX_EXP_CFG2;
|
||||
u32 val = ~*IXP4XX_EXP_CFG2;
|
||||
|
||||
if (cpu_is_ixp42x_rev_a0())
|
||||
return IXP42X_FEATURE_MASK & ~(IXP4XX_FEATURE_RCOMP |
|
||||
IXP4XX_FEATURE_AES);
|
||||
if (cpu_is_ixp42x())
|
||||
return val & IXP42X_FEATURE_MASK;
|
||||
if (cpu_is_ixp43x())
|
||||
|
@ -15,7 +15,7 @@
|
||||
#define DEBUG_QMGR 0
|
||||
|
||||
#define HALF_QUEUES 32
|
||||
#define QUEUES 64 /* only 32 lower queues currently supported */
|
||||
#define QUEUES 64
|
||||
#define MAX_QUEUE_LENGTH 4 /* in dwords */
|
||||
|
||||
#define QUEUE_STAT1_EMPTY 1 /* queue status bits */
|
||||
@ -110,48 +110,95 @@ static inline u32 qmgr_get_entry(unsigned int queue)
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline int qmgr_get_stat1(unsigned int queue)
|
||||
static inline int __qmgr_get_stat1(unsigned int queue)
|
||||
{
|
||||
extern struct qmgr_regs __iomem *qmgr_regs;
|
||||
return (__raw_readl(&qmgr_regs->stat1[queue >> 3])
|
||||
>> ((queue & 7) << 2)) & 0xF;
|
||||
}
|
||||
|
||||
static inline int qmgr_get_stat2(unsigned int queue)
|
||||
static inline int __qmgr_get_stat2(unsigned int queue)
|
||||
{
|
||||
extern struct qmgr_regs __iomem *qmgr_regs;
|
||||
BUG_ON(queue >= HALF_QUEUES);
|
||||
return (__raw_readl(&qmgr_regs->stat2[queue >> 4])
|
||||
>> ((queue & 0xF) << 1)) & 0x3;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue is empty
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if the queue is empty.
|
||||
*/
|
||||
static inline int qmgr_stat_empty(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_EMPTY);
|
||||
BUG_ON(queue >= HALF_QUEUES);
|
||||
return __qmgr_get_stat1(queue) & QUEUE_STAT1_EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue is nearly empty
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if the queue is nearly or completely empty.
|
||||
*/
|
||||
static inline int qmgr_stat_nearly_empty(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_EMPTY);
|
||||
extern struct qmgr_regs __iomem *qmgr_regs;
|
||||
if (queue >= HALF_QUEUES)
|
||||
return (__raw_readl(&qmgr_regs->statne_h) >>
|
||||
(queue - HALF_QUEUES)) & 0x01;
|
||||
return __qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue is nearly full
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if the queue is nearly or completely full.
|
||||
*/
|
||||
static inline int qmgr_stat_nearly_full(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_FULL);
|
||||
BUG_ON(queue >= HALF_QUEUES);
|
||||
return __qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_FULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue is full
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if the queue is full.
|
||||
*/
|
||||
static inline int qmgr_stat_full(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_FULL);
|
||||
extern struct qmgr_regs __iomem *qmgr_regs;
|
||||
if (queue >= HALF_QUEUES)
|
||||
return (__raw_readl(&qmgr_regs->statf_h) >>
|
||||
(queue - HALF_QUEUES)) & 0x01;
|
||||
return __qmgr_get_stat1(queue) & QUEUE_STAT1_FULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue experienced underflow
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if empty.
|
||||
*/
|
||||
static inline int qmgr_stat_underflow(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat2(queue) & QUEUE_STAT2_UNDERFLOW);
|
||||
return __qmgr_get_stat2(queue) & QUEUE_STAT2_UNDERFLOW;
|
||||
}
|
||||
|
||||
/**
|
||||
* qmgr_stat_empty() - checks if a hardware queue experienced overflow
|
||||
* @queue: queue number
|
||||
*
|
||||
* Returns non-zero value if empty.
|
||||
*/
|
||||
static inline int qmgr_stat_overflow(unsigned int queue)
|
||||
{
|
||||
return !!(qmgr_get_stat2(queue) & QUEUE_STAT2_OVERFLOW);
|
||||
return __qmgr_get_stat2(queue) & QUEUE_STAT2_OVERFLOW;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -386,15 +386,6 @@ static int npe_reset(struct npe *npe)
|
||||
/* reset the NPE */
|
||||
ixp4xx_write_feature_bits(val &
|
||||
~(IXP4XX_FEATURE_RESET_NPEA << npe->id));
|
||||
for (i = 0; i < MAX_RETRIES; i++) {
|
||||
if (!(ixp4xx_read_feature_bits() &
|
||||
(IXP4XX_FEATURE_RESET_NPEA << npe->id)))
|
||||
break; /* reset completed */
|
||||
udelay(1);
|
||||
}
|
||||
if (i == MAX_RETRIES)
|
||||
return -ETIMEDOUT;
|
||||
|
||||
/* deassert reset */
|
||||
ixp4xx_write_feature_bits(val |
|
||||
(IXP4XX_FEATURE_RESET_NPEA << npe->id));
|
||||
@ -714,7 +705,7 @@ static int __init npe_init_module(void)
|
||||
}
|
||||
|
||||
if (!found)
|
||||
return -ENOSYS;
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -18,8 +18,8 @@ struct qmgr_regs __iomem *qmgr_regs;
|
||||
static struct resource *mem_res;
|
||||
static spinlock_t qmgr_lock;
|
||||
static u32 used_sram_bitmap[4]; /* 128 16-dword pages */
|
||||
static void (*irq_handlers[HALF_QUEUES])(void *pdev);
|
||||
static void *irq_pdevs[HALF_QUEUES];
|
||||
static void (*irq_handlers[QUEUES])(void *pdev);
|
||||
static void *irq_pdevs[QUEUES];
|
||||
|
||||
#if DEBUG_QMGR
|
||||
char qmgr_queue_descs[QUEUES][32];
|
||||
@ -28,51 +28,112 @@ char qmgr_queue_descs[QUEUES][32];
|
||||
void qmgr_set_irq(unsigned int queue, int src,
|
||||
void (*handler)(void *pdev), void *pdev)
|
||||
{
|
||||
u32 __iomem *reg = &qmgr_regs->irqsrc[queue / 8]; /* 8 queues / u32 */
|
||||
int bit = (queue % 8) * 4; /* 3 bits + 1 reserved bit per queue */
|
||||
unsigned long flags;
|
||||
|
||||
src &= 7;
|
||||
spin_lock_irqsave(&qmgr_lock, flags);
|
||||
__raw_writel((__raw_readl(reg) & ~(7 << bit)) | (src << bit), reg);
|
||||
if (queue < HALF_QUEUES) {
|
||||
u32 __iomem *reg;
|
||||
int bit;
|
||||
BUG_ON(src > QUEUE_IRQ_SRC_NOT_FULL);
|
||||
reg = &qmgr_regs->irqsrc[queue >> 3]; /* 8 queues per u32 */
|
||||
bit = (queue % 8) * 4; /* 3 bits + 1 reserved bit per queue */
|
||||
__raw_writel((__raw_readl(reg) & ~(7 << bit)) | (src << bit),
|
||||
reg);
|
||||
} else
|
||||
/* IRQ source for queues 32-63 is fixed */
|
||||
BUG_ON(src != QUEUE_IRQ_SRC_NOT_NEARLY_EMPTY);
|
||||
|
||||
irq_handlers[queue] = handler;
|
||||
irq_pdevs[queue] = pdev;
|
||||
spin_unlock_irqrestore(&qmgr_lock, flags);
|
||||
}
|
||||
|
||||
|
||||
static irqreturn_t qmgr_irq1(int irq, void *pdev)
|
||||
static irqreturn_t qmgr_irq1_a0(int irq, void *pdev)
|
||||
{
|
||||
int i;
|
||||
u32 val = __raw_readl(&qmgr_regs->irqstat[0]);
|
||||
__raw_writel(val, &qmgr_regs->irqstat[0]); /* ACK */
|
||||
int i, ret = 0;
|
||||
u32 en_bitmap, src, stat;
|
||||
|
||||
for (i = 0; i < HALF_QUEUES; i++)
|
||||
if (val & (1 << i))
|
||||
/* ACK - it may clear any bits so don't rely on it */
|
||||
__raw_writel(0xFFFFFFFF, &qmgr_regs->irqstat[0]);
|
||||
|
||||
en_bitmap = qmgr_regs->irqen[0];
|
||||
while (en_bitmap) {
|
||||
i = __fls(en_bitmap); /* number of the last "low" queue */
|
||||
en_bitmap &= ~BIT(i);
|
||||
src = qmgr_regs->irqsrc[i >> 3];
|
||||
stat = qmgr_regs->stat1[i >> 3];
|
||||
if (src & 4) /* the IRQ condition is inverted */
|
||||
stat = ~stat;
|
||||
if (stat & BIT(src & 3)) {
|
||||
irq_handlers[i](irq_pdevs[i]);
|
||||
ret = IRQ_HANDLED;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
return val ? IRQ_HANDLED : 0;
|
||||
|
||||
static irqreturn_t qmgr_irq2_a0(int irq, void *pdev)
|
||||
{
|
||||
int i, ret = 0;
|
||||
u32 req_bitmap;
|
||||
|
||||
/* ACK - it may clear any bits so don't rely on it */
|
||||
__raw_writel(0xFFFFFFFF, &qmgr_regs->irqstat[1]);
|
||||
|
||||
req_bitmap = qmgr_regs->irqen[1] & qmgr_regs->statne_h;
|
||||
while (req_bitmap) {
|
||||
i = __fls(req_bitmap); /* number of the last "high" queue */
|
||||
req_bitmap &= ~BIT(i);
|
||||
irq_handlers[HALF_QUEUES + i](irq_pdevs[HALF_QUEUES + i]);
|
||||
ret = IRQ_HANDLED;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static irqreturn_t qmgr_irq(int irq, void *pdev)
|
||||
{
|
||||
int i, half = (irq == IRQ_IXP4XX_QM1 ? 0 : 1);
|
||||
u32 req_bitmap = __raw_readl(&qmgr_regs->irqstat[half]);
|
||||
|
||||
if (!req_bitmap)
|
||||
return 0;
|
||||
__raw_writel(req_bitmap, &qmgr_regs->irqstat[half]); /* ACK */
|
||||
|
||||
while (req_bitmap) {
|
||||
i = __fls(req_bitmap); /* number of the last queue */
|
||||
req_bitmap &= ~BIT(i);
|
||||
i += half * HALF_QUEUES;
|
||||
irq_handlers[i](irq_pdevs[i]);
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
void qmgr_enable_irq(unsigned int queue)
|
||||
{
|
||||
unsigned long flags;
|
||||
int half = queue / 32;
|
||||
u32 mask = 1 << (queue & (HALF_QUEUES - 1));
|
||||
|
||||
spin_lock_irqsave(&qmgr_lock, flags);
|
||||
__raw_writel(__raw_readl(&qmgr_regs->irqen[0]) | (1 << queue),
|
||||
&qmgr_regs->irqen[0]);
|
||||
__raw_writel(__raw_readl(&qmgr_regs->irqen[half]) | mask,
|
||||
&qmgr_regs->irqen[half]);
|
||||
spin_unlock_irqrestore(&qmgr_lock, flags);
|
||||
}
|
||||
|
||||
void qmgr_disable_irq(unsigned int queue)
|
||||
{
|
||||
unsigned long flags;
|
||||
int half = queue / 32;
|
||||
u32 mask = 1 << (queue & (HALF_QUEUES - 1));
|
||||
|
||||
spin_lock_irqsave(&qmgr_lock, flags);
|
||||
__raw_writel(__raw_readl(&qmgr_regs->irqen[0]) & ~(1 << queue),
|
||||
&qmgr_regs->irqen[0]);
|
||||
__raw_writel(1 << queue, &qmgr_regs->irqstat[0]); /* clear */
|
||||
__raw_writel(__raw_readl(&qmgr_regs->irqen[half]) & ~mask,
|
||||
&qmgr_regs->irqen[half]);
|
||||
__raw_writel(mask, &qmgr_regs->irqstat[half]); /* clear */
|
||||
spin_unlock_irqrestore(&qmgr_lock, flags);
|
||||
}
|
||||
|
||||
@ -98,8 +159,7 @@ int __qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */,
|
||||
u32 cfg, addr = 0, mask[4]; /* in 16-dwords */
|
||||
int err;
|
||||
|
||||
if (queue >= HALF_QUEUES)
|
||||
return -ERANGE;
|
||||
BUG_ON(queue >= QUEUES);
|
||||
|
||||
if ((nearly_empty_watermark | nearly_full_watermark) & ~7)
|
||||
return -EINVAL;
|
||||
@ -180,7 +240,7 @@ void qmgr_release_queue(unsigned int queue)
|
||||
{
|
||||
u32 cfg, addr, mask[4];
|
||||
|
||||
BUG_ON(queue >= HALF_QUEUES); /* not in valid range */
|
||||
BUG_ON(queue >= QUEUES); /* not in valid range */
|
||||
|
||||
spin_lock_irq(&qmgr_lock);
|
||||
cfg = __raw_readl(&qmgr_regs->sram[queue]);
|
||||
@ -224,6 +284,8 @@ void qmgr_release_queue(unsigned int queue)
|
||||
static int qmgr_init(void)
|
||||
{
|
||||
int i, err;
|
||||
irq_handler_t handler1, handler2;
|
||||
|
||||
mem_res = request_mem_region(IXP4XX_QMGR_BASE_PHYS,
|
||||
IXP4XX_QMGR_REGION_SIZE,
|
||||
"IXP4xx Queue Manager");
|
||||
@ -247,23 +309,42 @@ static int qmgr_init(void)
|
||||
__raw_writel(0, &qmgr_regs->irqen[i]);
|
||||
}
|
||||
|
||||
__raw_writel(0xFFFFFFFF, &qmgr_regs->statne_h);
|
||||
__raw_writel(0, &qmgr_regs->statf_h);
|
||||
|
||||
for (i = 0; i < QUEUES; i++)
|
||||
__raw_writel(0, &qmgr_regs->sram[i]);
|
||||
|
||||
err = request_irq(IRQ_IXP4XX_QM1, qmgr_irq1, 0,
|
||||
"IXP4xx Queue Manager", NULL);
|
||||
if (cpu_is_ixp42x_rev_a0()) {
|
||||
handler1 = qmgr_irq1_a0;
|
||||
handler2 = qmgr_irq2_a0;
|
||||
} else
|
||||
handler1 = handler2 = qmgr_irq;
|
||||
|
||||
err = request_irq(IRQ_IXP4XX_QM1, handler1, 0, "IXP4xx Queue Manager",
|
||||
NULL);
|
||||
if (err) {
|
||||
printk(KERN_ERR "qmgr: failed to request IRQ%i\n",
|
||||
IRQ_IXP4XX_QM1);
|
||||
printk(KERN_ERR "qmgr: failed to request IRQ%i (%i)\n",
|
||||
IRQ_IXP4XX_QM1, err);
|
||||
goto error_irq;
|
||||
}
|
||||
|
||||
err = request_irq(IRQ_IXP4XX_QM2, handler2, 0, "IXP4xx Queue Manager",
|
||||
NULL);
|
||||
if (err) {
|
||||
printk(KERN_ERR "qmgr: failed to request IRQ%i (%i)\n",
|
||||
IRQ_IXP4XX_QM2, err);
|
||||
goto error_irq2;
|
||||
}
|
||||
|
||||
used_sram_bitmap[0] = 0xF; /* 4 first pages reserved for config */
|
||||
spin_lock_init(&qmgr_lock);
|
||||
|
||||
printk(KERN_INFO "IXP4xx Queue Manager initialized.\n");
|
||||
return 0;
|
||||
|
||||
error_irq2:
|
||||
free_irq(IRQ_IXP4XX_QM1, NULL);
|
||||
error_irq:
|
||||
iounmap(qmgr_regs);
|
||||
error_map:
|
||||
@ -274,7 +355,9 @@ error_map:
|
||||
static void qmgr_remove(void)
|
||||
{
|
||||
free_irq(IRQ_IXP4XX_QM1, NULL);
|
||||
free_irq(IRQ_IXP4XX_QM2, NULL);
|
||||
synchronize_irq(IRQ_IXP4XX_QM1);
|
||||
synchronize_irq(IRQ_IXP4XX_QM2);
|
||||
iounmap(qmgr_regs);
|
||||
release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
||||
}
|
||||
|
@ -289,12 +289,12 @@ config MACH_LITTLETON
|
||||
config MACH_TAVOREVB
|
||||
bool "PXA930 Evaluation Board (aka TavorEVB)"
|
||||
select PXA3xx
|
||||
select PXA930
|
||||
select CPU_PXA930
|
||||
|
||||
config MACH_SAAR
|
||||
bool "PXA930 Handheld Platform (aka SAAR)"
|
||||
select PXA3xx
|
||||
select PXA930
|
||||
select CPU_PXA930
|
||||
|
||||
config MACH_ARMCORE
|
||||
bool "CompuLab CM-X255/CM-X270 modules"
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <mach/regs-power.h>
|
||||
@ -39,6 +40,8 @@ static void s3c2412_cpu_suspend(void)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
flush_cache_all();
|
||||
|
||||
/* set our standby method to sleep */
|
||||
|
||||
tmp = __raw_readl(S3C2412_PWRCFG);
|
||||
|
@ -40,6 +40,8 @@
|
||||
|
||||
#define S3C64XX_PA_FB (0x77100000)
|
||||
#define S3C64XX_PA_SYSCON (0x7E00F000)
|
||||
#define S3C64XX_PA_IIS0 (0x7F002000)
|
||||
#define S3C64XX_PA_IIS1 (0x7F003000)
|
||||
#define S3C64XX_PA_TIMER (0x7F006000)
|
||||
#define S3C64XX_PA_IIC0 (0x7F004000)
|
||||
#define S3C64XX_PA_IIC1 (0x7F00F000)
|
||||
|
@ -70,7 +70,7 @@ SRC_ARCH = $(srctree)/arch/cris
|
||||
# cris object files path
|
||||
OBJ_ARCH = $(objtree)/arch/cris
|
||||
|
||||
boot := arch/cris/$(SARCH)/boot
|
||||
boot := arch/cris/boot
|
||||
MACHINE := arch/cris/$(SARCH)
|
||||
|
||||
all: zImage
|
||||
@ -81,15 +81,15 @@ zImage Image: vmlinux
|
||||
archprepare:
|
||||
|
||||
archclean:
|
||||
$(Q)if [ -e arch/cris/$(SARCH)/boot ]; then \
|
||||
$(MAKE) $(clean)=arch/cris/$(SARCH)/boot; \
|
||||
$(Q)if [ -e arch/cris/boot ]; then \
|
||||
$(MAKE) $(clean)=arch/cris/boot; \
|
||||
fi
|
||||
|
||||
CLEAN_FILES += \
|
||||
$(MACHINE)/boot/zImage \
|
||||
$(MACHINE)/boot/compressed/decompress.bin \
|
||||
$(MACHINE)/boot/compressed/piggy.gz \
|
||||
$(MACHINE)/boot/rescue/rescue.bin
|
||||
$(boot)/zImage \
|
||||
$(boot)/compressed/decompress.bin \
|
||||
$(boot)/compressed/piggy.gz \
|
||||
$(boot)/rescue/rescue.bin
|
||||
|
||||
|
||||
# MRPROPER_FILES +=
|
||||
|
@ -1,25 +0,0 @@
|
||||
Creation of the self-extracting compressed kernel image (vmlinuz)
|
||||
-----------------------------------------------------------------
|
||||
$Id: README,v 1.1 2001/12/17 13:59:27 bjornw Exp $
|
||||
|
||||
This can be slightly confusing because it's a process with many steps.
|
||||
|
||||
The kernel object built by the arch/etrax100/Makefile, vmlinux, is split
|
||||
by that makefile into text and data binary files, vmlinux.text and
|
||||
vmlinux.data.
|
||||
|
||||
Those files together with a ROM filesystem can be catted together and
|
||||
burned into a flash or executed directly at the DRAM origin.
|
||||
|
||||
They can also be catted together and compressed with gzip, which is what
|
||||
happens in this makefile. Together they make up piggy.img.
|
||||
|
||||
The decompressor is built into the file decompress.o. It is turned into
|
||||
the binary file decompress.bin, which is catted together with piggy.img
|
||||
into the file vmlinuz. It can be executed in an arbitrary place in flash.
|
||||
|
||||
Be careful - it assumes some things about free locations in DRAM. It
|
||||
assumes the DRAM starts at 0x40000000 and that it is at least 8 MB,
|
||||
so it puts its code at 0x40700000, and initial stack at 0x40800000.
|
||||
|
||||
-Bjorn
|
@ -1,246 +0,0 @@
|
||||
/*
|
||||
* misc.c
|
||||
*
|
||||
* This is a collection of several routines from gzip-1.0.3
|
||||
* adapted for Linux.
|
||||
*
|
||||
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
|
||||
* puts by Nick Holloway 1993, better puts by Martin Mares 1995
|
||||
* adaptation for Linux/CRIS Axis Communications AB, 1999
|
||||
*
|
||||
*/
|
||||
|
||||
/* where the piggybacked kernel image expects itself to live.
|
||||
* it is the same address we use when we network load an uncompressed
|
||||
* image into DRAM, and it is the address the kernel is linked to live
|
||||
* at by vmlinux.lds.S
|
||||
*/
|
||||
|
||||
#define KERNEL_LOAD_ADR 0x40004000
|
||||
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <arch/svinto.h>
|
||||
|
||||
/*
|
||||
* gzip declarations
|
||||
*/
|
||||
|
||||
#define OF(args) args
|
||||
#define STATIC static
|
||||
|
||||
void *memset(void *s, int c, size_t n);
|
||||
void *memcpy(void *__dest, __const void *__src, size_t __n);
|
||||
|
||||
#define memzero(s, n) memset((s), 0, (n))
|
||||
|
||||
typedef unsigned char uch;
|
||||
typedef unsigned short ush;
|
||||
typedef unsigned long ulg;
|
||||
|
||||
#define WSIZE 0x8000 /* Window size must be at least 32k, */
|
||||
/* and a power of two */
|
||||
|
||||
static uch *inbuf; /* input buffer */
|
||||
static uch window[WSIZE]; /* Sliding window buffer */
|
||||
|
||||
unsigned inptr = 0; /* index of next byte to be processed in inbuf
|
||||
* After decompression it will contain the
|
||||
* compressed size, and head.S will read it.
|
||||
*/
|
||||
|
||||
static unsigned outcnt = 0; /* bytes in output buffer */
|
||||
|
||||
/* gzip flag byte */
|
||||
#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
|
||||
#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */
|
||||
#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
|
||||
#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
|
||||
#define COMMENT 0x10 /* bit 4 set: file comment present */
|
||||
#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
|
||||
#define RESERVED 0xC0 /* bit 6,7: reserved */
|
||||
|
||||
#define get_byte() (inbuf[inptr++])
|
||||
|
||||
/* Diagnostic functions */
|
||||
#ifdef DEBUG
|
||||
# define Assert(cond, msg) do { \
|
||||
if (!(cond)) \
|
||||
error(msg); \
|
||||
} while (0)
|
||||
# define Trace(x) fprintf x
|
||||
# define Tracev(x) do { \
|
||||
if (verbose) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracevv(x) do { \
|
||||
if (verbose > 1) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracec(c, x) do { \
|
||||
if (verbose && (c)) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracecv(c, x) do { \
|
||||
if (verbose > 1 && (c)) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
#else
|
||||
# define Assert(cond, msg)
|
||||
# define Trace(x)
|
||||
# define Tracev(x)
|
||||
# define Tracevv(x)
|
||||
# define Tracec(c, x)
|
||||
# define Tracecv(c, x)
|
||||
#endif
|
||||
|
||||
static void flush_window(void);
|
||||
static void error(char *m);
|
||||
|
||||
extern char *input_data; /* lives in head.S */
|
||||
|
||||
static long bytes_out = 0;
|
||||
static uch *output_data;
|
||||
static unsigned long output_ptr = 0;
|
||||
static void puts(const char *);
|
||||
|
||||
/* the "heap" is put directly after the BSS ends, at end */
|
||||
|
||||
extern int _end;
|
||||
static long free_mem_ptr = (long)&_end;
|
||||
static long free_mem_end_ptr;
|
||||
|
||||
#include "../../../../../lib/inflate.c"
|
||||
|
||||
/* decompressor info and error messages to serial console */
|
||||
|
||||
static void
|
||||
puts(const char *s)
|
||||
{
|
||||
#ifndef CONFIG_ETRAX_DEBUG_PORT_NULL
|
||||
while (*s) {
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT0
|
||||
while (!(*R_SERIAL0_STATUS & (1 << 5))) ;
|
||||
*R_SERIAL0_TR_DATA = *s++;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT1
|
||||
while (!(*R_SERIAL1_STATUS & (1 << 5))) ;
|
||||
*R_SERIAL1_TR_DATA = *s++;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT2
|
||||
while (!(*R_SERIAL2_STATUS & (1 << 5))) ;
|
||||
*R_SERIAL2_TR_DATA = *s++;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT3
|
||||
while (!(*R_SERIAL3_STATUS & (1 << 5))) ;
|
||||
*R_SERIAL3_TR_DATA = *s++;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void *memset(void *s, int c, size_t n)
|
||||
{
|
||||
int i;
|
||||
char *ss = (char *)s;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
ss[i] = c;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void *memcpy(void *__dest, __const void *__src, size_t __n)
|
||||
{
|
||||
int i;
|
||||
char *d = (char *)__dest, *s = (char *)__src;
|
||||
|
||||
for (i = 0; i < __n; i++)
|
||||
d[i] = s[i];
|
||||
|
||||
return __dest;
|
||||
}
|
||||
|
||||
/* ===========================================================================
|
||||
* Write the output window window[0..outcnt-1] and update crc and bytes_out.
|
||||
* (Used for the decompressed data only.)
|
||||
*/
|
||||
|
||||
static void flush_window(void)
|
||||
{
|
||||
ulg c = crc; /* temporary variable */
|
||||
unsigned n;
|
||||
uch *in, *out, ch;
|
||||
|
||||
in = window;
|
||||
out = &output_data[output_ptr];
|
||||
for (n = 0; n < outcnt; n++) {
|
||||
ch = *out = *in;
|
||||
out++;
|
||||
in++;
|
||||
c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
|
||||
}
|
||||
crc = c;
|
||||
bytes_out += (ulg)outcnt;
|
||||
output_ptr += (ulg)outcnt;
|
||||
outcnt = 0;
|
||||
}
|
||||
|
||||
static void error(char *x)
|
||||
{
|
||||
puts("\n\n");
|
||||
puts(x);
|
||||
puts("\n\n -- System halted\n");
|
||||
|
||||
while (1); /* Halt */
|
||||
}
|
||||
|
||||
void setup_normal_output_buffer(void)
|
||||
{
|
||||
output_data = (char *)KERNEL_LOAD_ADR;
|
||||
}
|
||||
|
||||
void decompress_kernel(void)
|
||||
{
|
||||
char revision;
|
||||
|
||||
/* input_data is set in head.S */
|
||||
inbuf = input_data;
|
||||
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT0
|
||||
*R_SERIAL0_XOFF = 0;
|
||||
*R_SERIAL0_BAUD = 0x99;
|
||||
*R_SERIAL0_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT1
|
||||
*R_SERIAL1_XOFF = 0;
|
||||
*R_SERIAL1_BAUD = 0x99;
|
||||
*R_SERIAL1_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT2
|
||||
*R_GEN_CONFIG = 0x08;
|
||||
*R_SERIAL2_XOFF = 0;
|
||||
*R_SERIAL2_BAUD = 0x99;
|
||||
*R_SERIAL2_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT3
|
||||
*R_GEN_CONFIG = 0x100;
|
||||
*R_SERIAL3_XOFF = 0;
|
||||
*R_SERIAL3_BAUD = 0x99;
|
||||
*R_SERIAL3_TR_CTRL = 0x40;
|
||||
#endif
|
||||
|
||||
setup_normal_output_buffer();
|
||||
|
||||
makecrc();
|
||||
|
||||
__asm__ volatile ("move $vr,%0" : "=rm" (revision));
|
||||
if (revision < 10) {
|
||||
puts("You need an ETRAX 100LX to run linux 2.6\n");
|
||||
while (1);
|
||||
}
|
||||
|
||||
puts("Uncompressing Linux...\n");
|
||||
gunzip();
|
||||
puts("Done. Now booting the kernel.\n");
|
||||
}
|
@ -536,10 +536,10 @@ multiple_interrupt:
|
||||
movem $r13, [$sp]
|
||||
push $r10 ; push orig_r10
|
||||
clear.d [$sp=$sp-4] ; frametype == 0, normal frame
|
||||
|
||||
|
||||
move.d $sp, $r10
|
||||
jsr do_multiple_IRQ
|
||||
|
||||
|
||||
jump ret_from_intr
|
||||
|
||||
do_sigtrap:
|
||||
@ -585,7 +585,7 @@ _ugdb_handle_breakpoint:
|
||||
pop $r0 ; Restore r0.
|
||||
ba do_sigtrap ; SIGTRAP the offending process.
|
||||
pop $dccr ; Restore dccr in delay slot.
|
||||
|
||||
|
||||
.global kernel_execve
|
||||
kernel_execve:
|
||||
move.d __NR_execve, $r9
|
||||
@ -929,6 +929,14 @@ sys_call_table:
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime /* 325 */
|
||||
.long sys_timerfd_gettime
|
||||
.long sys_signalfd4
|
||||
.long sys_eventfd2
|
||||
.long sys_epoll_create1
|
||||
.long sys_dup3 /* 330 */
|
||||
.long sys_pipe2
|
||||
.long sys_inotify_init1
|
||||
.long sys_preadv
|
||||
.long sys_pwritev
|
||||
|
||||
/*
|
||||
* NOTE!! This doesn't have to be exact - we just have
|
||||
|
@ -1,20 +0,0 @@
|
||||
#
|
||||
# arch/cris/arch-v32/boot/Makefile
|
||||
#
|
||||
|
||||
OBJCOPYFLAGS = -O binary -R .note -R .comment
|
||||
|
||||
subdir- := compressed rescue
|
||||
targets := Image
|
||||
|
||||
$(obj)/Image: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo ' Kernel: $@ is ready'
|
||||
|
||||
$(obj)/compressed/vmlinux: $(obj)/Image FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
$(Q)$(MAKE) $(build)=$(obj)/rescue $(obj)/rescue/rescue.bin
|
||||
|
||||
$(obj)/zImage: $(obj)/compressed/vmlinux
|
||||
@cp $< $@
|
||||
@echo ' Kernel: $@ is ready'
|
@ -1,26 +0,0 @@
|
||||
#
|
||||
# arch/cris/arch-v32/boot/compressed/Makefile
|
||||
#
|
||||
|
||||
asflags-y += -I$(srctree)/include/asm/mach/ -I$(srctree)/include/asm/arch
|
||||
ccflags-y += -O2 -I$(srctree)/include/asm/mach/ -I$(srctree)/include/asm/arch
|
||||
ldflags-y += -T$(srctree)/$(src)/decompress.lds
|
||||
OBJECTS = $(obj)/head.o $(obj)/misc.o
|
||||
OBJCOPYFLAGS = -O binary --remove-section=.bss
|
||||
|
||||
quiet_cmd_image = BUILD $@
|
||||
cmd_image = cat $(obj)/decompress.bin $(obj)/piggy.gz > $@
|
||||
|
||||
targets := vmlinux piggy.gz decompress.o decompress.bin
|
||||
|
||||
$(obj)/decompress.o: $(OBJECTS) FORCE
|
||||
$(call if_changed,ld)
|
||||
|
||||
$(obj)/decompress.bin: $(obj)/decompress.o FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
$(obj)/vmlinux: $(obj)/piggy.gz $(obj)/decompress.bin FORCE
|
||||
$(call if_changed,image)
|
||||
|
||||
$(obj)/piggy.gz: $(obj)/../Image FORCE
|
||||
$(call if_changed,gzip)
|
@ -1,26 +0,0 @@
|
||||
#
|
||||
# Makefile for rescue (bootstrap) code
|
||||
#
|
||||
|
||||
CC = gcc-cris -mlinux -march=v32 $(LINUXINCLUDE)
|
||||
ccflags-y += -O2 -I $(srctree)/include/asm/arch/mach/ \
|
||||
-I $(srctree)/include/asm/arch
|
||||
asflags-y += -I $(srctree)/include/asm/arch/mach/ -I $(srctree)/include/asm/arch
|
||||
LD = gcc-cris -mlinux -march=v32 -nostdlib
|
||||
ldflags-y += -T $(srctree)/$(src)/rescue.lds
|
||||
LDPOSTFLAGS = -lgcc
|
||||
OBJCOPYFLAGS = -O binary --remove-section=.bss
|
||||
obj-$(CONFIG_ETRAX_AXISFLASHMAP) = head.o
|
||||
OBJECT := $(obj)/head.o
|
||||
|
||||
targets := rescue.o rescue.bin
|
||||
|
||||
quiet_cmd_ldlibgcc = LD $@
|
||||
cmd_ldlibgcc = $(LD) $(LDFLAGS) $(filter-out FORCE,$^) $(LDPOSTFLAGS) -o $@
|
||||
|
||||
$(obj)/rescue.o: $(OBJECTS) FORCE
|
||||
$(call if_changed,ldlibgcc)
|
||||
|
||||
$(obj)/rescue.bin: $(obj)/rescue.o FORCE
|
||||
$(call if_changed,objcopy)
|
||||
cp -p $(obj)/rescue.bin $(objtree)
|
@ -681,7 +681,7 @@ static int virtual_gpio_ioctl(struct file *file, unsigned int cmd,
|
||||
shadow |= ~readl(dir_oe[priv->minor]) |
|
||||
(arg & changeable_bits[priv->minor]);
|
||||
i2c_write(VIRT_I2C_ADDR, (void *)&shadow, sizeof(shadow));
|
||||
spin_lock_irqrestore(&gpio_lock, flags);
|
||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||
break;
|
||||
case IO_CLRBITS:
|
||||
spin_lock_irqsave(&gpio_lock, flags);
|
||||
@ -690,7 +690,7 @@ static int virtual_gpio_ioctl(struct file *file, unsigned int cmd,
|
||||
shadow |= ~readl(dir_oe[priv->minor]) &
|
||||
~(arg & changeable_bits[priv->minor]);
|
||||
i2c_write(VIRT_I2C_ADDR, (void *)&shadow, sizeof(shadow));
|
||||
spin_lock_irqrestore(&gpio_lock, flags);
|
||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||
break;
|
||||
case IO_HIGHALARM:
|
||||
/* Set alarm when bits with 1 in arg go high. */
|
||||
|
@ -9,8 +9,6 @@ obj-y := entry.o traps.o irq.o debugport.o \
|
||||
process.o ptrace.o setup.o signal.o traps.o time.o \
|
||||
cache.o cacheflush.o
|
||||
|
||||
obj-$(CONFIG_ETRAXFS_SIM) += vcs_hook.o
|
||||
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
obj-$(CONFIG_ETRAX_KGDB) += kgdb.o kgdb_asm.o
|
||||
obj-$(CONFIG_ETRAX_FAST_TIMER) += fasttimer.o
|
||||
|
@ -852,6 +852,14 @@ sys_call_table:
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime /* 325 */
|
||||
.long sys_timerfd_gettime
|
||||
.long sys_signalfd4
|
||||
.long sys_eventfd2
|
||||
.long sys_epoll_create1
|
||||
.long sys_dup3 /* 330 */
|
||||
.long sys_pipe2
|
||||
.long sys_inotify_init1
|
||||
.long sys_preadv
|
||||
.long sys_pwritev
|
||||
|
||||
/*
|
||||
* NOTE!! This doesn't have to be exact - we just have
|
||||
|
@ -1,8 +1,12 @@
|
||||
#
|
||||
# arch/cris/arch-v10/boot/Makefile
|
||||
# arch/cris/boot/Makefile
|
||||
#
|
||||
|
||||
OBJCOPYFLAGS = -O binary --remove-section=.bss
|
||||
objcopyflags-$(CONFIG_ETRAX_ARCH_V10) += -R .note -R .comment
|
||||
objcopyflags-$(CONFIG_ETRAX_ARCH_V32) += --remove-section=.bss
|
||||
|
||||
OBJCOPYFLAGS = -O binary $(objcopyflags-y)
|
||||
|
||||
|
||||
subdir- := compressed rescue
|
||||
targets := Image
|
@ -1,11 +1,23 @@
|
||||
#
|
||||
# arch/cris/arch-v10/boot/compressed/Makefile
|
||||
# arch/cris/boot/compressed/Makefile
|
||||
#
|
||||
|
||||
asflags-y += $(LINUXINCLUDE)
|
||||
ccflags-y += -O2 $(LINUXINCLUDE)
|
||||
ldflags-y += -T $(srctree)/$(src)/decompress.lds
|
||||
OBJECTS = $(obj)/head.o $(obj)/misc.o
|
||||
|
||||
# asflags-$(CONFIG_ETRAX_ARCH_V32) += -I$(srctree)/include/asm/mach \
|
||||
# -I$(srctree)/include/asm/arch
|
||||
# ccflags-$(CONFIG_ETRAX_ARCH_V32) += -O2 -I$(srctree)/include/asm/mach
|
||||
# -I$(srctree)/include/asm/arch
|
||||
|
||||
arch-$(CONFIG_ETRAX_ARCH_V10) = v10
|
||||
arch-$(CONFIG_ETRAX_ARCH_V32) = v32
|
||||
|
||||
ldflags-y += -T $(srctree)/$(src)/decompress_$(arch-y).lds
|
||||
|
||||
OBJECTS-$(CONFIG_ETRAX_ARCH_V32) = $(obj)/head_v32.o
|
||||
OBJECTS-$(CONFIG_ETRAX_ARCH_V10) = $(obj)/head_v10.o
|
||||
OBJECTS= $(OBJECTS-y) $(obj)/misc.o
|
||||
OBJCOPYFLAGS = -O binary --remove-section=.bss
|
||||
|
||||
quiet_cmd_image = BUILD $@
|
||||
@ -24,4 +36,3 @@ $(obj)/vmlinux: $(obj)/piggy.gz $(obj)/decompress.bin FORCE
|
||||
|
||||
$(obj)/piggy.gz: $(obj)/../Image FORCE
|
||||
$(call if_changed,gzip)
|
||||
|
@ -30,7 +30,7 @@
|
||||
beq dram_init_finished
|
||||
nop
|
||||
|
||||
#include "../../lib/dram_init.S"
|
||||
#include "../../arch-v10/lib/dram_init.S"
|
||||
|
||||
dram_init_finished:
|
||||
|
||||
@ -123,4 +123,4 @@ _cmd_line_magic:
|
||||
.dword 0
|
||||
_cmd_line_addr:
|
||||
.dword 0
|
||||
#include "../../lib/hw_settings.S"
|
||||
#include "../../arch-v10/lib/hw_settings.S"
|
@ -17,7 +17,7 @@
|
||||
.globl input_data
|
||||
|
||||
.text
|
||||
_start:
|
||||
start:
|
||||
di
|
||||
|
||||
;; Start clocks for used blocks.
|
||||
@ -29,9 +29,9 @@ _start:
|
||||
nop
|
||||
|
||||
#if defined CONFIG_ETRAXFS
|
||||
#include "../../mach-fs/dram_init.S"
|
||||
#include "../../arch-v32/mach-fs/dram_init.S"
|
||||
#elif defined CONFIG_CRIS_MACH_ARTPEC3
|
||||
#include "../../mach-a3/dram_init.S"
|
||||
#include "../../arch-v32/mach-a3/dram_init.S"
|
||||
#else
|
||||
#error Only ETRAXFS and ARTPEC-3 supported!
|
||||
#endif
|
||||
@ -137,9 +137,9 @@ _boot_source:
|
||||
.dword 0
|
||||
|
||||
#if defined CONFIG_ETRAXFS
|
||||
#include "../../mach-fs/hw_settings.S"
|
||||
#include "../../arch-v32/mach-fs/hw_settings.S"
|
||||
#elif defined CONFIG_CRIS_MACH_ARTPEC3
|
||||
#include "../../mach-a3/hw_settings.S"
|
||||
#include "../../arch-v32/mach-a3/hw_settings.S"
|
||||
#else
|
||||
#error Only ETRAXFS and ARTPEC-3 supported!
|
||||
#endif
|
@ -18,8 +18,9 @@
|
||||
|
||||
#define KERNEL_LOAD_ADR 0x40004000
|
||||
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
#include <hwregs/reg_rdwr.h>
|
||||
#include <hwregs/reg_map.h>
|
||||
#include <hwregs/ser_defs.h>
|
||||
@ -27,6 +28,9 @@
|
||||
#ifdef CONFIG_CRIS_MACH_ARTPEC3
|
||||
#include <hwregs/clkgen_defs.h>
|
||||
#endif
|
||||
#else
|
||||
#include <arch/svinto.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* gzip declarations
|
||||
@ -35,12 +39,10 @@
|
||||
#define OF(args) args
|
||||
#define STATIC static
|
||||
|
||||
void* memset(void* s, int c, size_t n);
|
||||
void* memcpy(void* __dest, __const void* __src,
|
||||
size_t __n);
|
||||
|
||||
#define memzero(s, n) memset ((s), 0, (n))
|
||||
void *memset(void *s, int c, size_t n);
|
||||
void *memcpy(void *__dest, __const void *__src, size_t __n);
|
||||
|
||||
#define memzero(s, n) memset((s), 0, (n))
|
||||
|
||||
typedef unsigned char uch;
|
||||
typedef unsigned short ush;
|
||||
@ -68,27 +70,43 @@ static unsigned outcnt = 0; /* bytes in output buffer */
|
||||
#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
|
||||
#define RESERVED 0xC0 /* bit 6,7: reserved */
|
||||
|
||||
#define get_byte() inbuf[inptr++]
|
||||
#define get_byte() (inbuf[inptr++])
|
||||
|
||||
/* Diagnostic functions */
|
||||
#ifdef DEBUG
|
||||
# define Assert(cond,msg) {if(!(cond)) error(msg);}
|
||||
# define Assert(cond, msg) do { \
|
||||
if (!(cond)) \
|
||||
error(msg); \
|
||||
} while (0)
|
||||
# define Trace(x) fprintf x
|
||||
# define Tracev(x) {if (verbose) fprintf x ;}
|
||||
# define Tracevv(x) {if (verbose>1) fprintf x ;}
|
||||
# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
|
||||
# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
|
||||
# define Tracev(x) do { \
|
||||
if (verbose) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracevv(x) do { \
|
||||
if (verbose > 1) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracec(c, x) do { \
|
||||
if (verbose && (c)) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
# define Tracecv(c, x) do { \
|
||||
if (verbose > 1 && (c)) \
|
||||
fprintf x; \
|
||||
} while (0)
|
||||
#else
|
||||
# define Assert(cond,msg)
|
||||
# define Assert(cond, msg)
|
||||
# define Trace(x)
|
||||
# define Tracev(x)
|
||||
# define Tracevv(x)
|
||||
# define Tracec(c,x)
|
||||
# define Tracecv(c,x)
|
||||
# define Tracec(c, x)
|
||||
# define Tracecv(c, x)
|
||||
#endif
|
||||
|
||||
static void flush_window(void);
|
||||
static void error(char *m);
|
||||
static void puts(const char *);
|
||||
|
||||
extern char *input_data; /* lives in head.S */
|
||||
|
||||
@ -96,10 +114,6 @@ static long bytes_out;
|
||||
static uch *output_data;
|
||||
static unsigned long output_ptr;
|
||||
|
||||
static void error(char *m);
|
||||
|
||||
static void puts(const char *);
|
||||
|
||||
/* the "heap" is put directly after the BSS ends, at end */
|
||||
|
||||
extern int _end;
|
||||
@ -110,8 +124,8 @@ static long free_mem_end_ptr;
|
||||
|
||||
/* decompressor info and error messages to serial console */
|
||||
|
||||
static inline void
|
||||
serout(const char *s, reg_scope_instances regi_ser)
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
static inline void serout(const char *s, reg_scope_instances regi_ser)
|
||||
{
|
||||
reg_ser_rs_stat_din rs;
|
||||
reg_ser_rw_dout dout = {.data = *s};
|
||||
@ -123,23 +137,47 @@ serout(const char *s, reg_scope_instances regi_ser)
|
||||
|
||||
REG_WR(ser, regi_ser, rw_dout, dout);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
puts(const char *s)
|
||||
static void puts(const char *s)
|
||||
{
|
||||
#ifndef CONFIG_ETRAX_DEBUG_PORT_NULL
|
||||
while (*s) {
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT0
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
serout(s, regi_ser0);
|
||||
#else
|
||||
while (!(*R_SERIAL0_STATUS & (1 << 5)))
|
||||
;
|
||||
*R_SERIAL0_TR_DATA = *s++;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT1
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
serout(s, regi_ser1);
|
||||
#else
|
||||
while (!(*R_SERIAL1_STATUS & (1 << 5)))
|
||||
;
|
||||
*R_SERIAL1_TR_DATA = *s++;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT2
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
serout(s, regi_ser2);
|
||||
#else
|
||||
while (!(*R_SERIAL2_STATUS & (1 << 5)))
|
||||
;
|
||||
*R_SERIAL2_TR_DATA = *s++;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT3
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
serout(s, regi_ser3);
|
||||
#else
|
||||
while (!(*R_SERIAL3_STATUS & (1 << 5)))
|
||||
;
|
||||
*R_SERIAL3_TR_DATA = *s++;
|
||||
#endif
|
||||
#endif
|
||||
*s++;
|
||||
}
|
||||
@ -147,8 +185,7 @@ puts(const char *s)
|
||||
#endif
|
||||
}
|
||||
|
||||
void*
|
||||
memset(void* s, int c, size_t n)
|
||||
void *memset(void *s, int c, size_t n)
|
||||
{
|
||||
int i;
|
||||
char *ss = (char*)s;
|
||||
@ -158,14 +195,13 @@ memset(void* s, int c, size_t n)
|
||||
return s;
|
||||
}
|
||||
|
||||
void*
|
||||
memcpy(void* __dest, __const void* __src,
|
||||
size_t __n)
|
||||
void *memcpy(void *__dest, __const void *__src, size_t __n)
|
||||
{
|
||||
int i;
|
||||
char *d = (char *)__dest, *s = (char *)__src;
|
||||
|
||||
for (i=0;i<__n;i++) d[i] = s[i];
|
||||
for (i = 0; i < __n; i++)
|
||||
d[i] = s[i];
|
||||
|
||||
return __dest;
|
||||
}
|
||||
@ -175,43 +211,42 @@ memcpy(void* __dest, __const void* __src,
|
||||
* (Used for the decompressed data only.)
|
||||
*/
|
||||
|
||||
static void
|
||||
flush_window()
|
||||
static void flush_window(void)
|
||||
{
|
||||
ulg c = crc; /* temporary variable */
|
||||
unsigned n;
|
||||
uch *in, *out, ch;
|
||||
ulg c = crc; /* temporary variable */
|
||||
unsigned n;
|
||||
uch *in, *out, ch;
|
||||
|
||||
in = window;
|
||||
out = &output_data[output_ptr];
|
||||
for (n = 0; n < outcnt; n++) {
|
||||
ch = *out++ = *in++;
|
||||
c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
|
||||
}
|
||||
crc = c;
|
||||
bytes_out += (ulg)outcnt;
|
||||
output_ptr += (ulg)outcnt;
|
||||
outcnt = 0;
|
||||
in = window;
|
||||
out = &output_data[output_ptr];
|
||||
for (n = 0; n < outcnt; n++) {
|
||||
ch = *out = *in;
|
||||
out++;
|
||||
in++;
|
||||
c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
|
||||
}
|
||||
crc = c;
|
||||
bytes_out += (ulg)outcnt;
|
||||
output_ptr += (ulg)outcnt;
|
||||
outcnt = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
error(char *x)
|
||||
static void error(char *x)
|
||||
{
|
||||
puts("\r\n\n");
|
||||
puts("\n\n");
|
||||
puts(x);
|
||||
puts("\r\n\n -- System halted\n");
|
||||
puts("\n\n -- System halted\n");
|
||||
|
||||
while(1); /* Halt */
|
||||
}
|
||||
|
||||
void
|
||||
setup_normal_output_buffer(void)
|
||||
void setup_normal_output_buffer(void)
|
||||
{
|
||||
output_data = (char *)KERNEL_LOAD_ADR;
|
||||
}
|
||||
|
||||
static inline void
|
||||
serial_setup(reg_scope_instances regi_ser)
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
static inline void serial_setup(reg_scope_instances regi_ser)
|
||||
{
|
||||
reg_ser_rw_xoff xoff;
|
||||
reg_ser_rw_tr_ctrl tr_ctrl;
|
||||
@ -252,12 +287,16 @@ serial_setup(reg_scope_instances regi_ser)
|
||||
REG_WR(ser, regi_ser, rw_rec_ctrl, rec_ctrl);
|
||||
REG_WR(ser, regi_ser, rw_rec_baud_div, rec_baud);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
decompress_kernel(void)
|
||||
void decompress_kernel(void)
|
||||
{
|
||||
char revision;
|
||||
char compile_rev;
|
||||
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
/* Need at least a CRISv32 to run. */
|
||||
compile_rev = 32;
|
||||
#if defined(CONFIG_ETRAX_DEBUG_PORT1) || \
|
||||
defined(CONFIG_ETRAX_DEBUG_PORT2) || \
|
||||
defined(CONFIG_ETRAX_DEBUG_PORT3)
|
||||
@ -277,6 +316,7 @@ decompress_kernel(void)
|
||||
hwprot = REG_RD(pinmux, regi_pinmux, rw_hwprot);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT0
|
||||
serial_setup(regi_ser0);
|
||||
#endif
|
||||
@ -300,19 +340,52 @@ decompress_kernel(void)
|
||||
|
||||
/* input_data is set in head.S */
|
||||
inbuf = input_data;
|
||||
#else /* CRISv10 */
|
||||
/* Need at least a crisv10 to run. */
|
||||
compile_rev = 10;
|
||||
|
||||
/* input_data is set in head.S */
|
||||
inbuf = input_data;
|
||||
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT0
|
||||
*R_SERIAL0_XOFF = 0;
|
||||
*R_SERIAL0_BAUD = 0x99;
|
||||
*R_SERIAL0_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT1
|
||||
*R_SERIAL1_XOFF = 0;
|
||||
*R_SERIAL1_BAUD = 0x99;
|
||||
*R_SERIAL1_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT2
|
||||
*R_GEN_CONFIG = 0x08;
|
||||
*R_SERIAL2_XOFF = 0;
|
||||
*R_SERIAL2_BAUD = 0x99;
|
||||
*R_SERIAL2_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#ifdef CONFIG_ETRAX_DEBUG_PORT3
|
||||
*R_GEN_CONFIG = 0x100;
|
||||
*R_SERIAL3_XOFF = 0;
|
||||
*R_SERIAL3_BAUD = 0x99;
|
||||
*R_SERIAL3_TR_CTRL = 0x40;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
setup_normal_output_buffer();
|
||||
|
||||
makecrc();
|
||||
|
||||
__asm__ volatile ("move $vr,%0" : "=rm" (revision));
|
||||
if (revision < 32)
|
||||
{
|
||||
puts("You need an ETRAX FS to run Linux 2.6/crisv32.\r\n");
|
||||
if (revision < compile_rev) {
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
puts("You need an ETRAX FS to run Linux 2.6/crisv32\n");
|
||||
#else
|
||||
puts("You need an ETRAX 100LX to run linux 2.6\n");
|
||||
#endif
|
||||
while(1);
|
||||
}
|
||||
|
||||
puts("Uncompressing Linux...\r\n");
|
||||
puts("Uncompressing Linux...\n");
|
||||
gunzip();
|
||||
puts("Done. Now booting the kernel.\r\n");
|
||||
puts("Done. Now booting the kernel\n");
|
||||
}
|
@ -2,16 +2,26 @@
|
||||
# Makefile for rescue (bootstrap) code
|
||||
#
|
||||
|
||||
ccflags-y += -O2 $(LINUXINCLUDE)
|
||||
# CC = gcc-cris -mlinux -march=v32 $(LINUXINCLUDE)
|
||||
# ccflags-$(CONFIG_ETRAX_ARCH_V32) += -I$(srctree)/include/asm/arch/mach/ \
|
||||
# -I$(srctree)/include/asm/arch
|
||||
# asflags-y += -I $(srctree)/include/asm/arch/mach/ -I $(srctree)/include/asm/arch
|
||||
# LD = gcc-cris -mlinux -march=v32 -nostdlib
|
||||
|
||||
asflags-y += $(LINUXINCLUDE)
|
||||
ldflags-y += -T $(srctree)/$(src)/rescue.lds
|
||||
ccflags-y += -O2 $(LINUXINCLUDE)
|
||||
arch-$(CONFIG_ETRAX_ARCH_V10) = v10
|
||||
arch-$(CONFIG_ETRAX_ARCH_V32) = v32
|
||||
|
||||
ldflags-y += -T $(srctree)/$(src)/rescue_$(arch-y).lds
|
||||
OBJCOPYFLAGS = -O binary --remove-section=.bss
|
||||
obj-$(CONFIG_ETRAX_AXISFLASHMAP) = head.o
|
||||
OBJECT := $(obj)/head.o
|
||||
obj-$(CONFIG_ETRAX_ARCH_V32) = $(obj)/head_v32.o
|
||||
obj-$(CONFIG_ETRAX_ARCH_V10) = $(obj)/head_v10.o
|
||||
OBJECTS := $(obj-y)
|
||||
|
||||
targets := rescue.o rescue.bin
|
||||
|
||||
$(obj)/rescue.o: $(OBJECT) FORCE
|
||||
$(obj)/rescue.o: $(OBJECTS) FORCE
|
||||
$(call if_changed,ld)
|
||||
|
||||
$(obj)/rescue.bin: $(obj)/rescue.o FORCE
|
||||
@ -26,6 +36,7 @@ $(obj)/testrescue.bin: $(obj)/testrescue.o
|
||||
dd if=testrescue_tmp.bin of=$(obj)/testrescue.bin bs=1 count=784
|
||||
rm tr.bin tmp2423 testrescue_tmp.bin
|
||||
|
||||
|
||||
$(obj)/kimagerescue.bin: $(obj)/kimagerescue.o
|
||||
$(OBJCOPY) $(OBJCOPYFLAGS) $(obj)/kimagerescue.o ktr.bin
|
||||
# Pad it to 784 bytes, that's what the rescue loader expects
|
||||
@ -33,3 +44,4 @@ $(obj)/kimagerescue.bin: $(obj)/kimagerescue.o
|
||||
cat ktr.bin tmp2423 >kimagerescue_tmp.bin
|
||||
dd if=kimagerescue_tmp.bin of=$(obj)/kimagerescue.bin bs=1 count=784
|
||||
rm ktr.bin tmp2423 kimagerescue_tmp.bin
|
||||
|
@ -155,7 +155,7 @@ no_newjump:
|
||||
#endif
|
||||
|
||||
;; We need to setup the bus registers before we start using the DRAM
|
||||
#include "../../lib/dram_init.S"
|
||||
#include "../../../arch-v10/lib/dram_init.S"
|
||||
|
||||
;; we now should go through the checksum-table and check the listed
|
||||
;; partitions for errors.
|
@ -281,7 +281,7 @@
|
||||
#define __NR_mbind 274
|
||||
#define __NR_get_mempolicy 275
|
||||
#define __NR_set_mempolicy 276
|
||||
#define __NR_mq_open 277
|
||||
#define __NR_mq_open 277
|
||||
#define __NR_mq_unlink (__NR_mq_open+1)
|
||||
#define __NR_mq_timedsend (__NR_mq_open+2)
|
||||
#define __NR_mq_timedreceive (__NR_mq_open+3)
|
||||
@ -331,10 +331,18 @@
|
||||
#define __NR_fallocate 324
|
||||
#define __NR_timerfd_settime 325
|
||||
#define __NR_timerfd_gettime 326
|
||||
#define __NR_signalfd4 327
|
||||
#define __NR_eventfd2 328
|
||||
#define __NR_epoll_create1 329
|
||||
#define __NR_dup3 330
|
||||
#define __NR_pipe2 331
|
||||
#define __NR_inotify_init1 332
|
||||
#define __NR_preadv 333
|
||||
#define __NR_pwritev 334
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define NR_syscalls 327
|
||||
#define NR_syscalls 335
|
||||
|
||||
#include <arch/unistd.h>
|
||||
|
||||
|
7
arch/ia64/include/asm/idle.h
Normal file
7
arch/ia64/include/asm/idle.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef _ASM_IA64_IDLE_H
|
||||
#define _ASM_IA64_IDLE_H
|
||||
|
||||
static inline void enter_idle(void) { }
|
||||
static inline void exit_idle(void) { }
|
||||
|
||||
#endif /* _ASM_IA64_IDLE_H */
|
@ -36,14 +36,9 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
|
||||
return !(ia64_psr(regs)->i);
|
||||
}
|
||||
|
||||
static inline void xen_do_IRQ(int irq, struct pt_regs *regs)
|
||||
static inline void handle_irq(int irq, struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs;
|
||||
old_regs = set_irq_regs(regs);
|
||||
irq_enter();
|
||||
__do_IRQ(irq);
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
#define irq_ctx_init(cpu) do { } while (0)
|
||||
|
||||
|
@ -54,8 +54,6 @@ END(startup_xen)
|
||||
|
||||
#define isBP p3 // are we the Bootstrap Processor?
|
||||
|
||||
.text
|
||||
|
||||
GLOBAL_ENTRY(xen_setup_hook)
|
||||
mov r8=XEN_PV_DOMAIN_ASM
|
||||
(isBP) movl r9=xen_domain_type;;
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include <asm/cpuinfo.h>
|
||||
#include <asm/pvr.h>
|
||||
|
||||
const static char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;
|
||||
const static char cpu_ver_string[] = CONFIG_XILINX_MICROBLAZE0_HW_VER;
|
||||
static const char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;
|
||||
static const char cpu_ver_string[] = CONFIG_XILINX_MICROBLAZE0_HW_VER;
|
||||
|
||||
#define err_printk(x) \
|
||||
early_printk("ERROR: Microblaze " x "- different for kernel and DTS\n");
|
||||
|
@ -131,7 +131,7 @@ sys_ipc(uint call, int first, int second, int third, void *ptr, long fifth)
|
||||
ret = sys_shmctl(first, second, (struct shmid_ds *) ptr);
|
||||
break;
|
||||
}
|
||||
return -EINVAL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage int sys_vfork(struct pt_regs *regs)
|
||||
|
@ -1411,13 +1411,12 @@ config PAGE_SIZE_4KB
|
||||
|
||||
config PAGE_SIZE_8KB
|
||||
bool "8kB"
|
||||
depends on EXPERIMENTAL && CPU_R8000
|
||||
depends on (EXPERIMENTAL && CPU_R8000) || CPU_CAVIUM_OCTEON
|
||||
help
|
||||
Using 8kB page size will result in higher performance kernel at
|
||||
the price of higher memory consumption. This option is available
|
||||
only on the R8000 processor. Not that at the time of this writing
|
||||
this option is still high experimental; there are also issues with
|
||||
compatibility of user applications.
|
||||
only on R8000 and cnMIPS processors. Note that you will need a
|
||||
suitable Linux distribution to support this.
|
||||
|
||||
config PAGE_SIZE_16KB
|
||||
bool "16kB"
|
||||
@ -1428,6 +1427,15 @@ config PAGE_SIZE_16KB
|
||||
all non-R3000 family processors. Note that you will need a suitable
|
||||
Linux distribution to support this.
|
||||
|
||||
config PAGE_SIZE_32KB
|
||||
bool "32kB"
|
||||
depends on CPU_CAVIUM_OCTEON
|
||||
help
|
||||
Using 32kB page size will result in higher performance kernel at
|
||||
the price of higher memory consumption. This option is available
|
||||
only on cnMIPS cores. Note that you will need a suitable Linux
|
||||
distribution to support this.
|
||||
|
||||
config PAGE_SIZE_64KB
|
||||
bool "64kB"
|
||||
depends on EXPERIMENTAL && !CPU_R3000 && !CPU_TX39XX
|
||||
@ -1958,10 +1966,6 @@ config SECCOMP
|
||||
|
||||
endmenu
|
||||
|
||||
config RWSEM_GENERIC_SPINLOCK
|
||||
bool
|
||||
default y
|
||||
|
||||
config LOCKDEP_SUPPORT
|
||||
bool
|
||||
default y
|
||||
|
@ -14,8 +14,6 @@
|
||||
|
||||
KBUILD_DEFCONFIG := ip22_defconfig
|
||||
|
||||
cflags-y := -ffunction-sections
|
||||
|
||||
#
|
||||
# Select the object file format to substitute into the linker script.
|
||||
#
|
||||
@ -50,6 +48,9 @@ ifneq ($(SUBARCH),$(ARCH))
|
||||
endif
|
||||
endif
|
||||
|
||||
cflags-y := -ffunction-sections
|
||||
cflags-y += $(call cc-option, -mno-check-zero-division)
|
||||
|
||||
ifdef CONFIG_32BIT
|
||||
ld-emul = $(32bit-emul)
|
||||
vmlinux-32 = vmlinux
|
||||
|
@ -44,7 +44,7 @@
|
||||
|
||||
extern int allow_au1k_wait; /* default off for CP0 Counter */
|
||||
|
||||
static cycle_t au1x_counter1_read(void)
|
||||
static cycle_t au1x_counter1_read(struct clocksource *cs)
|
||||
{
|
||||
return au_readl(SYS_RTCREAD);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ void octeon_init_cvmcount(void)
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static cycle_t octeon_cvmcount_read(void)
|
||||
static cycle_t octeon_cvmcount_read(struct clocksource *cs)
|
||||
{
|
||||
return read_c0_cvmcount();
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ static inline unsigned long __fls(unsigned long word)
|
||||
int num;
|
||||
|
||||
if (BITS_PER_LONG == 32 &&
|
||||
__builtin_constant_p(cpu_has_mips_r) && cpu_has_mips_r) {
|
||||
__builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) {
|
||||
__asm__(
|
||||
" .set push \n"
|
||||
" .set mips32 \n"
|
||||
@ -644,7 +644,7 @@ static inline int fls(int x)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (__builtin_constant_p(cpu_has_mips_r) && cpu_has_mips_r) {
|
||||
if (__builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) {
|
||||
__asm__("clz %0, %1" : "=r" (x) : "r" (x));
|
||||
|
||||
return 32 - x;
|
||||
|
@ -40,7 +40,7 @@ static inline
|
||||
__wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len,
|
||||
__wsum sum, int *err_ptr)
|
||||
{
|
||||
might_sleep();
|
||||
might_fault();
|
||||
return __csum_partial_copy_user((__force void *)src, dst,
|
||||
len, sum, err_ptr);
|
||||
}
|
||||
@ -53,7 +53,7 @@ static inline
|
||||
__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len,
|
||||
__wsum sum, int *err_ptr)
|
||||
{
|
||||
might_sleep();
|
||||
might_fault();
|
||||
if (access_ok(VERIFY_WRITE, dst, len))
|
||||
return __csum_partial_copy_user(src, (__force void *)dst,
|
||||
len, sum, err_ptr);
|
||||
|
@ -3,7 +3,6 @@
|
||||
/*
|
||||
* Architecture specific compatibility types
|
||||
*/
|
||||
#include <linux/seccomp.h>
|
||||
#include <linux/thread_info.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/page.h>
|
||||
|
@ -147,6 +147,15 @@
|
||||
#define cpu_has_mips_r (cpu_has_mips32r1 | cpu_has_mips32r2 | \
|
||||
cpu_has_mips64r1 | cpu_has_mips64r2)
|
||||
|
||||
/*
|
||||
* MIPS32, MIPS64, VR5500, IDT32332, IDT32334 and maybe a few other
|
||||
* pre-MIPS32/MIPS53 processors have CLO, CLZ. For 64-bit kernels
|
||||
* cpu_has_clo_clz also indicates the availability of DCLO and DCLZ.
|
||||
*/
|
||||
# ifndef cpu_has_clo_clz
|
||||
# define cpu_has_clo_clz cpu_has_mips_r
|
||||
# endif
|
||||
|
||||
#ifndef cpu_has_dsp
|
||||
#define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP)
|
||||
#endif
|
||||
|
@ -6,105 +6,63 @@
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#ifndef _ASM_DIV64_H
|
||||
#define _ASM_DIV64_H
|
||||
#ifndef __ASM_DIV64_H
|
||||
#define __ASM_DIV64_H
|
||||
|
||||
#include <asm-generic/div64.h>
|
||||
|
||||
#if BITS_PER_LONG == 64
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#if (_MIPS_SZLONG == 32)
|
||||
|
||||
#include <asm/compiler.h>
|
||||
|
||||
/*
|
||||
* No traps on overflows for any of these...
|
||||
*/
|
||||
|
||||
#define do_div64_32(res, high, low, base) ({ \
|
||||
unsigned long __quot32, __mod32; \
|
||||
unsigned long __cf, __tmp, __tmp2, __i; \
|
||||
\
|
||||
__asm__(".set push\n\t" \
|
||||
".set noat\n\t" \
|
||||
".set noreorder\n\t" \
|
||||
"move %2, $0\n\t" \
|
||||
"move %3, $0\n\t" \
|
||||
"b 1f\n\t" \
|
||||
" li %4, 0x21\n" \
|
||||
"0:\n\t" \
|
||||
"sll $1, %0, 0x1\n\t" \
|
||||
"srl %3, %0, 0x1f\n\t" \
|
||||
"or %0, $1, %5\n\t" \
|
||||
"sll %1, %1, 0x1\n\t" \
|
||||
"sll %2, %2, 0x1\n" \
|
||||
"1:\n\t" \
|
||||
"bnez %3, 2f\n\t" \
|
||||
" sltu %5, %0, %z6\n\t" \
|
||||
"bnez %5, 3f\n" \
|
||||
"2:\n\t" \
|
||||
" addiu %4, %4, -1\n\t" \
|
||||
"subu %0, %0, %z6\n\t" \
|
||||
"addiu %2, %2, 1\n" \
|
||||
"3:\n\t" \
|
||||
"bnez %4, 0b\n\t" \
|
||||
" srl %5, %1, 0x1f\n\t" \
|
||||
".set pop" \
|
||||
: "=&r" (__mod32), "=&r" (__tmp), \
|
||||
"=&r" (__quot32), "=&r" (__cf), \
|
||||
"=&r" (__i), "=&r" (__tmp2) \
|
||||
: "Jr" (base), "0" (high), "1" (low)); \
|
||||
\
|
||||
(res) = __quot32; \
|
||||
__mod32; })
|
||||
#define __div64_32(n, base) \
|
||||
({ \
|
||||
unsigned long __cf, __tmp, __tmp2, __i; \
|
||||
unsigned long __quot32, __mod32; \
|
||||
unsigned long __high, __low; \
|
||||
unsigned long long __n; \
|
||||
\
|
||||
__high = *__n >> 32; \
|
||||
__low = __n; \
|
||||
__asm__( \
|
||||
" .set push \n" \
|
||||
" .set noat \n" \
|
||||
" .set noreorder \n" \
|
||||
" move %2, $0 \n" \
|
||||
" move %3, $0 \n" \
|
||||
" b 1f \n" \
|
||||
" li %4, 0x21 \n" \
|
||||
"0: \n" \
|
||||
" sll $1, %0, 0x1 \n" \
|
||||
" srl %3, %0, 0x1f \n" \
|
||||
" or %0, $1, %5 \n" \
|
||||
" sll %1, %1, 0x1 \n" \
|
||||
" sll %2, %2, 0x1 \n" \
|
||||
"1: \n" \
|
||||
" bnez %3, 2f \n" \
|
||||
" sltu %5, %0, %z6 \n" \
|
||||
" bnez %5, 3f \n" \
|
||||
"2: \n" \
|
||||
" addiu %4, %4, -1 \n" \
|
||||
" subu %0, %0, %z6 \n" \
|
||||
" addiu %2, %2, 1 \n" \
|
||||
"3: \n" \
|
||||
" bnez %4, 0b\n\t" \
|
||||
" srl %5, %1, 0x1f\n\t" \
|
||||
" .set pop" \
|
||||
: "=&r" (__mod32), "=&r" (__tmp), \
|
||||
"=&r" (__quot32), "=&r" (__cf), \
|
||||
"=&r" (__i), "=&r" (__tmp2) \
|
||||
: "Jr" (base), "0" (__high), "1" (__low)); \
|
||||
\
|
||||
(__n) = __quot32; \
|
||||
__mod32; \
|
||||
})
|
||||
|
||||
#define do_div(n, base) ({ \
|
||||
unsigned long long __quot; \
|
||||
unsigned long __mod; \
|
||||
unsigned long long __div; \
|
||||
unsigned long __upper, __low, __high, __base; \
|
||||
\
|
||||
__div = (n); \
|
||||
__base = (base); \
|
||||
\
|
||||
__high = __div >> 32; \
|
||||
__low = __div; \
|
||||
__upper = __high; \
|
||||
\
|
||||
if (__high) \
|
||||
__asm__("divu $0, %z2, %z3" \
|
||||
: "=h" (__upper), "=l" (__high) \
|
||||
: "Jr" (__high), "Jr" (__base) \
|
||||
: GCC_REG_ACCUM); \
|
||||
\
|
||||
__mod = do_div64_32(__low, __upper, __low, __base); \
|
||||
\
|
||||
__quot = __high; \
|
||||
__quot = __quot << 32 | __low; \
|
||||
(n) = __quot; \
|
||||
__mod; })
|
||||
#endif /* BITS_PER_LONG == 64 */
|
||||
|
||||
#endif /* (_MIPS_SZLONG == 32) */
|
||||
|
||||
#if (_MIPS_SZLONG == 64)
|
||||
|
||||
/*
|
||||
* Hey, we're already 64-bit, no
|
||||
* need to play games..
|
||||
*/
|
||||
#define do_div(n, base) ({ \
|
||||
unsigned long __quot; \
|
||||
unsigned int __mod; \
|
||||
unsigned long __div; \
|
||||
unsigned int __base; \
|
||||
\
|
||||
__div = (n); \
|
||||
__base = (base); \
|
||||
\
|
||||
__mod = __div % __base; \
|
||||
__quot = __div / __base; \
|
||||
\
|
||||
(n) = __quot; \
|
||||
__mod; })
|
||||
|
||||
#endif /* (_MIPS_SZLONG == 64) */
|
||||
|
||||
#endif /* _ASM_DIV64_H */
|
||||
#endif /* __ASM_DIV64_H */
|
||||
|
@ -24,8 +24,13 @@ extern int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
|
||||
enum dma_data_direction direction);
|
||||
extern dma_addr_t dma_map_page(struct device *dev, struct page *page,
|
||||
unsigned long offset, size_t size, enum dma_data_direction direction);
|
||||
extern void dma_unmap_page(struct device *dev, dma_addr_t dma_address,
|
||||
size_t size, enum dma_data_direction direction);
|
||||
|
||||
static inline void dma_unmap_page(struct device *dev, dma_addr_t dma_address,
|
||||
size_t size, enum dma_data_direction direction)
|
||||
{
|
||||
dma_unmap_single(dev, dma_address, size, direction);
|
||||
}
|
||||
|
||||
extern void dma_unmap_sg(struct device *dev, struct scatterlist *sg,
|
||||
int nhwentries, enum dma_data_direction direction);
|
||||
extern void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
|
||||
|
@ -108,6 +108,9 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
|
||||
return __virt_to_fix(vaddr);
|
||||
}
|
||||
|
||||
#define kmap_get_fixmap_pte(vaddr) \
|
||||
pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr))
|
||||
|
||||
/*
|
||||
* Called from pgtable_init()
|
||||
*/
|
||||
|
@ -138,8 +138,9 @@ do { \
|
||||
__instruction_hazard(); \
|
||||
} while (0)
|
||||
|
||||
#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \
|
||||
defined(CONFIG_CPU_R5500) || defined(CONFIG_MACH_ALCHEMY)
|
||||
#elif defined(CONFIG_MACH_ALCHEMY) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \
|
||||
defined(CONFIG_CPU_LOONGSON2) || defined(CONFIG_CPU_R10000) || \
|
||||
defined(CONFIG_CPU_R5500)
|
||||
|
||||
/*
|
||||
* R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
|
||||
|
@ -30,8 +30,6 @@
|
||||
/* declarations for highmem.c */
|
||||
extern unsigned long highstart_pfn, highend_pfn;
|
||||
|
||||
extern pte_t *kmap_pte;
|
||||
extern pgprot_t kmap_prot;
|
||||
extern pte_t *pkmap_page_table;
|
||||
|
||||
/*
|
||||
@ -62,6 +60,10 @@ extern struct page *__kmap_atomic_to_page(void *ptr);
|
||||
|
||||
#define flush_cache_kmaps() flush_cache_all()
|
||||
|
||||
extern void kmap_init(void);
|
||||
|
||||
#define kmap_prot PAGE_KERNEL
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM_HIGHMEM_H */
|
||||
|
@ -715,7 +715,7 @@ enum soc_au1500_ints {
|
||||
#ifdef CONFIG_SOC_AU1100
|
||||
enum soc_au1100_ints {
|
||||
AU1100_FIRST_INT = MIPS_CPU_IRQ_BASE + 8,
|
||||
AU1100_UART0_INT,
|
||||
AU1100_UART0_INT = AU1100_FIRST_INT,
|
||||
AU1100_UART1_INT,
|
||||
AU1100_SD_INT,
|
||||
AU1100_UART3_INT,
|
||||
@ -902,8 +902,8 @@ enum soc_au1200_ints {
|
||||
AU1000_RTC_MATCH0_INT,
|
||||
AU1000_RTC_MATCH1_INT,
|
||||
AU1000_RTC_MATCH2_INT,
|
||||
|
||||
AU1200_NAND_INT = AU1200_FIRST_INT + 23,
|
||||
AU1200_GPIO_203,
|
||||
AU1200_NAND_INT,
|
||||
AU1200_GPIO_204,
|
||||
AU1200_GPIO_205,
|
||||
AU1200_GPIO_206,
|
||||
|
@ -46,20 +46,6 @@
|
||||
#define CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON 0
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/*
|
||||
* This will enable the device to be powered up when write() or read()
|
||||
* is called. If this is not defined, the driver will return -EBUSY.
|
||||
*/
|
||||
#define WAKE_ON_ACCESS 1
|
||||
|
||||
typedef struct {
|
||||
spinlock_t lock; /* Used to block on state transitions */
|
||||
au1xxx_power_dev_t *dev; /* Power Managers device structure */
|
||||
unsigned stopped; /* Used to signal device is stopped */
|
||||
} pm_state;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
u32 tx_dev_id, rx_dev_id, target_dev_id;
|
||||
u32 tx_chan, rx_chan;
|
||||
@ -72,9 +58,6 @@ typedef struct {
|
||||
#endif
|
||||
int irq;
|
||||
u32 regbase;
|
||||
#ifdef CONFIG_PM
|
||||
pm_state pm;
|
||||
#endif
|
||||
} _auide_hwif;
|
||||
|
||||
/******************************************************************************/
|
||||
|
59
arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h
Normal file
59
arch/mips/include/asm/mach-lemote/cpu-feature-overrides.h
Normal file
@ -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 */
|
@ -184,12 +184,19 @@
|
||||
#else
|
||||
|
||||
#define PM_4K 0x00000000
|
||||
#define PM_8K 0x00002000
|
||||
#define PM_16K 0x00006000
|
||||
#define PM_32K 0x0000e000
|
||||
#define PM_64K 0x0001e000
|
||||
#define PM_128K 0x0003e000
|
||||
#define PM_256K 0x0007e000
|
||||
#define PM_512K 0x000fe000
|
||||
#define PM_1M 0x001fe000
|
||||
#define PM_2M 0x003fe000
|
||||
#define PM_4M 0x007fe000
|
||||
#define PM_8M 0x00ffe000
|
||||
#define PM_16M 0x01ffe000
|
||||
#define PM_32M 0x03ffe000
|
||||
#define PM_64M 0x07ffe000
|
||||
#define PM_256M 0x1fffe000
|
||||
#define PM_1G 0x7fffe000
|
||||
@ -201,8 +208,12 @@
|
||||
*/
|
||||
#ifdef CONFIG_PAGE_SIZE_4KB
|
||||
#define PM_DEFAULT_MASK PM_4K
|
||||
#elif defined(CONFIG_PAGE_SIZE_8KB)
|
||||
#define PM_DEFAULT_MASK PM_8K
|
||||
#elif defined(CONFIG_PAGE_SIZE_16KB)
|
||||
#define PM_DEFAULT_MASK PM_16K
|
||||
#elif defined(CONFIG_PAGE_SIZE_32KB)
|
||||
#define PM_DEFAULT_MASK PM_32K
|
||||
#elif defined(CONFIG_PAGE_SIZE_64KB)
|
||||
#define PM_DEFAULT_MASK PM_64K
|
||||
#else
|
||||
@ -717,8 +728,8 @@ do { \
|
||||
".set\tmips64\n\t" \
|
||||
"dmfc0\t%M0, " #source "\n\t" \
|
||||
"dsll\t%L0, %M0, 32\n\t" \
|
||||
"dsrl\t%M0, %M0, 32\n\t" \
|
||||
"dsrl\t%L0, %L0, 32\n\t" \
|
||||
"dsra\t%M0, %M0, 32\n\t" \
|
||||
"dsra\t%L0, %L0, 32\n\t" \
|
||||
".set\tmips0" \
|
||||
: "=r" (__val)); \
|
||||
else \
|
||||
@ -726,8 +737,8 @@ do { \
|
||||
".set\tmips64\n\t" \
|
||||
"dmfc0\t%M0, " #source ", " #sel "\n\t" \
|
||||
"dsll\t%L0, %M0, 32\n\t" \
|
||||
"dsrl\t%M0, %M0, 32\n\t" \
|
||||
"dsrl\t%L0, %L0, 32\n\t" \
|
||||
"dsra\t%M0, %M0, 32\n\t" \
|
||||
"dsra\t%L0, %L0, 32\n\t" \
|
||||
".set\tmips0" \
|
||||
: "=r" (__val)); \
|
||||
local_irq_restore(__flags); \
|
||||
@ -1484,14 +1495,15 @@ static inline unsigned int \
|
||||
set_c0_##name(unsigned int set) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int new; \
|
||||
unsigned int omt; \
|
||||
unsigned long flags; \
|
||||
\
|
||||
local_irq_save(flags); \
|
||||
omt = __dmt(); \
|
||||
res = read_c0_##name(); \
|
||||
res |= set; \
|
||||
write_c0_##name(res); \
|
||||
new = res | set; \
|
||||
write_c0_##name(new); \
|
||||
__emt(omt); \
|
||||
local_irq_restore(flags); \
|
||||
\
|
||||
@ -1502,14 +1514,15 @@ static inline unsigned int \
|
||||
clear_c0_##name(unsigned int clear) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int new; \
|
||||
unsigned int omt; \
|
||||
unsigned long flags; \
|
||||
\
|
||||
local_irq_save(flags); \
|
||||
omt = __dmt(); \
|
||||
res = read_c0_##name(); \
|
||||
res &= ~clear; \
|
||||
write_c0_##name(res); \
|
||||
new = res & ~clear; \
|
||||
write_c0_##name(new); \
|
||||
__emt(omt); \
|
||||
local_irq_restore(flags); \
|
||||
\
|
||||
@ -1517,9 +1530,10 @@ clear_c0_##name(unsigned int clear) \
|
||||
} \
|
||||
\
|
||||
static inline unsigned int \
|
||||
change_c0_##name(unsigned int change, unsigned int new) \
|
||||
change_c0_##name(unsigned int change, unsigned int newbits) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int new; \
|
||||
unsigned int omt; \
|
||||
unsigned long flags; \
|
||||
\
|
||||
@ -1527,9 +1541,9 @@ change_c0_##name(unsigned int change, unsigned int new) \
|
||||
\
|
||||
omt = __dmt(); \
|
||||
res = read_c0_##name(); \
|
||||
res &= ~change; \
|
||||
res |= (new & change); \
|
||||
write_c0_##name(res); \
|
||||
new = res & ~change; \
|
||||
new |= (newbits & change); \
|
||||
write_c0_##name(new); \
|
||||
__emt(omt); \
|
||||
local_irq_restore(flags); \
|
||||
\
|
||||
|
@ -23,6 +23,9 @@
|
||||
#ifdef CONFIG_PAGE_SIZE_16KB
|
||||
#define PAGE_SHIFT 14
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_32KB
|
||||
#define PAGE_SHIFT 15
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_64KB
|
||||
#define PAGE_SHIFT 16
|
||||
#endif
|
||||
|
@ -83,6 +83,12 @@
|
||||
#define PMD_ORDER 0
|
||||
#define PTE_ORDER 0
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_32KB
|
||||
#define PGD_ORDER 0
|
||||
#define PUD_ORDER aieeee_attempt_to_allocate_pud
|
||||
#define PMD_ORDER 0
|
||||
#define PTE_ORDER 0
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_64KB
|
||||
#define PGD_ORDER 0
|
||||
#define PUD_ORDER aieeee_attempt_to_allocate_pud
|
||||
|
@ -359,11 +359,11 @@
|
||||
TO_NODE_UNCAC((nasid), LAUNCH_OFFSET(nasid, slice))
|
||||
#define LAUNCH_SIZE(nasid) KLD_LAUNCH(nasid)->size
|
||||
|
||||
#define NMI_OFFSET(nasid, slice) \
|
||||
#define SN_NMI_OFFSET(nasid, slice) \
|
||||
(KLD_NMI(nasid)->offset + \
|
||||
KLD_NMI(nasid)->stride * (slice))
|
||||
#define NMI_ADDR(nasid, slice) \
|
||||
TO_NODE_UNCAC((nasid), NMI_OFFSET(nasid, slice))
|
||||
TO_NODE_UNCAC((nasid), SN_NMI_OFFSET(nasid, slice))
|
||||
#define NMI_SIZE(nasid) KLD_NMI(nasid)->size
|
||||
|
||||
#define KLCONFIG_OFFSET(nasid) KLD_KLCONFIG(nasid)->offset
|
||||
|
@ -3,13 +3,13 @@
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Derived from IRIX <sys/SN/nmi.h>, Revision 1.5.
|
||||
*
|
||||
* Copyright (C) 1992 - 1997 Silicon Graphics, Inc.
|
||||
*/
|
||||
#ifndef __ASM_SN_NMI_H
|
||||
#define __ASM_SN_NMI_H
|
||||
|
||||
#ident "$Revision: 1.5 $"
|
||||
|
||||
#include <asm/sn/addrs.h>
|
||||
|
||||
/*
|
||||
|
@ -75,6 +75,9 @@ register struct thread_info *__current_thread_info __asm__("$28");
|
||||
#ifdef CONFIG_PAGE_SIZE_16KB
|
||||
#define THREAD_SIZE_ORDER (0)
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_32KB
|
||||
#define THREAD_SIZE_ORDER (0)
|
||||
#endif
|
||||
#ifdef CONFIG_PAGE_SIZE_64KB
|
||||
#define THREAD_SIZE_ORDER (0)
|
||||
#endif
|
||||
|
@ -57,7 +57,11 @@ extern int r4k_clockevent_init(void);
|
||||
|
||||
static inline int mips_clockevent_init(void)
|
||||
{
|
||||
#ifdef CONFIG_CEVT_R4K
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
extern int smtc_clockevent_init(void);
|
||||
|
||||
return smtc_clockevent_init();
|
||||
#elif defined(CONFIG_CEVT_R4K)
|
||||
return r4k_clockevent_init();
|
||||
#else
|
||||
return -ENXIO;
|
||||
|
@ -105,10 +105,20 @@
|
||||
#define __access_mask get_fs().seg
|
||||
|
||||
#define __access_ok(addr, size, mask) \
|
||||
(((signed long)((mask) & ((addr) | ((addr) + (size)) | __ua_size(size)))) == 0)
|
||||
({ \
|
||||
unsigned long __addr = (unsigned long) (addr); \
|
||||
unsigned long __size = size; \
|
||||
unsigned long __mask = mask; \
|
||||
unsigned long __ok; \
|
||||
\
|
||||
__chk_user_ptr(addr); \
|
||||
__ok = (signed long)(__mask & (__addr | (__addr + __size) | \
|
||||
__ua_size(__size))); \
|
||||
__ok == 0; \
|
||||
})
|
||||
|
||||
#define access_ok(type, addr, size) \
|
||||
likely(__access_ok((unsigned long)(addr), (size), __access_mask))
|
||||
likely(__access_ok((addr), (size), __access_mask))
|
||||
|
||||
/*
|
||||
* put_user: - Write a simple value into user space.
|
||||
@ -225,6 +235,7 @@ do { \
|
||||
({ \
|
||||
int __gu_err; \
|
||||
\
|
||||
__chk_user_ptr(ptr); \
|
||||
__get_user_common((x), size, ptr); \
|
||||
__gu_err; \
|
||||
})
|
||||
@ -234,6 +245,7 @@ do { \
|
||||
int __gu_err = -EFAULT; \
|
||||
const __typeof__(*(ptr)) __user * __gu_ptr = (ptr); \
|
||||
\
|
||||
might_fault(); \
|
||||
if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) \
|
||||
__get_user_common((x), size, __gu_ptr); \
|
||||
\
|
||||
@ -305,6 +317,7 @@ do { \
|
||||
__typeof__(*(ptr)) __pu_val; \
|
||||
int __pu_err = 0; \
|
||||
\
|
||||
__chk_user_ptr(ptr); \
|
||||
__pu_val = (x); \
|
||||
switch (size) { \
|
||||
case 1: __put_user_asm("sb", ptr); break; \
|
||||
@ -322,6 +335,7 @@ do { \
|
||||
__typeof__(*(ptr)) __pu_val = (x); \
|
||||
int __pu_err = -EFAULT; \
|
||||
\
|
||||
might_fault(); \
|
||||
if (likely(access_ok(VERIFY_WRITE, __pu_addr, size))) { \
|
||||
switch (size) { \
|
||||
case 1: __put_user_asm("sb", __pu_addr); break; \
|
||||
@ -696,10 +710,10 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
|
||||
const void *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
might_sleep(); \
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_to_user(__cu_to, __cu_from, __cu_len); \
|
||||
__cu_len; \
|
||||
})
|
||||
@ -752,13 +766,14 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
const void *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
might_sleep(); \
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
if (access_ok(VERIFY_WRITE, __cu_to, __cu_len)) \
|
||||
if (access_ok(VERIFY_WRITE, __cu_to, __cu_len)) { \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_to_user(__cu_to, __cu_from, \
|
||||
__cu_len); \
|
||||
} \
|
||||
__cu_len; \
|
||||
})
|
||||
|
||||
@ -831,10 +846,10 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
const void __user *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
might_sleep(); \
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \
|
||||
__cu_len); \
|
||||
__cu_len; \
|
||||
@ -862,17 +877,31 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
const void __user *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
might_sleep(); \
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
if (access_ok(VERIFY_READ, __cu_from, __cu_len)) \
|
||||
if (access_ok(VERIFY_READ, __cu_from, __cu_len)) { \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \
|
||||
__cu_len); \
|
||||
} \
|
||||
__cu_len; \
|
||||
})
|
||||
|
||||
#define __copy_in_user(to, from, n) __copy_from_user(to, from, n)
|
||||
#define __copy_in_user(to, from, n) \
|
||||
({ \
|
||||
void __user *__cu_to; \
|
||||
const void __user *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \
|
||||
__cu_len); \
|
||||
__cu_len; \
|
||||
})
|
||||
|
||||
#define copy_in_user(to, from, n) \
|
||||
({ \
|
||||
@ -880,14 +909,15 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
const void __user *__cu_from; \
|
||||
long __cu_len; \
|
||||
\
|
||||
might_sleep(); \
|
||||
__cu_to = (to); \
|
||||
__cu_from = (from); \
|
||||
__cu_len = (n); \
|
||||
if (likely(access_ok(VERIFY_READ, __cu_from, __cu_len) && \
|
||||
access_ok(VERIFY_WRITE, __cu_to, __cu_len))) \
|
||||
access_ok(VERIFY_WRITE, __cu_to, __cu_len))) { \
|
||||
might_fault(); \
|
||||
__cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \
|
||||
__cu_len); \
|
||||
} \
|
||||
__cu_len; \
|
||||
})
|
||||
|
||||
@ -907,7 +937,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
|
||||
{
|
||||
__kernel_size_t res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
"move\t$5, $0\n\t"
|
||||
@ -956,7 +986,7 @@ __strncpy_from_user(char *__to, const char __user *__from, long __len)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
"move\t$5, %2\n\t"
|
||||
@ -993,7 +1023,7 @@ strncpy_from_user(char *__to, const char __user *__from, long __len)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
"move\t$5, %2\n\t"
|
||||
@ -1012,7 +1042,7 @@ static inline long __strlen_user(const char __user *s)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
__MODULE_JAL(__strlen_user_nocheck_asm)
|
||||
@ -1042,7 +1072,7 @@ static inline long strlen_user(const char __user *s)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
__MODULE_JAL(__strlen_user_asm)
|
||||
@ -1059,7 +1089,7 @@ static inline long __strnlen_user(const char __user *s, long n)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
"move\t$5, %2\n\t"
|
||||
@ -1090,7 +1120,7 @@ static inline long strnlen_user(const char __user *s, long n)
|
||||
{
|
||||
long res;
|
||||
|
||||
might_sleep();
|
||||
might_fault();
|
||||
__asm__ __volatile__(
|
||||
"move\t$4, %1\n\t"
|
||||
"move\t$5, %2\n\t"
|
||||
|
@ -245,7 +245,7 @@ irqreturn_t c0_compare_interrupt(int irq, void *dev_id)
|
||||
}
|
||||
|
||||
|
||||
int __cpuinit mips_clockevent_init(void)
|
||||
int __cpuinit smtc_clockevent_init(void)
|
||||
{
|
||||
uint64_t mips_freq = mips_hpt_frequency;
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
@ -405,8 +405,8 @@ EXPORT(sysn32_call_table)
|
||||
PTR sys_eventfd
|
||||
PTR sys_fallocate
|
||||
PTR sys_timerfd_create
|
||||
PTR sys_timerfd_gettime /* 5285 */
|
||||
PTR sys_timerfd_settime
|
||||
PTR compat_sys_timerfd_gettime /* 5285 */
|
||||
PTR compat_sys_timerfd_settime
|
||||
PTR sys_signalfd4
|
||||
PTR sys_eventfd2
|
||||
PTR sys_epoll_create1
|
||||
|
@ -525,8 +525,8 @@ sys_call_table:
|
||||
PTR sys_eventfd
|
||||
PTR sys32_fallocate /* 4320 */
|
||||
PTR sys_timerfd_create
|
||||
PTR sys_timerfd_gettime
|
||||
PTR sys_timerfd_settime
|
||||
PTR compat_sys_timerfd_gettime
|
||||
PTR compat_sys_timerfd_settime
|
||||
PTR compat_sys_signalfd4
|
||||
PTR sys_eventfd2 /* 4325 */
|
||||
PTR sys_epoll_create1
|
||||
|
@ -482,19 +482,19 @@ fault:
|
||||
return;
|
||||
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
send_sig(SIGSEGV, current, 1);
|
||||
force_sig(SIGSEGV, current);
|
||||
|
||||
return;
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
send_sig(SIGBUS, current, 1);
|
||||
force_sig(SIGBUS, current);
|
||||
|
||||
return;
|
||||
|
||||
sigill:
|
||||
die_if_kernel("Unhandled kernel unaligned access or invalid instruction", regs);
|
||||
send_sig(SIGILL, current, 1);
|
||||
force_sig(SIGILL, current);
|
||||
}
|
||||
|
||||
asmlinkage void do_ade(struct pt_regs *regs)
|
||||
|
@ -19,6 +19,15 @@ static inline const char *msk2str(unsigned int mask)
|
||||
case PM_16K: return "16kb";
|
||||
case PM_64K: return "64kb";
|
||||
case PM_256K: return "256kb";
|
||||
#ifdef CONFIG_CPU_CAVIUM_OCTEON
|
||||
case PM_8K: return "8kb";
|
||||
case PM_32K: return "32kb";
|
||||
case PM_128K: return "128kb";
|
||||
case PM_512K: return "512kb";
|
||||
case PM_2M: return "2Mb";
|
||||
case PM_8M: return "8Mb";
|
||||
case PM_32M: return "32Mb";
|
||||
#endif
|
||||
#ifndef CONFIG_CPU_VR41XX
|
||||
case PM_1M: return "1Mb";
|
||||
case PM_4M: return "4Mb";
|
||||
|
@ -1041,7 +1041,7 @@ static void __cpuinit probe_pcache(void)
|
||||
|
||||
printk("Primary instruction cache %ldkB, %s, %s, linesize %d bytes.\n",
|
||||
icache_size >> 10,
|
||||
cpu_has_vtag_icache ? "VIVT" : "VIPT",
|
||||
c->icache.flags & MIPS_CACHE_VTAG ? "VIVT" : "VIPT",
|
||||
way_string[c->icache.ways], c->icache.linesz);
|
||||
|
||||
printk("Primary data cache %ldkB, %s, %s, %s, linesize %d bytes\n",
|
||||
|
@ -209,7 +209,7 @@ dma_addr_t dma_map_page(struct device *dev, struct page *page,
|
||||
unsigned long addr;
|
||||
|
||||
addr = (unsigned long) page_address(page) + offset;
|
||||
dma_cache_wback_inv(addr, size);
|
||||
__dma_sync(addr, size, direction);
|
||||
}
|
||||
|
||||
return plat_map_dma_mem_page(dev, page) + offset;
|
||||
@ -217,23 +217,6 @@ dma_addr_t dma_map_page(struct device *dev, struct page *page,
|
||||
|
||||
EXPORT_SYMBOL(dma_map_page);
|
||||
|
||||
void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
BUG_ON(direction == DMA_NONE);
|
||||
|
||||
if (!plat_device_is_coherent(dev) && direction != DMA_TO_DEVICE) {
|
||||
unsigned long addr;
|
||||
|
||||
addr = dma_addr_to_virt(dma_address);
|
||||
dma_cache_wback_inv(addr, size);
|
||||
}
|
||||
|
||||
plat_unmap_dma_mem(dev, dma_address);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dma_unmap_page);
|
||||
|
||||
void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
|
@ -1,7 +1,12 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
static pte_t *kmap_pte;
|
||||
|
||||
unsigned long highstart_pfn, highend_pfn;
|
||||
|
||||
void *__kmap(struct page *page)
|
||||
{
|
||||
void *addr;
|
||||
@ -14,6 +19,7 @@ void *__kmap(struct page *page)
|
||||
|
||||
return addr;
|
||||
}
|
||||
EXPORT_SYMBOL(__kmap);
|
||||
|
||||
void __kunmap(struct page *page)
|
||||
{
|
||||
@ -22,6 +28,7 @@ void __kunmap(struct page *page)
|
||||
return;
|
||||
kunmap_high(page);
|
||||
}
|
||||
EXPORT_SYMBOL(__kunmap);
|
||||
|
||||
/*
|
||||
* kmap_atomic/kunmap_atomic is significantly faster than kmap/kunmap because
|
||||
@ -48,11 +55,12 @@ void *__kmap_atomic(struct page *page, enum km_type type)
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
BUG_ON(!pte_none(*(kmap_pte - idx)));
|
||||
#endif
|
||||
set_pte(kmap_pte-idx, mk_pte(page, kmap_prot));
|
||||
set_pte(kmap_pte-idx, mk_pte(page, PAGE_KERNEL));
|
||||
local_flush_tlb_one((unsigned long)vaddr);
|
||||
|
||||
return (void*) vaddr;
|
||||
}
|
||||
EXPORT_SYMBOL(__kmap_atomic);
|
||||
|
||||
void __kunmap_atomic(void *kvaddr, enum km_type type)
|
||||
{
|
||||
@ -77,6 +85,7 @@ void __kunmap_atomic(void *kvaddr, enum km_type type)
|
||||
|
||||
pagefault_enable();
|
||||
}
|
||||
EXPORT_SYMBOL(__kunmap_atomic);
|
||||
|
||||
/*
|
||||
* This is the same as kmap_atomic() but can map memory that doesn't
|
||||
@ -92,7 +101,7 @@ void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
|
||||
debug_kmap_atomic(type);
|
||||
idx = type + KM_TYPE_NR*smp_processor_id();
|
||||
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
|
||||
set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot));
|
||||
set_pte(kmap_pte-idx, pfn_pte(pfn, PAGE_KERNEL));
|
||||
flush_tlb_one(vaddr);
|
||||
|
||||
return (void*) vaddr;
|
||||
@ -111,7 +120,11 @@ struct page *__kmap_atomic_to_page(void *ptr)
|
||||
return pte_page(*pte);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(__kmap);
|
||||
EXPORT_SYMBOL(__kunmap);
|
||||
EXPORT_SYMBOL(__kmap_atomic);
|
||||
EXPORT_SYMBOL(__kunmap_atomic);
|
||||
void __init kmap_init(void)
|
||||
{
|
||||
unsigned long kmap_vstart;
|
||||
|
||||
/* cache the first kmap pte */
|
||||
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
|
||||
kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
|
||||
}
|
||||
|
@ -104,14 +104,6 @@ unsigned long setup_zero_pages(void)
|
||||
return 1UL << order;
|
||||
}
|
||||
|
||||
/*
|
||||
* These are almost like kmap_atomic / kunmap_atmic except they take an
|
||||
* additional address argument as the hint.
|
||||
*/
|
||||
|
||||
#define kmap_get_fixmap_pte(vaddr) \
|
||||
pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr))
|
||||
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
static pte_t *kmap_coherent_pte;
|
||||
static void __init kmap_coherent_init(void)
|
||||
@ -264,24 +256,6 @@ void copy_from_user_page(struct vm_area_struct *vma,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
unsigned long highstart_pfn, highend_pfn;
|
||||
|
||||
pte_t *kmap_pte;
|
||||
pgprot_t kmap_prot;
|
||||
|
||||
static void __init kmap_init(void)
|
||||
{
|
||||
unsigned long kmap_vstart;
|
||||
|
||||
/* cache the first kmap pte */
|
||||
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
|
||||
kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
|
||||
|
||||
kmap_prot = PAGE_KERNEL;
|
||||
}
|
||||
#endif /* CONFIG_HIGHMEM */
|
||||
|
||||
void __init fixrange_init(unsigned long start, unsigned long end,
|
||||
pgd_t *pgd_base)
|
||||
{
|
||||
|
@ -29,7 +29,7 @@ extern unsigned long icache_way_size, dcache_way_size;
|
||||
|
||||
#include <asm/r4kcache.h>
|
||||
|
||||
int rm7k_tcache_enabled;
|
||||
static int rm7k_tcache_enabled;
|
||||
|
||||
/*
|
||||
* Writeback and invalidate the primary cache dcache before DMA.
|
||||
@ -121,7 +121,7 @@ static void rm7k_sc_disable(void)
|
||||
clear_c0_config(RM7K_CONF_SE);
|
||||
}
|
||||
|
||||
struct bcache_ops rm7k_sc_ops = {
|
||||
static struct bcache_ops rm7k_sc_ops = {
|
||||
.bc_enable = rm7k_sc_enable,
|
||||
.bc_disable = rm7k_sc_disable,
|
||||
.bc_wback_inv = rm7k_sc_wback_inv,
|
||||
|
@ -36,18 +36,6 @@ config PMC_MSP7120_FPGA
|
||||
|
||||
endchoice
|
||||
|
||||
menu "Options for PMC-Sierra MSP chipsets"
|
||||
depends on PMC_MSP
|
||||
|
||||
config PMC_MSP_EMBEDDED_ROOTFS
|
||||
bool "Root filesystem embedded in kernel image"
|
||||
select MTD
|
||||
select MTD_BLOCK
|
||||
select MTD_PMC_MSP_RAMROOT
|
||||
select MTD_RAM
|
||||
|
||||
endmenu
|
||||
|
||||
config HYPERTRANSPORT
|
||||
bool "Hypertransport Support for PMC-Sierra Yosemite"
|
||||
depends on PMC_YOSEMITE
|
||||
|
@ -40,12 +40,6 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mm.h>
|
||||
#ifdef CONFIG_CRAMFS
|
||||
#include <linux/cramfs_fs.h>
|
||||
#endif
|
||||
#ifdef CONFIG_SQUASHFS
|
||||
#include <linux/squashfs_fs.h>
|
||||
#endif
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bootinfo.h>
|
||||
@ -435,10 +429,6 @@ struct prom_pmemblock *__init prom_getmdesc(void)
|
||||
char *str;
|
||||
unsigned int memsize;
|
||||
unsigned int heaptop;
|
||||
#ifdef CONFIG_MTD_PMC_MSP_RAMROOT
|
||||
void *ramroot_start;
|
||||
unsigned long ramroot_size;
|
||||
#endif
|
||||
int i;
|
||||
|
||||
str = prom_getenv(memsz_env);
|
||||
@ -506,19 +496,7 @@ struct prom_pmemblock *__init prom_getmdesc(void)
|
||||
i++; /* 3 */
|
||||
mdesc[i].type = BOOT_MEM_RESERVED;
|
||||
mdesc[i].base = CPHYSADDR((u32)_text);
|
||||
#ifdef CONFIG_MTD_PMC_MSP_RAMROOT
|
||||
if (get_ramroot(&ramroot_start, &ramroot_size)) {
|
||||
/*
|
||||
* Rootfs in RAM -- follows kernel
|
||||
* Combine rootfs image with kernel block so a
|
||||
* page (4k) isn't wasted between memory blocks
|
||||
*/
|
||||
mdesc[i].size = CPHYSADDR(PAGE_ALIGN(
|
||||
(u32)ramroot_start + ramroot_size)) - mdesc[i].base;
|
||||
} else
|
||||
#endif
|
||||
mdesc[i].size = CPHYSADDR(PAGE_ALIGN(
|
||||
(u32)_end)) - mdesc[i].base;
|
||||
mdesc[i].size = CPHYSADDR(PAGE_ALIGN((u32)_end)) - mdesc[i].base;
|
||||
|
||||
/* Remainder of RAM -- under memsize */
|
||||
i++; /* 5 */
|
||||
@ -528,39 +506,3 @@ struct prom_pmemblock *__init prom_getmdesc(void)
|
||||
|
||||
return &mdesc[0];
|
||||
}
|
||||
|
||||
/* rootfs functions */
|
||||
#ifdef CONFIG_MTD_PMC_MSP_RAMROOT
|
||||
bool get_ramroot(void **start, unsigned long *size)
|
||||
{
|
||||
extern char _end[];
|
||||
|
||||
/* Check for start following the end of the kernel */
|
||||
void *check_start = (void *)_end;
|
||||
|
||||
/* Check for supported rootfs types */
|
||||
#ifdef CONFIG_CRAMFS
|
||||
if (*(__u32 *)check_start == CRAMFS_MAGIC) {
|
||||
/* Get CRAMFS size */
|
||||
*start = check_start;
|
||||
*size = PAGE_ALIGN(((struct cramfs_super *)
|
||||
check_start)->size);
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_SQUASHFS
|
||||
if (*((unsigned int *)check_start) == SQUASHFS_MAGIC) {
|
||||
/* Get SQUASHFS size */
|
||||
*start = check_start;
|
||||
*size = PAGE_ALIGN(((struct squashfs_super_block *)
|
||||
check_start)->bytes_used);
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL(get_ramroot);
|
||||
#endif
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#if defined(CONFIG_PMC_MSP7120_GW)
|
||||
#include <msp_regops.h>
|
||||
#include <msp_gpio.h>
|
||||
#define MSP_BOARD_RESET_GPIO 9
|
||||
#endif
|
||||
|
||||
@ -88,11 +87,8 @@ void msp7120_reset(void)
|
||||
* as GPIO char driver may not be enabled and it would look up
|
||||
* data inRAM!
|
||||
*/
|
||||
set_value_reg32(GPIO_CFG3_REG,
|
||||
basic_mode_mask(MSP_BOARD_RESET_GPIO),
|
||||
basic_mode(MSP_GPIO_OUTPUT, MSP_BOARD_RESET_GPIO));
|
||||
set_reg32(GPIO_DATA3_REG,
|
||||
basic_data_mask(MSP_BOARD_RESET_GPIO));
|
||||
set_value_reg32(GPIO_CFG3_REG, 0xf000, 0x8000);
|
||||
set_reg32(GPIO_DATA3_REG, 8);
|
||||
|
||||
/*
|
||||
* In case GPIO9 doesn't reset the board (jumper configurable!)
|
||||
|
@ -81,10 +81,7 @@ void __init plat_time_init(void)
|
||||
mips_hpt_frequency = cpu_rate/2;
|
||||
}
|
||||
|
||||
void __init plat_timer_setup(struct irqaction *irq)
|
||||
unsigned int __init get_c0_compare_int(void)
|
||||
{
|
||||
#ifdef CONFIG_IRQ_MSP_CIC
|
||||
/* we are using the vpe0 counter for timer interrupts */
|
||||
setup_irq(MSP_INT_VPE0_TIMER, irq);
|
||||
#endif
|
||||
return MSP_INT_VPE0_TIMER;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/tlbdebug.h>
|
||||
|
||||
int ip32_be_handler(struct pt_regs *regs, int is_fixup)
|
||||
static int ip32_be_handler(struct pt_regs *regs, int is_fixup)
|
||||
{
|
||||
int data = regs->cp0_cause & 4;
|
||||
|
||||
|
@ -112,13 +112,13 @@ static void inline flush_mace_bus(void)
|
||||
extern irqreturn_t crime_memerr_intr(int irq, void *dev_id);
|
||||
extern irqreturn_t crime_cpuerr_intr(int irq, void *dev_id);
|
||||
|
||||
struct irqaction memerr_irq = {
|
||||
static struct irqaction memerr_irq = {
|
||||
.handler = crime_memerr_intr,
|
||||
.flags = IRQF_DISABLED,
|
||||
.name = "CRIME memory error",
|
||||
};
|
||||
|
||||
struct irqaction cpuerr_irq = {
|
||||
static struct irqaction cpuerr_irq = {
|
||||
.handler = crime_cpuerr_intr,
|
||||
.flags = IRQF_DISABLED,
|
||||
.name = "CRIME CPU error",
|
||||
|
@ -113,7 +113,6 @@ static void bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
{
|
||||
int i = 0, old_cpu, cpu, int_on, k;
|
||||
u64 cur_ints;
|
||||
struct irq_desc *desc = irq_desc + irq;
|
||||
unsigned long flags;
|
||||
unsigned int irq_dirty;
|
||||
|
||||
@ -127,8 +126,7 @@ static void bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
cpu = cpu_logical_map(i);
|
||||
|
||||
/* Protect against other affinity changers and IMR manipulation */
|
||||
spin_lock_irqsave(&desc->lock, flags);
|
||||
spin_lock(&bcm1480_imr_lock);
|
||||
spin_lock_irqsave(&bcm1480_imr_lock, flags);
|
||||
|
||||
/* Swizzle each CPU's IMR (but leave the IP selection alone) */
|
||||
old_cpu = bcm1480_irq_owner[irq];
|
||||
@ -153,8 +151,7 @@ static void bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
|
||||
}
|
||||
}
|
||||
spin_unlock(&bcm1480_imr_lock);
|
||||
spin_unlock_irqrestore(&desc->lock, flags);
|
||||
spin_unlock_irqrestore(&bcm1480_imr_lock, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -107,7 +107,6 @@ static void sb1250_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
{
|
||||
int i = 0, old_cpu, cpu, int_on;
|
||||
u64 cur_ints;
|
||||
struct irq_desc *desc = irq_desc + irq;
|
||||
unsigned long flags;
|
||||
|
||||
i = cpumask_first(mask);
|
||||
@ -121,8 +120,7 @@ static void sb1250_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
cpu = cpu_logical_map(i);
|
||||
|
||||
/* Protect against other affinity changers and IMR manipulation */
|
||||
spin_lock_irqsave(&desc->lock, flags);
|
||||
spin_lock(&sb1250_imr_lock);
|
||||
spin_lock_irqsave(&sb1250_imr_lock, flags);
|
||||
|
||||
/* Swizzle each CPU's IMR (but leave the IP selection alone) */
|
||||
old_cpu = sb1250_irq_owner[irq];
|
||||
@ -144,8 +142,7 @@ static void sb1250_set_affinity(unsigned int irq, const struct cpumask *mask)
|
||||
____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) +
|
||||
R_IMR_INTERRUPT_MASK));
|
||||
}
|
||||
spin_unlock(&sb1250_imr_lock);
|
||||
spin_unlock_irqrestore(&desc->lock, flags);
|
||||
spin_unlock_irqrestore(&sb1250_imr_lock, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user