mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
Merge commit 'v2.6.28-rc6' into irq/urgent
This commit is contained in:
commit
9f14416442
@ -42,14 +42,8 @@ IRQ.txt
|
||||
- description of what an IRQ is.
|
||||
ManagementStyle
|
||||
- how to (attempt to) manage kernel hackers.
|
||||
MSI-HOWTO.txt
|
||||
- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
|
||||
RCU/
|
||||
- directory with info on RCU (read-copy update).
|
||||
README.DAC960
|
||||
- info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
|
||||
README.cycladesZ
|
||||
- info on Cyclades-Z firmware loading.
|
||||
SAK.txt
|
||||
- info on Secure Attention Keys.
|
||||
SM501.txt
|
||||
@ -86,20 +80,16 @@ blackfin/
|
||||
- directory with documentation for the Blackfin arch.
|
||||
block/
|
||||
- info on the Block I/O (BIO) layer.
|
||||
blockdev/
|
||||
- info on block devices & drivers
|
||||
cachetlb.txt
|
||||
- describes the cache/TLB flushing interfaces Linux uses.
|
||||
cciss.txt
|
||||
- info, major/minor #'s for Compaq's SMART Array Controllers.
|
||||
cdrom/
|
||||
- directory with information on the CD-ROM drivers that Linux has.
|
||||
computone.txt
|
||||
- info on Computone Intelliport II/Plus Multiport Serial Driver.
|
||||
connector/
|
||||
- docs on the netlink based userspace<->kernel space communication mod.
|
||||
console/
|
||||
- documentation on Linux console drivers.
|
||||
cpqarray.txt
|
||||
- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
|
||||
cpu-freq/
|
||||
- info on CPU frequency and voltage scaling.
|
||||
cpu-hotplug.txt
|
||||
@ -126,8 +116,6 @@ device-mapper/
|
||||
- directory with info on Device Mapper.
|
||||
devices.txt
|
||||
- plain ASCII listing of all the nodes in /dev/ with major minor #'s.
|
||||
digiepca.txt
|
||||
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
||||
dontdiff
|
||||
- file containing a list of files that should never be diff'ed.
|
||||
driver-model/
|
||||
@ -152,14 +140,10 @@ filesystems/
|
||||
- info on the vfs and the various filesystems that Linux supports.
|
||||
firmware_class/
|
||||
- request_firmware() hotplug interface info.
|
||||
floppy.txt
|
||||
- notes and driver options for the floppy disk driver.
|
||||
frv/
|
||||
- Fujitsu FR-V Linux documentation.
|
||||
gpio.txt
|
||||
- overview of GPIO (General Purpose Input/Output) access conventions.
|
||||
hayes-esp.txt
|
||||
- info on using the Hayes ESP serial driver.
|
||||
highuid.txt
|
||||
- notes on the change from 16 bit to 32 bit user/group IDs.
|
||||
timers/
|
||||
@ -186,8 +170,6 @@ io_ordering.txt
|
||||
- info on ordering I/O writes to memory-mapped addresses.
|
||||
ioctl/
|
||||
- directory with documents describing various IOCTL calls.
|
||||
ioctl-number.txt
|
||||
- how to implement and register device/driver ioctl calls.
|
||||
iostats.txt
|
||||
- info on I/O statistics Linux kernel provides.
|
||||
irqflags-tracing.txt
|
||||
@ -250,14 +232,10 @@ mips/
|
||||
- directory with info about Linux on MIPS architecture.
|
||||
mono.txt
|
||||
- how to execute Mono-based .NET binaries with the help of BINFMT_MISC.
|
||||
moxa-smartio
|
||||
- file with info on installing/using Moxa multiport serial driver.
|
||||
mutex-design.txt
|
||||
- info on the generic mutex subsystem.
|
||||
namespaces/
|
||||
- directory with various information about namespaces
|
||||
nbd.txt
|
||||
- info on a TCP implementation of a network block device.
|
||||
netlabel/
|
||||
- directory with information on the NetLabel subsystem.
|
||||
networking/
|
||||
@ -270,8 +248,6 @@ numastat.txt
|
||||
- info on how to read Numa policy hit/miss statistics in sysfs.
|
||||
oops-tracing.txt
|
||||
- how to decode those nasty internal kernel error dump messages.
|
||||
paride.txt
|
||||
- information about the parallel port IDE subsystem.
|
||||
parisc/
|
||||
- directory with info on using Linux on PA-RISC architecture.
|
||||
parport.txt
|
||||
@ -290,20 +266,16 @@ powerpc/
|
||||
- directory with info on using Linux with the PowerPC.
|
||||
preempt-locking.txt
|
||||
- info on locking under a preemptive kernel.
|
||||
printk-formats.txt
|
||||
- how to get printk format specifiers right
|
||||
prio_tree.txt
|
||||
- info on radix-priority-search-tree use for indexing vmas.
|
||||
ramdisk.txt
|
||||
- short guide on how to set up and use the RAM disk.
|
||||
rbtree.txt
|
||||
- info on what red-black trees are and what they are for.
|
||||
riscom8.txt
|
||||
- notes on using the RISCom/8 multi-port serial driver.
|
||||
robust-futex-ABI.txt
|
||||
- documentation of the robust futex ABI.
|
||||
robust-futexes.txt
|
||||
- a description of what robust futexes are.
|
||||
rocket.txt
|
||||
- info on the Comtrol RocketPort multiport serial driver.
|
||||
rt-mutex-design.txt
|
||||
- description of the RealTime mutex implementation design.
|
||||
rt-mutex.txt
|
||||
@ -332,8 +304,6 @@ sparc/
|
||||
- directory with info on using Linux on Sparc architecture.
|
||||
sparse.txt
|
||||
- info on how to obtain and use the sparse tool for typechecking.
|
||||
specialix.txt
|
||||
- info on hardware/driver for specialix IO8+ multiport serial card.
|
||||
spi/
|
||||
- overview of Linux kernel Serial Peripheral Interface (SPI) support.
|
||||
spinlocks.txt
|
||||
@ -342,14 +312,10 @@ stable_api_nonsense.txt
|
||||
- info on why the kernel does not have a stable in-kernel api or abi.
|
||||
stable_kernel_rules.txt
|
||||
- rules and procedures for the -stable kernel releases.
|
||||
stallion.txt
|
||||
- info on using the Stallion multiport serial driver.
|
||||
svga.txt
|
||||
- short guide on selecting video modes at boot via VGA BIOS.
|
||||
sysfs-rules.txt
|
||||
- How not to use sysfs.
|
||||
sx.txt
|
||||
- info on the Specialix SX/SI multiport serial driver.
|
||||
sysctl/
|
||||
- directory with info on the /proc/sys/* files.
|
||||
sysrq.txt
|
||||
@ -358,8 +324,6 @@ telephony/
|
||||
- directory with info on telephony (e.g. voice over IP) support.
|
||||
time_interpolators.txt
|
||||
- info on time interpolators.
|
||||
tty.txt
|
||||
- guide to the locking policies of the tty layer.
|
||||
uml/
|
||||
- directory with information about User Mode Linux.
|
||||
unicode.txt
|
||||
|
88
Documentation/ABI/testing/sysfs-c2port
Normal file
88
Documentation/ABI/testing/sysfs-c2port
Normal file
@ -0,0 +1,88 @@
|
||||
What: /sys/class/c2port/
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/ directory will contain files and
|
||||
directories that will provide a unified interface to
|
||||
the C2 port interface.
|
||||
|
||||
What: /sys/class/c2port/c2portX
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/ directory is related to X-th
|
||||
C2 port into the system. Each directory will contain files to
|
||||
manage and control its C2 port.
|
||||
|
||||
What: /sys/class/c2port/c2portX/access
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/access file enable the access
|
||||
to the C2 port from the system. No commands can be sent
|
||||
till this entry is set to 0.
|
||||
|
||||
What: /sys/class/c2port/c2portX/dev_id
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/dev_id file show the device ID
|
||||
of the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_access
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_access file enable the
|
||||
access to the on-board flash of the connected micro.
|
||||
No commands can be sent till this entry is set to 0.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_block_size
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_block_size file show
|
||||
the on-board flash block size of the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_blocks_num
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_blocks_num file show
|
||||
the on-board flash blocks number of the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_data
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_data file export
|
||||
the content of the on-board flash of the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_erase
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_erase file execute
|
||||
the "erase" command on the on-board flash of the connected
|
||||
micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/flash_erase
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/flash_erase file show the
|
||||
on-board flash size of the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/reset
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/reset file execute a "reset"
|
||||
command on the connected micro.
|
||||
|
||||
What: /sys/class/c2port/c2portX/rev_id
|
||||
Date: October 2008
|
||||
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||
Description:
|
||||
The /sys/class/c2port/c2portX/rev_id file show the revision ID
|
||||
of the connected micro.
|
@ -89,7 +89,7 @@ Description:
|
||||
|
||||
error - an interrupt that can't be accounted for above.
|
||||
|
||||
invalid: it's either a wakeup GPE or a GPE/Fixed Event that
|
||||
invalid: it's either a GPE or a Fixed Event that
|
||||
doesn't have an event handler.
|
||||
|
||||
disable: the GPE/Fixed Event is valid but disabled.
|
||||
@ -117,30 +117,30 @@ Description:
|
||||
and other user space applications so that the machine won't shutdown
|
||||
when pressing the power button.
|
||||
# cat ff_pwr_btn
|
||||
0
|
||||
0 enabled
|
||||
# press the power button for 3 times;
|
||||
# cat ff_pwr_btn
|
||||
3
|
||||
3 enabled
|
||||
# echo disable > ff_pwr_btn
|
||||
# cat ff_pwr_btn
|
||||
disable
|
||||
3 disabled
|
||||
# press the power button for 3 times;
|
||||
# cat ff_pwr_btn
|
||||
disable
|
||||
3 disabled
|
||||
# echo enable > ff_pwr_btn
|
||||
# cat ff_pwr_btn
|
||||
4
|
||||
4 enabled
|
||||
/*
|
||||
* this is because the status bit is set even if the enable bit is cleared,
|
||||
* and it triggers an ACPI fixed event when the enable bit is set again
|
||||
*/
|
||||
# press the power button for 3 times;
|
||||
# cat ff_pwr_btn
|
||||
7
|
||||
7 enabled
|
||||
# echo disable > ff_pwr_btn
|
||||
# press the power button for 3 times;
|
||||
# echo clear > ff_pwr_btn /* clear the status bit */
|
||||
# echo disable > ff_pwr_btn
|
||||
# cat ff_pwr_btn
|
||||
7
|
||||
7 enabled
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
MSI-HOWTO.txt
|
||||
- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
|
||||
PCI-DMA-mapping.txt
|
||||
- info for PCI drivers using DMA portably across all platforms
|
||||
PCIEBUS-HOWTO.txt
|
||||
|
148
Documentation/acpi/debug.txt
Normal file
148
Documentation/acpi/debug.txt
Normal file
@ -0,0 +1,148 @@
|
||||
ACPI Debug Output
|
||||
|
||||
|
||||
The ACPI CA, the Linux ACPI core, and some ACPI drivers can generate debug
|
||||
output. This document describes how to use this facility.
|
||||
|
||||
Compile-time configuration
|
||||
--------------------------
|
||||
|
||||
ACPI debug output is globally enabled by CONFIG_ACPI_DEBUG. If this config
|
||||
option is turned off, the debug messages are not even built into the
|
||||
kernel.
|
||||
|
||||
Boot- and run-time configuration
|
||||
--------------------------------
|
||||
|
||||
When CONFIG_ACPI_DEBUG=y, you can select the component and level of messages
|
||||
you're interested in. At boot-time, use the acpi.debug_layer and
|
||||
acpi.debug_level kernel command line options. After boot, you can use the
|
||||
debug_layer and debug_level files in /sys/module/acpi/parameters/ to control
|
||||
the debug messages.
|
||||
|
||||
debug_layer (component)
|
||||
-----------------------
|
||||
|
||||
The "debug_layer" is a mask that selects components of interest, e.g., a
|
||||
specific driver or part of the ACPI interpreter. To build the debug_layer
|
||||
bitmask, look for the "#define _COMPONENT" in an ACPI source file.
|
||||
|
||||
You can set the debug_layer mask at boot-time using the acpi.debug_layer
|
||||
command line argument, and you can change it after boot by writing values
|
||||
to /sys/module/acpi/parameters/debug_layer.
|
||||
|
||||
The possible components are defined in include/acpi/acoutput.h and
|
||||
include/acpi/acpi_drivers.h. Reading /sys/module/acpi/parameters/debug_layer
|
||||
shows the supported mask values, currently these:
|
||||
|
||||
ACPI_UTILITIES 0x00000001
|
||||
ACPI_HARDWARE 0x00000002
|
||||
ACPI_EVENTS 0x00000004
|
||||
ACPI_TABLES 0x00000008
|
||||
ACPI_NAMESPACE 0x00000010
|
||||
ACPI_PARSER 0x00000020
|
||||
ACPI_DISPATCHER 0x00000040
|
||||
ACPI_EXECUTER 0x00000080
|
||||
ACPI_RESOURCES 0x00000100
|
||||
ACPI_CA_DEBUGGER 0x00000200
|
||||
ACPI_OS_SERVICES 0x00000400
|
||||
ACPI_CA_DISASSEMBLER 0x00000800
|
||||
ACPI_COMPILER 0x00001000
|
||||
ACPI_TOOLS 0x00002000
|
||||
ACPI_BUS_COMPONENT 0x00010000
|
||||
ACPI_AC_COMPONENT 0x00020000
|
||||
ACPI_BATTERY_COMPONENT 0x00040000
|
||||
ACPI_BUTTON_COMPONENT 0x00080000
|
||||
ACPI_SBS_COMPONENT 0x00100000
|
||||
ACPI_FAN_COMPONENT 0x00200000
|
||||
ACPI_PCI_COMPONENT 0x00400000
|
||||
ACPI_POWER_COMPONENT 0x00800000
|
||||
ACPI_CONTAINER_COMPONENT 0x01000000
|
||||
ACPI_SYSTEM_COMPONENT 0x02000000
|
||||
ACPI_THERMAL_COMPONENT 0x04000000
|
||||
ACPI_MEMORY_DEVICE_COMPONENT 0x08000000
|
||||
ACPI_VIDEO_COMPONENT 0x10000000
|
||||
ACPI_PROCESSOR_COMPONENT 0x20000000
|
||||
|
||||
debug_level
|
||||
-----------
|
||||
|
||||
The "debug_level" is a mask that selects different types of messages, e.g.,
|
||||
those related to initialization, method execution, informational messages, etc.
|
||||
To build debug_level, look at the level specified in an ACPI_DEBUG_PRINT()
|
||||
statement.
|
||||
|
||||
The ACPI interpreter uses several different levels, but the Linux
|
||||
ACPI core and ACPI drivers generally only use ACPI_LV_INFO.
|
||||
|
||||
You can set the debug_level mask at boot-time using the acpi.debug_level
|
||||
command line argument, and you can change it after boot by writing values
|
||||
to /sys/module/acpi/parameters/debug_level.
|
||||
|
||||
The possible levels are defined in include/acpi/acoutput.h. Reading
|
||||
/sys/module/acpi/parameters/debug_level shows the supported mask values,
|
||||
currently these:
|
||||
|
||||
ACPI_LV_INIT 0x00000001
|
||||
ACPI_LV_DEBUG_OBJECT 0x00000002
|
||||
ACPI_LV_INFO 0x00000004
|
||||
ACPI_LV_INIT_NAMES 0x00000020
|
||||
ACPI_LV_PARSE 0x00000040
|
||||
ACPI_LV_LOAD 0x00000080
|
||||
ACPI_LV_DISPATCH 0x00000100
|
||||
ACPI_LV_EXEC 0x00000200
|
||||
ACPI_LV_NAMES 0x00000400
|
||||
ACPI_LV_OPREGION 0x00000800
|
||||
ACPI_LV_BFIELD 0x00001000
|
||||
ACPI_LV_TABLES 0x00002000
|
||||
ACPI_LV_VALUES 0x00004000
|
||||
ACPI_LV_OBJECTS 0x00008000
|
||||
ACPI_LV_RESOURCES 0x00010000
|
||||
ACPI_LV_USER_REQUESTS 0x00020000
|
||||
ACPI_LV_PACKAGE 0x00040000
|
||||
ACPI_LV_ALLOCATIONS 0x00100000
|
||||
ACPI_LV_FUNCTIONS 0x00200000
|
||||
ACPI_LV_OPTIMIZATIONS 0x00400000
|
||||
ACPI_LV_MUTEX 0x01000000
|
||||
ACPI_LV_THREADS 0x02000000
|
||||
ACPI_LV_IO 0x04000000
|
||||
ACPI_LV_INTERRUPTS 0x08000000
|
||||
ACPI_LV_AML_DISASSEMBLE 0x10000000
|
||||
ACPI_LV_VERBOSE_INFO 0x20000000
|
||||
ACPI_LV_FULL_TABLES 0x40000000
|
||||
ACPI_LV_EVENTS 0x80000000
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
For example, drivers/acpi/bus.c contains this:
|
||||
|
||||
#define _COMPONENT ACPI_BUS_COMPONENT
|
||||
...
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device insertion detected\n"));
|
||||
|
||||
To turn on this message, set the ACPI_BUS_COMPONENT bit in acpi.debug_layer
|
||||
and the ACPI_LV_INFO bit in acpi.debug_level. (The ACPI_DEBUG_PRINT
|
||||
statement uses ACPI_DB_INFO, which is macro based on the ACPI_LV_INFO
|
||||
definition.)
|
||||
|
||||
Enable all AML "Debug" output (stores to the Debug object while interpreting
|
||||
AML) during boot:
|
||||
|
||||
acpi.debug_layer=0xffffffff acpi.debug_level=0x2
|
||||
|
||||
Enable PCI and PCI interrupt routing debug messages:
|
||||
|
||||
acpi.debug_layer=0x400000 acpi.debug_level=0x4
|
||||
|
||||
Enable all ACPI hardware-related messages:
|
||||
|
||||
acpi.debug_layer=0x2 acpi.debug_level=0xffffffff
|
||||
|
||||
Enable all ACPI_DB_INFO messages after boot:
|
||||
|
||||
# echo 0x4 > /sys/module/acpi/parameters/debug_level
|
||||
|
||||
Show all valid component values:
|
||||
|
||||
# cat /sys/module/acpi/parameters/debug_layer
|
16
Documentation/blockdev/00-INDEX
Normal file
16
Documentation/blockdev/00-INDEX
Normal file
@ -0,0 +1,16 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
README.DAC960
|
||||
- info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
|
||||
cciss.txt
|
||||
- info, major/minor #'s for Compaq's SMART Array Controllers.
|
||||
cpqarray.txt
|
||||
- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
|
||||
floppy.txt
|
||||
- notes and driver options for the floppy disk driver.
|
||||
nbd.txt
|
||||
- info on a TCP implementation of a network block device.
|
||||
paride.txt
|
||||
- information about the parallel port IDE subsystem.
|
||||
ramdisk.txt
|
||||
- short guide on how to set up and use the RAM disk.
|
90
Documentation/c2port.txt
Normal file
90
Documentation/c2port.txt
Normal file
@ -0,0 +1,90 @@
|
||||
C2 port support
|
||||
---------------
|
||||
|
||||
(C) Copyright 2007 Rodolfo Giometti <giometti@enneenne.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This driver implements the support for Linux of Silicon Labs (Silabs)
|
||||
C2 Interface used for in-system programming of micro controllers.
|
||||
|
||||
By using this driver you can reprogram the in-system flash without EC2
|
||||
or EC3 debug adapter. This solution is also useful in those systems
|
||||
where the micro controller is connected via special GPIOs pins.
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
The C2 Interface main references are at (http://www.silabs.com)
|
||||
Silicon Laboratories site], see:
|
||||
|
||||
- AN127: FLASH Programming via the C2 Interface at
|
||||
http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Small_Form_Factor/en/an127.pdf, and
|
||||
|
||||
- C2 Specification at
|
||||
http://www.silabs.com/public/documents/tpub_doc/spec/Microcontrollers/en/C2spec.pdf,
|
||||
|
||||
however it implements a two wire serial communication protocol (bit
|
||||
banging) designed to enable in-system programming, debugging, and
|
||||
boundary-scan testing on low pin-count Silicon Labs devices. Currently
|
||||
this code supports only flash programming but extensions are easy to
|
||||
add.
|
||||
|
||||
Using the driver
|
||||
----------------
|
||||
|
||||
Once the driver is loaded you can use sysfs support to get C2port's
|
||||
info or read/write in-system flash.
|
||||
|
||||
# ls /sys/class/c2port/c2port0/
|
||||
access flash_block_size flash_erase rev_id
|
||||
dev_id flash_blocks_num flash_size subsystem/
|
||||
flash_access flash_data reset uevent
|
||||
|
||||
Initially the C2port access is disabled since you hardware may have
|
||||
such lines multiplexed with other devices so, to get access to the
|
||||
C2port, you need the command:
|
||||
|
||||
# echo 1 > /sys/class/c2port/c2port0/access
|
||||
|
||||
after that you should read the device ID and revision ID of the
|
||||
connected micro controller:
|
||||
|
||||
# cat /sys/class/c2port/c2port0/dev_id
|
||||
8
|
||||
# cat /sys/class/c2port/c2port0/rev_id
|
||||
1
|
||||
|
||||
However, for security reasons, the in-system flash access in not
|
||||
enabled yet, to do so you need the command:
|
||||
|
||||
# echo 1 > /sys/class/c2port/c2port0/flash_access
|
||||
|
||||
After that you can read the whole flash:
|
||||
|
||||
# cat /sys/class/c2port/c2port0/flash_data > image
|
||||
|
||||
erase it:
|
||||
|
||||
# echo 1 > /sys/class/c2port/c2port0/flash_erase
|
||||
|
||||
and write it:
|
||||
|
||||
# cat image > /sys/class/c2port/c2port0/flash_data
|
||||
|
||||
after writing you have to reset the device to execute the new code:
|
||||
|
||||
# echo 1 > /sys/class/c2port/c2port0/reset
|
@ -1,4 +1,4 @@
|
||||
The cgroup freezer is useful to batch job management system which start
|
||||
The cgroup freezer is useful to batch job management system which start
|
||||
and stop sets of tasks in order to schedule the resources of a machine
|
||||
according to the desires of a system administrator. This sort of program
|
||||
is often used on HPC clusters to schedule access to the cluster as a
|
||||
@ -6,7 +6,7 @@ whole. The cgroup freezer uses cgroups to describe the set of tasks to
|
||||
be started/stopped by the batch job management system. It also provides
|
||||
a means to start and stop the tasks composing the job.
|
||||
|
||||
The cgroup freezer will also be useful for checkpointing running groups
|
||||
The cgroup freezer will also be useful for checkpointing running groups
|
||||
of tasks. The freezer allows the checkpoint code to obtain a consistent
|
||||
image of the tasks by attempting to force the tasks in a cgroup into a
|
||||
quiescent state. Once the tasks are quiescent another task can
|
||||
@ -16,7 +16,7 @@ recoverable error occur. This also allows the checkpointed tasks to be
|
||||
migrated between nodes in a cluster by copying the gathered information
|
||||
to another node and restarting the tasks there.
|
||||
|
||||
Sequences of SIGSTOP and SIGCONT are not always sufficient for stopping
|
||||
Sequences of SIGSTOP and SIGCONT are not always sufficient for stopping
|
||||
and resuming tasks in userspace. Both of these signals are observable
|
||||
from within the tasks we wish to freeze. While SIGSTOP cannot be caught,
|
||||
blocked, or ignored it can be seen by waiting or ptracing parent tasks.
|
||||
@ -37,26 +37,29 @@ demonstrate this problem using nested bash shells:
|
||||
|
||||
<at this point 16990 exits and causes 16644 to exit too>
|
||||
|
||||
This happens because bash can observe both signals and choose how it
|
||||
This happens because bash can observe both signals and choose how it
|
||||
responds to them.
|
||||
|
||||
Another example of a program which catches and responds to these
|
||||
Another example of a program which catches and responds to these
|
||||
signals is gdb. In fact any program designed to use ptrace is likely to
|
||||
have a problem with this method of stopping and resuming tasks.
|
||||
|
||||
In contrast, the cgroup freezer uses the kernel freezer code to
|
||||
In contrast, the cgroup freezer uses the kernel freezer code to
|
||||
prevent the freeze/unfreeze cycle from becoming visible to the tasks
|
||||
being frozen. This allows the bash example above and gdb to run as
|
||||
expected.
|
||||
|
||||
The freezer subsystem in the container filesystem defines a file named
|
||||
The freezer subsystem in the container filesystem defines a file named
|
||||
freezer.state. Writing "FROZEN" to the state file will freeze all tasks in the
|
||||
cgroup. Subsequently writing "THAWED" will unfreeze the tasks in the cgroup.
|
||||
Reading will return the current state.
|
||||
|
||||
Note freezer.state doesn't exist in root cgroup, which means root cgroup
|
||||
is non-freezable.
|
||||
|
||||
* Examples of usage :
|
||||
|
||||
# mkdir /containers/freezer
|
||||
# mkdir /containers
|
||||
# mount -t cgroup -ofreezer freezer /containers
|
||||
# mkdir /containers/0
|
||||
# echo $some_pid > /containers/0/tasks
|
||||
@ -94,6 +97,6 @@ things happens:
|
||||
the freezer.state file
|
||||
2) Userspace retries the freezing operation by writing "FROZEN" to
|
||||
the freezer.state file (writing "FREEZING" is not legal
|
||||
and returns EIO)
|
||||
and returns EINVAL)
|
||||
3) The tasks that blocked the cgroup from entering the "FROZEN"
|
||||
state disappear from the cgroup's set of tasks.
|
||||
|
@ -56,30 +56,6 @@ Who: Mauro Carvalho Chehab <mchehab@infradead.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: old tuner-3036 i2c driver
|
||||
When: 2.6.28
|
||||
Why: This driver is for VERY old i2c-over-parallel port teletext receiver
|
||||
boxes. Rather then spending effort on converting this driver to V4L2,
|
||||
and since it is extremely unlikely that anyone still uses one of these
|
||||
devices, it was decided to drop it.
|
||||
Who: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
Mauro Carvalho Chehab <mchehab@infradead.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: V4L2 dpc7146 driver
|
||||
When: 2.6.28
|
||||
Why: Old driver for the dpc7146 demonstration board that is no longer
|
||||
relevant. The last time this was tested on actual hardware was
|
||||
probably around 2002. Since this is a driver for a demonstration
|
||||
board the decision was made to remove it rather than spending a
|
||||
lot of effort continually updating this driver to stay in sync
|
||||
with the latest internal V4L2 or I2C API.
|
||||
Who: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
Mauro Carvalho Chehab <mchehab@infradead.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
||||
When: November 2005
|
||||
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
||||
|
@ -39,10 +39,11 @@ The block device operation is optional, these block devices support it as of
|
||||
today:
|
||||
- dcssblk: s390 dcss block device driver
|
||||
|
||||
An address space operation named get_xip_page is used to retrieve reference
|
||||
to a struct page. To address the target page, a reference to an address_space,
|
||||
and a sector number is provided. A 3rd argument indicates whether the
|
||||
function should allocate blocks if needed.
|
||||
An address space operation named get_xip_mem is used to retrieve references
|
||||
to a page frame number and a kernel address. To obtain these values a reference
|
||||
to an address_space is provided. This function assigns values to the kmem and
|
||||
pfn parameters. The third argument indicates whether the function should allocate
|
||||
blocks if needed.
|
||||
|
||||
This address space operation is mutually exclusive with readpage&writepage that
|
||||
do page cache read/write operations.
|
||||
|
@ -8,7 +8,7 @@ Copyright 2008 Red Hat Inc.
|
||||
Reviewers: Elias Oltmanns, Randy Dunlap, Andrew Morton,
|
||||
John Kacur, and David Teigland.
|
||||
|
||||
Written for: 2.6.27-rc1
|
||||
Written for: 2.6.28-rc2
|
||||
|
||||
Introduction
|
||||
------------
|
||||
@ -50,26 +50,26 @@ of ftrace. Here is a list of some of the key files:
|
||||
|
||||
Note: all time values are in microseconds.
|
||||
|
||||
current_tracer : This is used to set or display the current tracer
|
||||
current_tracer: This is used to set or display the current tracer
|
||||
that is configured.
|
||||
|
||||
available_tracers : This holds the different types of tracers that
|
||||
available_tracers: This holds the different types of tracers that
|
||||
have been compiled into the kernel. The tracers
|
||||
listed here can be configured by echoing their name
|
||||
into current_tracer.
|
||||
|
||||
tracing_enabled : This sets or displays whether the current_tracer
|
||||
tracing_enabled: This sets or displays whether the current_tracer
|
||||
is activated and tracing or not. Echo 0 into this
|
||||
file to disable the tracer or 1 to enable it.
|
||||
|
||||
trace : This file holds the output of the trace in a human readable
|
||||
trace: This file holds the output of the trace in a human readable
|
||||
format (described below).
|
||||
|
||||
latency_trace : This file shows the same trace but the information
|
||||
latency_trace: This file shows the same trace but the information
|
||||
is organized more to display possible latencies
|
||||
in the system (described below).
|
||||
|
||||
trace_pipe : The output is the same as the "trace" file but this
|
||||
trace_pipe: The output is the same as the "trace" file but this
|
||||
file is meant to be streamed with live tracing.
|
||||
Reads from this file will block until new data
|
||||
is retrieved. Unlike the "trace" and "latency_trace"
|
||||
@ -82,11 +82,11 @@ of ftrace. Here is a list of some of the key files:
|
||||
tracer is not adding more data, they will display
|
||||
the same information every time they are read.
|
||||
|
||||
iter_ctrl : This file lets the user control the amount of data
|
||||
iter_ctrl: This file lets the user control the amount of data
|
||||
that is displayed in one of the above output
|
||||
files.
|
||||
|
||||
trace_max_latency : Some of the tracers record the max latency.
|
||||
trace_max_latency: Some of the tracers record the max latency.
|
||||
For example, the time interrupts are disabled.
|
||||
This time is saved in this file. The max trace
|
||||
will also be stored, and displayed by either
|
||||
@ -94,29 +94,26 @@ of ftrace. Here is a list of some of the key files:
|
||||
only be recorded if the latency is greater than
|
||||
the value in this file. (in microseconds)
|
||||
|
||||
trace_entries : This sets or displays the number of trace
|
||||
entries each CPU buffer can hold. The tracer buffers
|
||||
are the same size for each CPU. The displayed number
|
||||
is the size of the CPU buffer and not total size. The
|
||||
trace_entries: This sets or displays the number of bytes each CPU
|
||||
buffer can hold. The tracer buffers are the same size
|
||||
for each CPU. The displayed number is the size of the
|
||||
CPU buffer and not total size of all buffers. The
|
||||
trace buffers are allocated in pages (blocks of memory
|
||||
that the kernel uses for allocation, usually 4 KB in size).
|
||||
Since each entry is smaller than a page, if the last
|
||||
allocated page has room for more entries than were
|
||||
requested, the rest of the page is used to allocate
|
||||
entries.
|
||||
If the last page allocated has room for more bytes
|
||||
than requested, the rest of the page will be used,
|
||||
making the actual allocation bigger than requested.
|
||||
(Note, the size may not be a multiple of the page size due
|
||||
to buffer managment overhead.)
|
||||
|
||||
This can only be updated when the current_tracer
|
||||
is set to "none".
|
||||
is set to "nop".
|
||||
|
||||
NOTE: It is planned on changing the allocated buffers
|
||||
from being the number of possible CPUS to
|
||||
the number of online CPUS.
|
||||
|
||||
tracing_cpumask : This is a mask that lets the user only trace
|
||||
tracing_cpumask: This is a mask that lets the user only trace
|
||||
on specified CPUS. The format is a hex string
|
||||
representing the CPUS.
|
||||
|
||||
set_ftrace_filter : When dynamic ftrace is configured in (see the
|
||||
set_ftrace_filter: When dynamic ftrace is configured in (see the
|
||||
section below "dynamic ftrace"), the code is dynamically
|
||||
modified (code text rewrite) to disable calling of the
|
||||
function profiler (mcount). This lets tracing be configured
|
||||
@ -130,14 +127,11 @@ of ftrace. Here is a list of some of the key files:
|
||||
be traced. If a function exists in both set_ftrace_filter
|
||||
and set_ftrace_notrace, the function will _not_ be traced.
|
||||
|
||||
available_filter_functions : When a function is encountered the first
|
||||
time by the dynamic tracer, it is recorded and
|
||||
later the call is converted into a nop. This file
|
||||
lists the functions that have been recorded
|
||||
by the dynamic tracer and these functions can
|
||||
be used to set the ftrace filter by the above
|
||||
"set_ftrace_filter" file. (See the section "dynamic ftrace"
|
||||
below for more details).
|
||||
available_filter_functions: This lists the functions that ftrace
|
||||
has processed and can trace. These are the function
|
||||
names that you can pass to "set_ftrace_filter" or
|
||||
"set_ftrace_notrace". (See the section "dynamic ftrace"
|
||||
below for more details.)
|
||||
|
||||
|
||||
The Tracers
|
||||
@ -145,7 +139,7 @@ The Tracers
|
||||
|
||||
Here is the list of current tracers that may be configured.
|
||||
|
||||
ftrace - function tracer that uses mcount to trace all functions.
|
||||
function - function tracer that uses mcount to trace all functions.
|
||||
|
||||
sched_switch - traces the context switches between tasks.
|
||||
|
||||
@ -166,8 +160,8 @@ Here is the list of current tracers that may be configured.
|
||||
the highest priority task to get scheduled after
|
||||
it has been woken up.
|
||||
|
||||
none - This is not a tracer. To remove all tracers from tracing
|
||||
simply echo "none" into current_tracer.
|
||||
nop - This is not a tracer. To remove all tracers from tracing
|
||||
simply echo "nop" into current_tracer.
|
||||
|
||||
|
||||
Examples of using the tracer
|
||||
@ -182,7 +176,7 @@ Output format:
|
||||
Here is an example of the output format of the file "trace"
|
||||
|
||||
--------
|
||||
# tracer: ftrace
|
||||
# tracer: function
|
||||
#
|
||||
# TASK-PID CPU# TIMESTAMP FUNCTION
|
||||
# | | | | |
|
||||
@ -192,7 +186,7 @@ Here is an example of the output format of the file "trace"
|
||||
--------
|
||||
|
||||
A header is printed with the tracer name that is represented by the trace.
|
||||
In this case the tracer is "ftrace". Then a header showing the format. Task
|
||||
In this case the tracer is "function". Then a header showing the format. Task
|
||||
name "bash", the task PID "4251", the CPU that it was running on
|
||||
"01", the timestamp in <secs>.<usecs> format, the function name that was
|
||||
traced "path_put" and the parent function that called this function
|
||||
@ -1003,22 +997,20 @@ is the stack for the hard interrupt. This hides the fact that NEED_RESCHED
|
||||
has been set. We do not see the 'N' until we switch back to the task's
|
||||
assigned stack.
|
||||
|
||||
ftrace
|
||||
------
|
||||
function
|
||||
--------
|
||||
|
||||
ftrace is not only the name of the tracing infrastructure, but it
|
||||
is also a name of one of the tracers. The tracer is the function
|
||||
tracer. Enabling the function tracer can be done from the
|
||||
debug file system. Make sure the ftrace_enabled is set otherwise
|
||||
this tracer is a nop.
|
||||
This tracer is the function tracer. Enabling the function tracer
|
||||
can be done from the debug file system. Make sure the ftrace_enabled is
|
||||
set; otherwise this tracer is a nop.
|
||||
|
||||
# sysctl kernel.ftrace_enabled=1
|
||||
# echo ftrace > /debug/tracing/current_tracer
|
||||
# echo function > /debug/tracing/current_tracer
|
||||
# echo 1 > /debug/tracing/tracing_enabled
|
||||
# usleep 1
|
||||
# echo 0 > /debug/tracing/tracing_enabled
|
||||
# cat /debug/tracing/trace
|
||||
# tracer: ftrace
|
||||
# tracer: function
|
||||
#
|
||||
# TASK-PID CPU# TIMESTAMP FUNCTION
|
||||
# | | | | |
|
||||
@ -1040,10 +1032,10 @@ this tracer is a nop.
|
||||
[...]
|
||||
|
||||
|
||||
Note: ftrace uses ring buffers to store the above entries. The newest data
|
||||
may overwrite the oldest data. Sometimes using echo to stop the trace
|
||||
is not sufficient because the tracing could have overwritten the data
|
||||
that you wanted to record. For this reason, it is sometimes better to
|
||||
Note: function tracer uses ring buffers to store the above entries.
|
||||
The newest data may overwrite the oldest data. Sometimes using echo to
|
||||
stop the trace is not sufficient because the tracing could have overwritten
|
||||
the data that you wanted to record. For this reason, it is sometimes better to
|
||||
disable tracing directly from a program. This allows you to stop the
|
||||
tracing at the point that you hit the part that you are interested in.
|
||||
To disable the tracing directly from a C program, something like following
|
||||
@ -1077,18 +1069,31 @@ every kernel function, produced by the -pg switch in gcc), starts
|
||||
of pointing to a simple return. (Enabling FTRACE will include the
|
||||
-pg switch in the compiling of the kernel.)
|
||||
|
||||
When dynamic ftrace is initialized, it calls kstop_machine to make
|
||||
the machine act like a uniprocessor so that it can freely modify code
|
||||
without worrying about other processors executing that same code. At
|
||||
initialization, the mcount calls are changed to call a "record_ip"
|
||||
function. After this, the first time a kernel function is called,
|
||||
it has the calling address saved in a hash table.
|
||||
At compile time every C file object is run through the
|
||||
recordmcount.pl script (located in the scripts directory). This
|
||||
script will process the C object using objdump to find all the
|
||||
locations in the .text section that call mcount. (Note, only
|
||||
the .text section is processed, since processing other sections
|
||||
like .init.text may cause races due to those sections being freed).
|
||||
|
||||
Later on the ftraced kernel thread is awoken and will again call
|
||||
kstop_machine if new functions have been recorded. The ftraced thread
|
||||
will change all calls to mcount to "nop". Just calling mcount
|
||||
and having mcount return has shown a 10% overhead. By converting
|
||||
it to a nop, there is no measurable overhead to the system.
|
||||
A new section called "__mcount_loc" is created that holds references
|
||||
to all the mcount call sites in the .text section. This section is
|
||||
compiled back into the original object. The final linker will add
|
||||
all these references into a single table.
|
||||
|
||||
On boot up, before SMP is initialized, the dynamic ftrace code
|
||||
scans this table and updates all the locations into nops. It also
|
||||
records the locations, which are added to the available_filter_functions
|
||||
list. Modules are processed as they are loaded and before they are
|
||||
executed. When a module is unloaded, it also removes its functions from
|
||||
the ftrace function list. This is automatic in the module unload
|
||||
code, and the module author does not need to worry about it.
|
||||
|
||||
When tracing is enabled, kstop_machine is called to prevent races
|
||||
with the CPUS executing code being modified (which can cause the
|
||||
CPU to do undesireable things), and the nops are patched back
|
||||
to calls. But this time, they do not call mcount (which is just
|
||||
a function stub). They now call into the ftrace infrastructure.
|
||||
|
||||
One special side-effect to the recording of the functions being
|
||||
traced is that we can now selectively choose which functions we
|
||||
@ -1251,36 +1256,6 @@ Produces:
|
||||
|
||||
We can see that there's no more lock or preempt tracing.
|
||||
|
||||
ftraced
|
||||
-------
|
||||
|
||||
As mentioned above, when dynamic ftrace is configured in, a kernel
|
||||
thread wakes up once a second and checks to see if there are mcount
|
||||
calls that need to be converted into nops. If there are not any, then
|
||||
it simply goes back to sleep. But if there are some, it will call
|
||||
kstop_machine to convert the calls to nops.
|
||||
|
||||
There may be a case in which you do not want this added latency.
|
||||
Perhaps you are doing some audio recording and this activity might
|
||||
cause skips in the playback. There is an interface to disable
|
||||
and enable the "ftraced" kernel thread.
|
||||
|
||||
# echo 0 > /debug/tracing/ftraced_enabled
|
||||
|
||||
This will disable the calling of kstop_machine to update the
|
||||
mcount calls to nops. Remember that there is a large overhead
|
||||
to calling mcount. Without this kernel thread, that overhead will
|
||||
exist.
|
||||
|
||||
If there are recorded calls to mcount, any write to the ftraced_enabled
|
||||
file will cause the kstop_machine to run. This means that a
|
||||
user can manually perform the updates when they want to by simply
|
||||
echoing a '0' into the ftraced_enabled file.
|
||||
|
||||
The updates are also done at the beginning of enabling a tracer
|
||||
that uses ftrace function recording.
|
||||
|
||||
|
||||
trace_pipe
|
||||
----------
|
||||
|
||||
@ -1289,14 +1264,14 @@ on the tracing is different. Every read from trace_pipe is consumed.
|
||||
This means that subsequent reads will be different. The trace
|
||||
is live.
|
||||
|
||||
# echo ftrace > /debug/tracing/current_tracer
|
||||
# echo function > /debug/tracing/current_tracer
|
||||
# cat /debug/tracing/trace_pipe > /tmp/trace.out &
|
||||
[1] 4153
|
||||
# echo 1 > /debug/tracing/tracing_enabled
|
||||
# usleep 1
|
||||
# echo 0 > /debug/tracing/tracing_enabled
|
||||
# cat /debug/tracing/trace
|
||||
# tracer: ftrace
|
||||
# tracer: function
|
||||
#
|
||||
# TASK-PID CPU# TIMESTAMP FUNCTION
|
||||
# | | | | |
|
||||
@ -1317,7 +1292,7 @@ is live.
|
||||
|
||||
Note, reading the trace_pipe file will block until more input is added.
|
||||
By changing the tracer, trace_pipe will issue an EOF. We needed
|
||||
to set the ftrace tracer _before_ cating the trace_pipe file.
|
||||
to set the function tracer _before_ we "cat" the trace_pipe file.
|
||||
|
||||
|
||||
trace entries
|
||||
@ -1334,10 +1309,10 @@ number of entries.
|
||||
65620
|
||||
|
||||
Note, to modify this, you must have tracing completely disabled. To do that,
|
||||
echo "none" into the current_tracer. If the current_tracer is not set
|
||||
to "none", an EINVAL error will be returned.
|
||||
echo "nop" into the current_tracer. If the current_tracer is not set
|
||||
to "nop", an EINVAL error will be returned.
|
||||
|
||||
# echo none > /debug/tracing/current_tracer
|
||||
# echo nop > /debug/tracing/current_tracer
|
||||
# echo 100000 > /debug/tracing/trace_entries
|
||||
# cat /debug/tracing/trace_entries
|
||||
100045
|
||||
|
67
Documentation/hwmon/adt7462
Normal file
67
Documentation/hwmon/adt7462
Normal file
@ -0,0 +1,67 @@
|
||||
Kernel driver adt7462
|
||||
======================
|
||||
|
||||
Supported chips:
|
||||
* Analog Devices ADT7462
|
||||
Prefix: 'adt7462'
|
||||
Addresses scanned: I2C 0x58, 0x5C
|
||||
Datasheet: Publicly available at the Analog Devices website
|
||||
|
||||
Author: Darrick J. Wong
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This driver implements support for the Analog Devices ADT7462 chip family.
|
||||
|
||||
This chip is a bit of a beast. It has 8 counters for measuring fan speed. It
|
||||
can also measure 13 voltages or 4 temperatures, or various combinations of the
|
||||
two. See the chip documentation for more details about the exact set of
|
||||
configurations. This driver does not allow one to configure the chip; that is
|
||||
left to the system designer.
|
||||
|
||||
A sophisticated control system for the PWM outputs is designed into the ADT7462
|
||||
that allows fan speed to be adjusted automatically based on any of the three
|
||||
temperature sensors. Each PWM output is individually adjustable and
|
||||
programmable. Once configured, the ADT7462 will adjust the PWM outputs in
|
||||
response to the measured temperatures without further host intervention. This
|
||||
feature can also be disabled for manual control of the PWM's.
|
||||
|
||||
Each of the measured inputs (voltage, temperature, fan speed) has
|
||||
corresponding high/low limit values. The ADT7462 will signal an ALARM if
|
||||
any measured value exceeds either limit.
|
||||
|
||||
The ADT7462 samples all inputs continuously. The driver will not read
|
||||
the registers more often than once every other second. Further,
|
||||
configuration data is only read once per minute.
|
||||
|
||||
Special Features
|
||||
----------------
|
||||
|
||||
The ADT7462 have a 10-bit ADC and can therefore measure temperatures
|
||||
with 0.25 degC resolution.
|
||||
|
||||
The Analog Devices datasheet is very detailed and describes a procedure for
|
||||
determining an optimal configuration for the automatic PWM control.
|
||||
|
||||
The driver will report sensor labels when it is able to determine that
|
||||
information from the configuration registers.
|
||||
|
||||
Configuration Notes
|
||||
-------------------
|
||||
|
||||
Besides standard interfaces driver adds the following:
|
||||
|
||||
* PWM Control
|
||||
|
||||
* pwm#_auto_point1_pwm and temp#_auto_point1_temp and
|
||||
* pwm#_auto_point2_pwm and temp#_auto_point2_temp -
|
||||
|
||||
point1: Set the pwm speed at a lower temperature bound.
|
||||
point2: Set the pwm speed at a higher temperature bound.
|
||||
|
||||
The ADT7462 will scale the pwm between the lower and higher pwm speed when
|
||||
the temperature is between the two temperature boundaries. PWM values range
|
||||
from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
|
||||
temperature sensor associated with the PWM control exceeds temp#_max.
|
||||
|
49
Documentation/hwmon/lis3lv02d
Normal file
49
Documentation/hwmon/lis3lv02d
Normal file
@ -0,0 +1,49 @@
|
||||
Kernel driver lis3lv02d
|
||||
==================
|
||||
|
||||
Supported chips:
|
||||
|
||||
* STMicroelectronics LIS3LV02DL and LIS3LV02DQ
|
||||
|
||||
Author:
|
||||
Yan Burman <burman.yan@gmail.com>
|
||||
Eric Piel <eric.piel@tremplin-utc.net>
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This driver provides support for the accelerometer found in various HP laptops
|
||||
sporting the feature officially called "HP Mobile Data Protection System 3D" or
|
||||
"HP 3D DriveGuard". It detect automatically laptops with this sensor. Known models
|
||||
(for now the HP 2133, nc6420, nc2510, nc8510, nc84x0, nw9440 and nx9420) will
|
||||
have their axis automatically oriented on standard way (eg: you can directly
|
||||
play neverball). The accelerometer data is readable via
|
||||
/sys/devices/platform/lis3lv02d.
|
||||
|
||||
Sysfs attributes under /sys/devices/platform/lis3lv02d/:
|
||||
position - 3D position that the accelerometer reports. Format: "(x,y,z)"
|
||||
calibrate - read: values (x, y, z) that are used as the base for input class device operation.
|
||||
write: forces the base to be recalibrated with the current position.
|
||||
rate - reports the sampling rate of the accelerometer device in HZ
|
||||
|
||||
This driver also provides an absolute input class device, allowing
|
||||
the laptop to act as a pinball machine-esque joystick.
|
||||
|
||||
Axes orientation
|
||||
----------------
|
||||
|
||||
For better compatibility between the various laptops. The values reported by
|
||||
the accelerometer are converted into a "standard" organisation of the axes
|
||||
(aka "can play neverball out of the box"):
|
||||
* When the laptop is horizontal the position reported is about 0 for X and Y
|
||||
and a positive value for Z
|
||||
* If the left side is elevated, X increases (becomes positive)
|
||||
* If the front side (where the touchpad is) is elevated, Y decreases (becomes negative)
|
||||
* If the laptop is put upside-down, Z becomes negative
|
||||
|
||||
If your laptop model is not recognized (cf "dmesg"), you can send an email to the
|
||||
authors to add it to the database. When reporting a new laptop, please include
|
||||
the output of "dmidecode" plus the value of /sys/devices/platform/lis3lv02d/position
|
||||
in these four cases.
|
||||
|
31
Documentation/ics932s401
Normal file
31
Documentation/ics932s401
Normal file
@ -0,0 +1,31 @@
|
||||
Kernel driver ics932s401
|
||||
======================
|
||||
|
||||
Supported chips:
|
||||
* IDT ICS932S401
|
||||
Prefix: 'ics932s401'
|
||||
Addresses scanned: I2C 0x69
|
||||
Datasheet: Publically available at the IDT website
|
||||
|
||||
Author: Darrick J. Wong
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This driver implements support for the IDT ICS932S401 chip family.
|
||||
|
||||
This chip has 4 clock outputs--a base clock for the CPU (which is likely
|
||||
multiplied to get the real CPU clock), a system clock, a PCI clock, a USB
|
||||
clock, and a reference clock. The driver reports selected and actual
|
||||
frequency. If spread spectrum mode is enabled, the driver also reports by what
|
||||
percent the clock signal is being spread, which should be between 0 and -0.5%.
|
||||
All frequencies are reported in KHz.
|
||||
|
||||
The ICS932S401 monitors all inputs continuously. The driver will not read
|
||||
the registers more often than once every other second.
|
||||
|
||||
Special Features
|
||||
----------------
|
||||
|
||||
The clocks could be reprogrammed to increase system speed. I will not help you
|
||||
do this, as you risk damaging your system!
|
10
Documentation/ioctl/00-INDEX
Normal file
10
Documentation/ioctl/00-INDEX
Normal file
@ -0,0 +1,10 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
cdrom.txt
|
||||
- summary of CDROM ioctl calls
|
||||
hdio.txt
|
||||
- summary of HDIO_ ioctl calls
|
||||
ioctl-decoding.txt
|
||||
- how to decode the bits of an IOCTL code
|
||||
ioctl-number.txt
|
||||
- how to implement and register device/driver ioctl calls
|
@ -198,59 +198,42 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
that require a timer override, but don't have
|
||||
HPET
|
||||
|
||||
acpi.debug_layer= [HW,ACPI]
|
||||
acpi_backlight= [HW,ACPI]
|
||||
acpi_backlight=vendor
|
||||
acpi_backlight=video
|
||||
If set to vendor, prefer vendor specific driver
|
||||
(e.g. thinkpad_acpi, sony_acpi, etc.) instead
|
||||
of the ACPI video.ko driver.
|
||||
|
||||
acpi_display_output= [HW,ACPI]
|
||||
acpi_display_output=vendor
|
||||
acpi_display_output=video
|
||||
See above.
|
||||
|
||||
acpi.debug_layer= [HW,ACPI,ACPI_DEBUG]
|
||||
acpi.debug_level= [HW,ACPI,ACPI_DEBUG]
|
||||
Format: <int>
|
||||
Each bit of the <int> indicates an ACPI debug layer,
|
||||
1: enable, 0: disable. It is useful for boot time
|
||||
debugging. After system has booted up, it can be set
|
||||
via /sys/module/acpi/parameters/debug_layer.
|
||||
CONFIG_ACPI_DEBUG must be enabled for this to produce any output.
|
||||
Available bits (add the numbers together) to enable debug output
|
||||
for specific parts of the ACPI subsystem:
|
||||
0x01 utilities 0x02 hardware 0x04 events 0x08 tables
|
||||
0x10 namespace 0x20 parser 0x40 dispatcher
|
||||
0x80 executer 0x100 resources 0x200 acpica debugger
|
||||
0x400 os services 0x800 acpica disassembler.
|
||||
The number can be in decimal or prefixed with 0x in hex.
|
||||
Warning: Many of these options can produce a lot of
|
||||
output and make your system unusable. Be very careful.
|
||||
CONFIG_ACPI_DEBUG must be enabled to produce any ACPI
|
||||
debug output. Bits in debug_layer correspond to a
|
||||
_COMPONENT in an ACPI source file, e.g.,
|
||||
#define _COMPONENT ACPI_PCI_COMPONENT
|
||||
Bits in debug_level correspond to a level in
|
||||
ACPI_DEBUG_PRINT statements, e.g.,
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
|
||||
See Documentation/acpi/debug.txt for more information
|
||||
about debug layers and levels.
|
||||
|
||||
acpi.debug_level= [HW,ACPI]
|
||||
Format: <int>
|
||||
Each bit of the <int> indicates an ACPI debug level,
|
||||
which corresponds to the level in an ACPI_DEBUG_PRINT
|
||||
statement. After system has booted up, this mask
|
||||
can be set via /sys/module/acpi/parameters/debug_level.
|
||||
Enable AML "Debug" output, i.e., stores to the Debug
|
||||
object while interpreting AML:
|
||||
acpi.debug_layer=0xffffffff acpi.debug_level=0x2
|
||||
Enable PCI/PCI interrupt routing info messages:
|
||||
acpi.debug_layer=0x400000 acpi.debug_level=0x4
|
||||
Enable all messages related to ACPI hardware:
|
||||
acpi.debug_layer=0x2 acpi.debug_level=0xffffffff
|
||||
|
||||
CONFIG_ACPI_DEBUG must be enabled for this to produce
|
||||
any output. The number can be in decimal or prefixed
|
||||
with 0x in hex. Some of these options produce so much
|
||||
output that the system is unusable.
|
||||
|
||||
The following global components are defined by the
|
||||
ACPI CA:
|
||||
0x01 error
|
||||
0x02 warn
|
||||
0x04 init
|
||||
0x08 debug object
|
||||
0x10 info
|
||||
0x20 init names
|
||||
0x40 parse
|
||||
0x80 load
|
||||
0x100 dispatch
|
||||
0x200 execute
|
||||
0x400 names
|
||||
0x800 operation region
|
||||
0x1000 bfield
|
||||
0x2000 tables
|
||||
0x4000 values
|
||||
0x8000 objects
|
||||
0x10000 resources
|
||||
0x20000 user requests
|
||||
0x40000 package
|
||||
The number can be in decimal or prefixed with 0x in hex.
|
||||
Warning: Many of these options can produce a lot of
|
||||
output and make your system unusable. Be very careful.
|
||||
Some values produce so much output that the system is
|
||||
unusable. The "log_buf_len" parameter may be useful
|
||||
if you need to capture more output.
|
||||
|
||||
acpi.power_nocheck= [HW,ACPI]
|
||||
Format: 1/0 enable/disable the check of power state.
|
||||
@ -311,7 +294,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
Possible values are:
|
||||
isolate - enable device isolation (each device, as far
|
||||
as possible, will get its own protection
|
||||
domain)
|
||||
domain) [default]
|
||||
share - put every device behind one IOMMU into the
|
||||
same protection domain
|
||||
fullflush - enable flushing of IO/TLB entries when
|
||||
they are unmapped. Otherwise they are
|
||||
flushed before they will be reused, which
|
||||
@ -646,7 +631,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
digiepca= [HW,SERIAL]
|
||||
See drivers/char/README.epca and
|
||||
Documentation/digiepca.txt.
|
||||
Documentation/serial/digiepca.txt.
|
||||
|
||||
disable_mtrr_cleanup [X86]
|
||||
enable_mtrr_cleanup [X86]
|
||||
@ -757,7 +742,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
See header of drivers/scsi/fdomain.c.
|
||||
|
||||
floppy= [HW]
|
||||
See Documentation/floppy.txt.
|
||||
See Documentation/blockdev/floppy.txt.
|
||||
|
||||
force_pal_cache_flush
|
||||
[IA-64] Avoid check_sal_cache_flush which may hang on
|
||||
@ -1118,7 +1103,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
the same attribute, the last one is used.
|
||||
|
||||
load_ramdisk= [RAM] List of ramdisks to load from floppy
|
||||
See Documentation/ramdisk.txt.
|
||||
See Documentation/blockdev/ramdisk.txt.
|
||||
|
||||
lockd.nlm_grace_period=P [NFS] Assign grace period.
|
||||
Format: <integer>
|
||||
@ -1210,8 +1195,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
it is equivalent to "nosmp", which also disables
|
||||
the IO APIC.
|
||||
|
||||
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
||||
equal to this physical address is ignored.
|
||||
max_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory greater than
|
||||
or equal to this physical address is ignored.
|
||||
|
||||
max_luns= [SCSI] Maximum number of LUNs to probe.
|
||||
Should be between 1 and 2^32-1.
|
||||
@ -1311,6 +1296,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
mga= [HW,DRM]
|
||||
|
||||
min_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory below this
|
||||
physical address is ignored.
|
||||
|
||||
mminit_loglevel=
|
||||
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
|
||||
parameter allows control of the logging verbosity for
|
||||
@ -1613,7 +1601,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
pcd. [PARIDE]
|
||||
See header of drivers/block/paride/pcd.c.
|
||||
See also Documentation/paride.txt.
|
||||
See also Documentation/blockdev/paride.txt.
|
||||
|
||||
pci=option[,option...] [PCI] various PCI subsystem options:
|
||||
off [X86] don't probe for the PCI bus
|
||||
@ -1714,7 +1702,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||
|
||||
pd. [PARIDE]
|
||||
See Documentation/paride.txt.
|
||||
See Documentation/blockdev/paride.txt.
|
||||
|
||||
pdcchassis= [PARISC,HW] Disable/Enable PDC Chassis Status codes at
|
||||
boot time.
|
||||
@ -1722,10 +1710,10 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
See arch/parisc/kernel/pdc_chassis.c
|
||||
|
||||
pf. [PARIDE]
|
||||
See Documentation/paride.txt.
|
||||
See Documentation/blockdev/paride.txt.
|
||||
|
||||
pg. [PARIDE]
|
||||
See Documentation/paride.txt.
|
||||
See Documentation/blockdev/paride.txt.
|
||||
|
||||
pirq= [SMP,APIC] Manual mp-table setup
|
||||
See Documentation/x86/i386/IO-APIC.txt.
|
||||
@ -1795,7 +1783,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk
|
||||
before loading.
|
||||
See Documentation/ramdisk.txt.
|
||||
See Documentation/blockdev/ramdisk.txt.
|
||||
|
||||
psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
|
||||
probe for; one of (bare|imps|exps|lifebook|any).
|
||||
@ -1815,7 +1803,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
<io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
|
||||
|
||||
pt. [PARIDE]
|
||||
See Documentation/paride.txt.
|
||||
See Documentation/blockdev/paride.txt.
|
||||
|
||||
pty.legacy_count=
|
||||
[KNL] Number of legacy pty's. Overwrites compiled-in
|
||||
@ -1829,10 +1817,10 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
See Documentation/md.txt.
|
||||
|
||||
ramdisk_blocksize= [RAM]
|
||||
See Documentation/ramdisk.txt.
|
||||
See Documentation/blockdev/ramdisk.txt.
|
||||
|
||||
ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
|
||||
See Documentation/ramdisk.txt.
|
||||
See Documentation/blockdev/ramdisk.txt.
|
||||
|
||||
rcupdate.blimit= [KNL,BOOT]
|
||||
Set maximum number of finished RCU callbacks to process
|
||||
@ -2164,7 +2152,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
See Documentation/sonypi.txt
|
||||
|
||||
specialix= [HW,SERIAL] Specialix multi-serial port adapter
|
||||
See Documentation/specialix.txt.
|
||||
See Documentation/serial/specialix.txt.
|
||||
|
||||
spia_io_base= [HW,MTD]
|
||||
spia_fio_base=
|
||||
|
@ -96,7 +96,7 @@ Letting the PHY Abstraction Layer do Everything
|
||||
static void adjust_link(struct net_device *dev);
|
||||
|
||||
Next, you need to know the device name of the PHY connected to this device.
|
||||
The name will look something like, "phy0:0", where the first number is the
|
||||
The name will look something like, "0:00", where the first number is the
|
||||
bus id, and the second is the PHY's address on that bus. Typically,
|
||||
the bus is responsible for making its ID unique.
|
||||
|
||||
|
@ -41,25 +41,14 @@ Table of Contents
|
||||
VI - System-on-a-chip devices and nodes
|
||||
1) Defining child nodes of an SOC
|
||||
2) Representing devices without a current OF specification
|
||||
a) MDIO IO device
|
||||
b) Gianfar-compatible ethernet nodes
|
||||
c) PHY nodes
|
||||
d) Interrupt controllers
|
||||
e) I2C
|
||||
f) Freescale SOC USB controllers
|
||||
g) Freescale SOC SEC Security Engines
|
||||
h) Board Control and Status (BCSR)
|
||||
i) Freescale QUICC Engine module (QE)
|
||||
j) CFI or JEDEC memory-mapped NOR flash
|
||||
k) Global Utilities Block
|
||||
l) Freescale Communications Processor Module
|
||||
m) Chipselect/Local Bus
|
||||
n) 4xx/Axon EMAC ethernet nodes
|
||||
o) Xilinx IP cores
|
||||
p) Freescale Synchronous Serial Interface
|
||||
q) USB EHCI controllers
|
||||
r) MDIO on GPIOs
|
||||
s) SPI busses
|
||||
a) PHY nodes
|
||||
b) Interrupt controllers
|
||||
c) CFI or JEDEC memory-mapped NOR flash
|
||||
d) 4xx/Axon EMAC ethernet nodes
|
||||
e) Xilinx IP cores
|
||||
f) USB EHCI controllers
|
||||
g) MDIO on GPIOs
|
||||
h) SPI busses
|
||||
|
||||
VII - Marvell Discovery mv64[345]6x System Controller chips
|
||||
1) The /system-controller node
|
||||
@ -1830,41 +1819,7 @@ platforms are moved over to use the flattened-device-tree model.
|
||||
big-endian;
|
||||
};
|
||||
|
||||
r) Freescale Display Interface Unit
|
||||
|
||||
The Freescale DIU is a LCD controller, with proper hardware, it can also
|
||||
drive DVI monitors.
|
||||
|
||||
Required properties:
|
||||
- compatible : should be "fsl-diu".
|
||||
- reg : should contain at least address and length of the DIU register
|
||||
set.
|
||||
- Interrupts : one DIU interrupt should be describe here.
|
||||
|
||||
Example (MPC8610HPCD)
|
||||
display@2c000 {
|
||||
compatible = "fsl,diu";
|
||||
reg = <0x2c000 100>;
|
||||
interrupts = <72 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
s) Freescale on board FPGA
|
||||
|
||||
This is the memory-mapped registers for on board FPGA.
|
||||
|
||||
Required properities:
|
||||
- compatible : should be "fsl,fpga-pixis".
|
||||
- reg : should contain the address and the lenght of the FPPGA register
|
||||
set.
|
||||
|
||||
Example (MPC8610HPCD)
|
||||
board-control@e8000000 {
|
||||
compatible = "fsl,fpga-pixis";
|
||||
reg = <0xe8000000 32>;
|
||||
};
|
||||
|
||||
r) MDIO on GPIOs
|
||||
g) MDIO on GPIOs
|
||||
|
||||
Currently defined compatibles:
|
||||
- virtual,gpio-mdio
|
||||
@ -1884,7 +1839,7 @@ platforms are moved over to use the flattened-device-tree model.
|
||||
&qe_pio_c 6>;
|
||||
};
|
||||
|
||||
s) SPI (Serial Peripheral Interface) busses
|
||||
h) SPI (Serial Peripheral Interface) busses
|
||||
|
||||
SPI busses can be described with a node for the SPI master device
|
||||
and a set of child nodes for each SPI slave on the bus. For this
|
||||
|
35
Documentation/printk-formats.txt
Normal file
35
Documentation/printk-formats.txt
Normal file
@ -0,0 +1,35 @@
|
||||
If variable is of Type, use printk format specifier:
|
||||
---------------------------------------------------------
|
||||
int %d or %x
|
||||
unsigned int %u or %x
|
||||
long %ld or %lx
|
||||
unsigned long %lu or %lx
|
||||
long long %lld or %llx
|
||||
unsigned long long %llu or %llx
|
||||
size_t %zu or %zx
|
||||
ssize_t %zd or %zx
|
||||
|
||||
Raw pointer value SHOULD be printed with %p.
|
||||
|
||||
u64 SHOULD be printed with %llu/%llx, (unsigned long long):
|
||||
|
||||
printk("%llu", (unsigned long long)u64_var);
|
||||
|
||||
s64 SHOULD be printed with %lld/%llx, (long long):
|
||||
|
||||
printk("%lld", (long long)s64_var);
|
||||
|
||||
If <type> is dependent on a config option for its size (e.g., sector_t,
|
||||
blkcnt_t, phys_addr_t, resource_size_t) or is architecture-dependent
|
||||
for its size (e.g., tcflag_t), use a format specifier of its largest
|
||||
possible type and explicitly cast to it. Example:
|
||||
|
||||
printk("test: sector number/total blocks: %llu/%llu\n",
|
||||
(unsigned long long)sector, (unsigned long long)blockcount);
|
||||
|
||||
Reminder: sizeof() result is of type size_t.
|
||||
|
||||
Thank you for your cooperation and attention.
|
||||
|
||||
|
||||
By Randy Dunlap <rdunlap@xenotime.net>
|
24
Documentation/serial/00-INDEX
Normal file
24
Documentation/serial/00-INDEX
Normal file
@ -0,0 +1,24 @@
|
||||
00-INDEX
|
||||
- this file.
|
||||
README.cycladesZ
|
||||
- info on Cyclades-Z firmware loading.
|
||||
computone.txt
|
||||
- info on Computone Intelliport II/Plus Multiport Serial Driver.
|
||||
digiepca.txt
|
||||
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
||||
hayes-esp.txt
|
||||
- info on using the Hayes ESP serial driver.
|
||||
moxa-smartio
|
||||
- file with info on installing/using Moxa multiport serial driver.
|
||||
riscom8.txt
|
||||
- notes on using the RISCom/8 multi-port serial driver.
|
||||
rocket.txt
|
||||
- info on the Comtrol RocketPort multiport serial driver.
|
||||
specialix.txt
|
||||
- info on hardware/driver for specialix IO8+ multiport serial card.
|
||||
stallion.txt
|
||||
- info on using the Stallion multiport serial driver.
|
||||
sx.txt
|
||||
- info on the Specialix SX/SI multiport serial driver.
|
||||
tty.txt
|
||||
- guide to the locking policies of the tty layer.
|
@ -247,7 +247,7 @@ shar archive to make it easier to extract the script from the documentation.
|
||||
To create the ip2mkdev shell script change to a convenient directory (/tmp
|
||||
works just fine) and run the following command:
|
||||
|
||||
unshar Documentation/computone.txt
|
||||
unshar Documentation/serial/computone.txt
|
||||
(This file)
|
||||
|
||||
You should now have a file ip2mkdev in your current working directory with
|
@ -27,8 +27,8 @@ audio
|
||||
sound card) should be possible, but there is no code yet ...
|
||||
|
||||
vbi
|
||||
- some code present. Doesn't crash any more, but also doesn't
|
||||
work yet ...
|
||||
- Code present. Works for NTSC closed caption. PAL and other
|
||||
TV norms may or may not work.
|
||||
|
||||
|
||||
how to add support for new cards
|
||||
|
118
Documentation/video4linux/si470x.txt
Normal file
118
Documentation/video4linux/si470x.txt
Normal file
@ -0,0 +1,118 @@
|
||||
Driver for USB radios for the Silicon Labs Si470x FM Radio Receivers
|
||||
|
||||
Copyright (c) 2008 Tobias Lorenz <tobias.lorenz@gmx.net>
|
||||
|
||||
|
||||
Information from Silicon Labs
|
||||
=============================
|
||||
Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the
|
||||
most often used radio receivers in cell phones. Usually they are connected with
|
||||
I2C. But SiLabs also provides a reference design, which integrates this IC,
|
||||
together with a small microcontroller C8051F321, to form a USB radio.
|
||||
Part of this reference design is also a radio application in binary and source
|
||||
code. The software also contains an automatic firmware upgrade to the most
|
||||
current version. Information on these can be downloaded here:
|
||||
http://www.silabs.com/usbradio
|
||||
|
||||
|
||||
Supported ICs
|
||||
=============
|
||||
The following ICs have a very similar register set, so that they are or will be
|
||||
supported somewhen by the driver:
|
||||
- Si4700: FM radio receiver
|
||||
- Si4701: FM radio receiver, RDS Support
|
||||
- Si4702: FM radio receiver
|
||||
- Si4703: FM radio receiver, RDS Support
|
||||
- Si4704: FM radio receiver, no external antenna required
|
||||
- Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O
|
||||
- Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS
|
||||
Support
|
||||
- Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support
|
||||
- Si4708: Smallest FM receivers
|
||||
- Si4709: Smallest FM receivers, RDS Support
|
||||
More information on these can be downloaded here:
|
||||
http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx
|
||||
|
||||
|
||||
Supported USB devices
|
||||
=====================
|
||||
Currently the following USB radios (vendor:product) with the Silicon Labs si470x
|
||||
chips are known to work:
|
||||
- 10c4:818a: Silicon Labs USB FM Radio Reference Design
|
||||
- 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF)
|
||||
- 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
|
||||
|
||||
|
||||
Software
|
||||
========
|
||||
Testing is usually done with most application under Debian/testing:
|
||||
- fmtools - Utility for managing FM tuner cards
|
||||
- gnomeradio - FM-radio tuner for the GNOME desktop
|
||||
- gradio - GTK FM radio tuner
|
||||
- kradio - Comfortable Radio Application for KDE
|
||||
- radio - ncurses-based radio application
|
||||
|
||||
There is also a library libv4l, which can be used. It's going to have a function
|
||||
for frequency seeking, either by using hardware functionality as in radio-si470x
|
||||
or by implementing a function as we currently have in every of the mentioned
|
||||
programs. Somewhen the radio programs should make use of libv4l.
|
||||
|
||||
For processing RDS information, there is a project ongoing at:
|
||||
http://rdsd.berlios.de/
|
||||
|
||||
There is currently no project for making TMC sentences human readable.
|
||||
|
||||
|
||||
Audio Listing
|
||||
=============
|
||||
USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to
|
||||
also select SND_USB_AUDIO, as this is required to get sound from the radio. For
|
||||
listing you have to redirect the sound, for example using one of the following
|
||||
commands.
|
||||
|
||||
If you just want to test audio (very poor quality):
|
||||
cat /dev/dsp1 > /dev/dsp
|
||||
|
||||
If you use OSS try:
|
||||
sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp
|
||||
|
||||
If you use arts try:
|
||||
arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -
|
||||
|
||||
|
||||
Module Parameters
|
||||
=================
|
||||
After loading the module, you still have access to some of them in the sysfs
|
||||
mount under /sys/module/radio_si470x/parameters. The contents of read-only files
|
||||
(0444) are not updated, even if space, band and de are changed using private
|
||||
video controls. The others are runtime changeable.
|
||||
|
||||
|
||||
Errors
|
||||
======
|
||||
Increase tune_timeout, if you often get -EIO errors.
|
||||
|
||||
When timed out or band limit is reached, hw_freq_seek returns -EAGAIN.
|
||||
|
||||
If you get any errors from snd_usb_audio, please report them to the ALSA people.
|
||||
|
||||
|
||||
Open Issues
|
||||
===========
|
||||
V4L minor device allocation and parameter setting is not perfect. A solution is
|
||||
currently under discussion.
|
||||
|
||||
There is an USB interface for downloading/uploading new firmware images. Support
|
||||
for it can be implemented using the request_firmware interface.
|
||||
|
||||
There is a RDS interrupt mode. The driver is already using the same interface
|
||||
for polling RDS information, but is currently not using the interrupt mode.
|
||||
|
||||
There is a LED interface, which can be used to override the LED control
|
||||
programmed in the firmware. This can be made available using the LED support
|
||||
functions in the kernel.
|
||||
|
||||
|
||||
Other useful information and links
|
||||
==================================
|
||||
http://www.silabs.com/usbradio
|
46
Documentation/w1/masters/omap-hdq
Normal file
46
Documentation/w1/masters/omap-hdq
Normal file
@ -0,0 +1,46 @@
|
||||
Kernel driver for omap HDQ/1-wire module.
|
||||
========================================
|
||||
|
||||
Supported chips:
|
||||
================
|
||||
HDQ/1-wire controller on the TI OMAP 2430/3430 platforms.
|
||||
|
||||
A useful link about HDQ basics:
|
||||
===============================
|
||||
http://focus.ti.com/lit/an/slua408/slua408.pdf
|
||||
|
||||
Description:
|
||||
============
|
||||
The HDQ/1-Wire module of TI OMAP2430/3430 platforms implement the hardware
|
||||
protocol of the master functions of the Benchmark HDQ and the Dallas
|
||||
Semiconductor 1-Wire protocols. These protocols use a single wire for
|
||||
communication between the master (HDQ/1-Wire controller) and the slave
|
||||
(HDQ/1-Wire external compliant device).
|
||||
|
||||
A typical application of the HDQ/1-Wire module is the communication with battery
|
||||
monitor (gas gauge) integrated circuits.
|
||||
|
||||
The controller supports operation in both HDQ and 1-wire mode. The essential
|
||||
difference between the HDQ and 1-wire mode is how the slave device responds to
|
||||
initialization pulse.In HDQ mode, the firmware does not require the host to
|
||||
create an initialization pulse to the slave.However, the slave can be reset by
|
||||
using an initialization pulse (also referred to as a break pulse).The slave
|
||||
does not respond with a presence pulse as it does in the 1-Wire protocol.
|
||||
|
||||
Remarks:
|
||||
========
|
||||
The driver (drivers/w1/masters/omap_hdq.c) supports the HDQ mode of the
|
||||
controller. In this mode, as we can not read the ID which obeys the W1
|
||||
spec(family:id:crc), a module parameter can be passed to the driver which will
|
||||
be used to calculate the CRC and pass back an appropriate slave ID to the W1
|
||||
core.
|
||||
|
||||
By default the master driver and the BQ slave i/f
|
||||
driver(drivers/w1/slaves/w1_bq27000.c) sets the ID to 1.
|
||||
Please note to load both the modules with a different ID if required, but note
|
||||
that the ID used should be same for both master and slave driver loading.
|
||||
|
||||
e.g:
|
||||
insmod omap_hdq.ko W1_ID=2
|
||||
inamod w1_bq27000.ko F_ID=2
|
||||
|
51
MAINTAINERS
51
MAINTAINERS
@ -1809,7 +1809,7 @@ S: Maintained
|
||||
|
||||
FTRACE
|
||||
P: Steven Rostedt
|
||||
M: srostedt@redhat.com
|
||||
M: rostedt@goodmis.org
|
||||
S: Maintained
|
||||
|
||||
FUJITSU FR-V (FRV) PORT
|
||||
@ -1879,6 +1879,37 @@ M: linux-kernel@vger.kernel.org
|
||||
W: http://www.kernel.org/pub/linux/kernel/people/rml/hdaps/
|
||||
S: Maintained
|
||||
|
||||
GSPCA FINEPIX SUBDRIVER
|
||||
P: Frank Zago
|
||||
M: frank@zago.net
|
||||
L: video4linux-list@redhat.com
|
||||
S: Maintained
|
||||
|
||||
GSPCA M5602 SUBDRIVER
|
||||
P: Erik Andren
|
||||
M: erik.andren@gmail.com
|
||||
L: video4linux-list@redhat.com
|
||||
S: Maintained
|
||||
|
||||
GSPCA PAC207 SONIXB SUBDRIVER
|
||||
P: Hans de Goede
|
||||
M: hdegoede@redhat.com
|
||||
L: video4linux-list@redhat.com
|
||||
S: Maintained
|
||||
|
||||
GSPCA T613 SUBDRIVER
|
||||
P: Leandro Costantino
|
||||
M: lcostantino@gmail.com
|
||||
L: video4linux-list@redhat.com
|
||||
S: Maintained
|
||||
|
||||
GSPCA USB WEBCAM DRIVER
|
||||
P: Jean-Francois Moine
|
||||
M: moinejf@free.fr
|
||||
W: http://moinejf.free.fr
|
||||
L: video4linux-list@redhat.com
|
||||
S: Maintained
|
||||
|
||||
HARDWARE MONITORING
|
||||
L: lm-sensors@lm-sensors.org
|
||||
W: http://www.lm-sensors.org/
|
||||
@ -2185,6 +2216,13 @@ M: adaplas@gmail.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
INTEL MENLOW THERMAL DRIVER
|
||||
P: Sujith Thomas
|
||||
M: sujith.thomas@intel.com
|
||||
L: linux-acpi@vger.kernel.org
|
||||
W: http://www.lesswatts.org/projects/acpi/
|
||||
S: Supported
|
||||
|
||||
INTEL IA32 MICROCODE UPDATE SUPPORT
|
||||
P: Tigran Aivazian
|
||||
M: tigran@aivazian.fsnet.co.uk
|
||||
@ -2665,6 +2703,11 @@ P: Arnaldo Carvalho de Melo
|
||||
M: acme@ghostprotocols.net
|
||||
S: Maintained
|
||||
|
||||
LIS3LV02D ACCELEROMETER DRIVER
|
||||
P: Eric Piel
|
||||
M: eric.piel@tremplin-utc.net
|
||||
S: Maintained
|
||||
|
||||
LM83 HARDWARE MONITOR DRIVER
|
||||
P: Jean Delvare
|
||||
M: khali@linux-fr.org
|
||||
@ -3346,7 +3389,9 @@ S: Maintained
|
||||
|
||||
PNP SUPPORT
|
||||
P: Adam Belay
|
||||
M: ambx1@neo.rr.com
|
||||
M: abelay@mit.edu
|
||||
P: Bjorn Helgaas
|
||||
M: bjorn.helgaas@hp.com
|
||||
S: Maintained
|
||||
|
||||
PNXxxxx I2C DRIVER
|
||||
@ -3883,8 +3928,6 @@ M: bootc@bootc.net
|
||||
S: Maintained
|
||||
|
||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||
P: Ingo Molnar
|
||||
M: mingo@redhat.com
|
||||
P: Neil Brown
|
||||
M: neilb@suse.de
|
||||
L: linux-raid@vger.kernel.org
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 28
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Killer Bat of Doom
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -256,8 +256,17 @@ int dmabounce_sync_for_cpu(struct device *, dma_addr_t, unsigned long,
|
||||
int dmabounce_sync_for_device(struct device *, dma_addr_t, unsigned long,
|
||||
size_t, enum dma_data_direction);
|
||||
#else
|
||||
#define dmabounce_sync_for_cpu(dev,dma,off,sz,dir) (1)
|
||||
#define dmabounce_sync_for_device(dev,dma,off,sz,dir) (1)
|
||||
static inline int dmabounce_sync_for_cpu(struct device *d, dma_addr_t addr,
|
||||
unsigned long offset, size_t size, enum dma_data_direction dir)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int dmabounce_sync_for_device(struct device *d, dma_addr_t addr,
|
||||
unsigned long offset, size_t size, enum dma_data_direction dir)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -730,7 +730,8 @@ static inline void iop_desc_set_next_desc(struct iop_adma_desc_slot *desc,
|
||||
{
|
||||
/* hw_desc->next_desc is the same location for all channels */
|
||||
union iop3xx_desc hw_desc = { .ptr = desc->hw_desc, };
|
||||
BUG_ON(hw_desc.dma->next_desc);
|
||||
|
||||
iop_paranoia(hw_desc.dma->next_desc);
|
||||
hw_desc.dma->next_desc = next_desc_addr;
|
||||
}
|
||||
|
||||
@ -760,7 +761,7 @@ static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc)
|
||||
struct iop3xx_desc_aau *hw_desc = desc->hw_desc;
|
||||
struct iop3xx_aau_desc_ctrl desc_ctrl = hw_desc->desc_ctrl_field;
|
||||
|
||||
BUG_ON(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en));
|
||||
iop_paranoia(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en));
|
||||
return desc_ctrl.zero_result_err;
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,12 @@
|
||||
|
||||
#define IOP_ADMA_SLOT_SIZE 32
|
||||
#define IOP_ADMA_THRESHOLD 4
|
||||
#ifdef DEBUG
|
||||
#define IOP_PARANOIA 1
|
||||
#else
|
||||
#define IOP_PARANOIA 0
|
||||
#endif
|
||||
#define iop_paranoia(x) BUG_ON(IOP_PARANOIA && (x))
|
||||
|
||||
/**
|
||||
* struct iop_adma_device - internal representation of an ADMA device
|
||||
|
@ -19,12 +19,13 @@ struct map_desc {
|
||||
};
|
||||
|
||||
/* types 0-3 are defined in asm/io.h */
|
||||
#define MT_CACHECLEAN 4
|
||||
#define MT_MINICLEAN 5
|
||||
#define MT_LOW_VECTORS 6
|
||||
#define MT_HIGH_VECTORS 7
|
||||
#define MT_MEMORY 8
|
||||
#define MT_ROM 9
|
||||
#define MT_UNCACHED 4
|
||||
#define MT_CACHECLEAN 5
|
||||
#define MT_MINICLEAN 6
|
||||
#define MT_LOW_VECTORS 7
|
||||
#define MT_HIGH_VECTORS 8
|
||||
#define MT_MEMORY 9
|
||||
#define MT_ROM 10
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
extern void iotable_init(struct map_desc *, int);
|
||||
|
@ -94,20 +94,6 @@
|
||||
#include <asm/hardware/ep7212.h>
|
||||
#include <asm/hardware/cs89712.h>
|
||||
|
||||
/* dynamic ioremap() areas */
|
||||
#define FLASH_START 0x00000000
|
||||
#define FLASH_SIZE 0x800000
|
||||
#define FLASH_WIDTH 4
|
||||
|
||||
#define SRAM_START 0x60000000
|
||||
#define SRAM_SIZE 0xc000
|
||||
#define SRAM_WIDTH 4
|
||||
|
||||
#define BOOTROM_START 0x70000000
|
||||
#define BOOTROM_SIZE 0x80
|
||||
#define BOOTROM_WIDTH 4
|
||||
|
||||
|
||||
/* static cdb89712_map_io() areas */
|
||||
#define REGISTER_START 0x80000000
|
||||
#define REGISTER_SIZE 0x4000
|
||||
@ -198,14 +184,6 @@
|
||||
#define CEIVA_FLASH_SIZE 0x100000
|
||||
#define CEIVA_FLASH_WIDTH 2
|
||||
|
||||
#define SRAM_START 0x60000000
|
||||
#define SRAM_SIZE 0xc000
|
||||
#define SRAM_WIDTH 4
|
||||
|
||||
#define BOOTROM_START 0x70000000
|
||||
#define BOOTROM_SIZE 0x80
|
||||
#define BOOTROM_WIDTH 4
|
||||
|
||||
/*
|
||||
* SED1355 LCD controller
|
||||
*/
|
||||
|
@ -275,9 +275,9 @@ static struct map_desc cl7500_io_desc[] __initdata = {
|
||||
.length = ISA_SIZE,
|
||||
.type = MT_DEVICE
|
||||
}, { /* Flash */
|
||||
.virtual = FLASH_BASE,
|
||||
.pfn = __phys_to_pfn(FLASH_START),
|
||||
.length = FLASH_SIZE,
|
||||
.virtual = CLPS7500_FLASH_BASE,
|
||||
.pfn = __phys_to_pfn(CLPS7500_FLASH_START),
|
||||
.length = CLPS7500_FLASH_SIZE,
|
||||
.type = MT_DEVICE
|
||||
}, { /* LED */
|
||||
.virtual = LED_BASE,
|
||||
|
@ -39,9 +39,9 @@
|
||||
#define ISA_SIZE 0x00010000
|
||||
#define ISA_BASE 0xe1000000
|
||||
|
||||
#define FLASH_START 0x01000000 /* XXX */
|
||||
#define FLASH_SIZE 0x01000000
|
||||
#define FLASH_BASE 0xe2000000
|
||||
#define CLPS7500_FLASH_START 0x01000000 /* XXX */
|
||||
#define CLPS7500_FLASH_SIZE 0x01000000
|
||||
#define CLPS7500_FLASH_BASE 0xe2000000
|
||||
|
||||
#define LED_START 0x0302B000
|
||||
#define LED_SIZE 0x00001000
|
||||
|
@ -19,9 +19,9 @@
|
||||
#ifdef CONFIG_ARCH_H7202
|
||||
|
||||
/* FLASH */
|
||||
#define FLASH_VIRT 0xd0000000
|
||||
#define FLASH_PHYS 0x00000000
|
||||
#define FLASH_SIZE 0x02000000
|
||||
#define H720X_FLASH_VIRT 0xd0000000
|
||||
#define H720X_FLASH_PHYS 0x00000000
|
||||
#define H720X_FLASH_SIZE 0x02000000
|
||||
|
||||
/* onboard LAN controller */
|
||||
# define ETH0_PHYS 0x08000000
|
||||
|
@ -407,28 +407,11 @@
|
||||
*/
|
||||
#define uHAL_MEMORY_SIZE INTEGRATOR_SSRAM_SIZE
|
||||
|
||||
/*
|
||||
* Application Flash
|
||||
*
|
||||
*/
|
||||
#define FLASH_BASE INTEGRATOR_FLASH_BASE
|
||||
#define FLASH_SIZE INTEGRATOR_FLASH_SIZE
|
||||
#define FLASH_END (FLASH_BASE + FLASH_SIZE - 1)
|
||||
#define FLASH_BLOCK_SIZE SZ_128K
|
||||
|
||||
/*
|
||||
* Boot Flash
|
||||
*
|
||||
*/
|
||||
#define EPROM_BASE INTEGRATOR_BOOT_ROM_HI
|
||||
#define EPROM_SIZE INTEGRATOR_BOOT_ROM_SIZE
|
||||
#define EPROM_END (EPROM_BASE + EPROM_SIZE - 1)
|
||||
|
||||
/*
|
||||
* Clean base - dummy
|
||||
*
|
||||
*/
|
||||
#define CLEAN_BASE EPROM_BASE
|
||||
#define CLEAN_BASE INTEGRATOR_BOOT_ROM_HI
|
||||
|
||||
/*
|
||||
* Timer definitions
|
||||
|
@ -404,7 +404,8 @@ static inline void iop_desc_set_next_desc(struct iop_adma_desc_slot *desc,
|
||||
u32 next_desc_addr)
|
||||
{
|
||||
struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc;
|
||||
BUG_ON(hw_desc->next_desc);
|
||||
|
||||
iop_paranoia(hw_desc->next_desc);
|
||||
hw_desc->next_desc = next_desc_addr;
|
||||
}
|
||||
|
||||
|
@ -104,7 +104,7 @@ static struct clk uart_clk = {
|
||||
|
||||
static struct clk mmci_clk = {
|
||||
.name = "MCLK",
|
||||
.rate = 33000000,
|
||||
.rate = 24000000,
|
||||
};
|
||||
|
||||
int clk_register(struct clk *clk)
|
||||
|
@ -238,28 +238,11 @@
|
||||
#define REALVIEW_INTREG_OFFSET 0x8 /* Interrupt control */
|
||||
#define REALVIEW_DECODE_OFFSET 0xC /* Fitted logic modules */
|
||||
|
||||
/*
|
||||
* Application Flash
|
||||
*
|
||||
*/
|
||||
#define FLASH_BASE REALVIEW_FLASH_BASE
|
||||
#define FLASH_SIZE REALVIEW_FLASH_SIZE
|
||||
#define FLASH_END (FLASH_BASE + FLASH_SIZE - 1)
|
||||
#define FLASH_BLOCK_SIZE SZ_128K
|
||||
|
||||
/*
|
||||
* Boot Flash
|
||||
*
|
||||
*/
|
||||
#define EPROM_BASE REALVIEW_BOOT_ROM_HI
|
||||
#define EPROM_SIZE REALVIEW_BOOT_ROM_SIZE
|
||||
#define EPROM_END (EPROM_BASE + EPROM_SIZE - 1)
|
||||
|
||||
/*
|
||||
* Clean base - dummy
|
||||
*
|
||||
*/
|
||||
#define CLEAN_BASE EPROM_BASE
|
||||
#define CLEAN_BASE REALVIEW_BOOT_ROM_HI
|
||||
|
||||
/*
|
||||
* System controller bit assignment
|
||||
|
@ -105,7 +105,7 @@ static struct clk uart_clk = {
|
||||
|
||||
static struct clk mmci_clk = {
|
||||
.name = "MCLK",
|
||||
.rate = 33000000,
|
||||
.rate = 24000000,
|
||||
};
|
||||
|
||||
int clk_register(struct clk *clk)
|
||||
|
@ -436,28 +436,12 @@
|
||||
#define SIC_INTMASK_PCI1 (1 << SIC_INT_PCI1)
|
||||
#define SIC_INTMASK_PCI2 (1 << SIC_INT_PCI2)
|
||||
#define SIC_INTMASK_PCI3 (1 << SIC_INT_PCI3)
|
||||
/*
|
||||
* Application Flash
|
||||
*
|
||||
*/
|
||||
#define FLASH_BASE VERSATILE_FLASH_BASE
|
||||
#define FLASH_SIZE VERSATILE_FLASH_SIZE
|
||||
#define FLASH_END (FLASH_BASE + FLASH_SIZE - 1)
|
||||
#define FLASH_BLOCK_SIZE SZ_128K
|
||||
|
||||
/*
|
||||
* Boot Flash
|
||||
*
|
||||
*/
|
||||
#define EPROM_BASE VERSATILE_BOOT_ROM_HI
|
||||
#define EPROM_SIZE VERSATILE_BOOT_ROM_SIZE
|
||||
#define EPROM_END (EPROM_BASE + EPROM_SIZE - 1)
|
||||
|
||||
/*
|
||||
* Clean base - dummy
|
||||
*
|
||||
*/
|
||||
#define CLEAN_BASE EPROM_BASE
|
||||
#define CLEAN_BASE VERSATILE_BOOT_ROM_HI
|
||||
|
||||
/*
|
||||
* System controller bit assignment
|
||||
|
@ -150,7 +150,7 @@ static void feroceon_l2_inv_range(unsigned long start, unsigned long end)
|
||||
/*
|
||||
* Clean and invalidate partial last cache line.
|
||||
*/
|
||||
if (end & (CACHE_LINE_SIZE - 1)) {
|
||||
if (start < end && end & (CACHE_LINE_SIZE - 1)) {
|
||||
l2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1));
|
||||
end &= ~(CACHE_LINE_SIZE - 1);
|
||||
}
|
||||
@ -158,7 +158,7 @@ static void feroceon_l2_inv_range(unsigned long start, unsigned long end)
|
||||
/*
|
||||
* Invalidate all full cache lines between 'start' and 'end'.
|
||||
*/
|
||||
while (start != end) {
|
||||
while (start < end) {
|
||||
unsigned long range_end = calc_range_end(start, end);
|
||||
l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
|
||||
start = range_end;
|
||||
|
@ -208,6 +208,12 @@ static struct mem_type mem_types[] = {
|
||||
.prot_sect = PROT_SECT_DEVICE,
|
||||
.domain = DOMAIN_IO,
|
||||
},
|
||||
[MT_UNCACHED] = {
|
||||
.prot_pte = PROT_PTE_DEVICE,
|
||||
.prot_l1 = PMD_TYPE_TABLE,
|
||||
.prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
|
||||
.domain = DOMAIN_IO,
|
||||
},
|
||||
[MT_CACHECLEAN] = {
|
||||
.prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
|
||||
.domain = DOMAIN_KERNEL,
|
||||
|
@ -16,14 +16,15 @@
|
||||
#include <asm/hardware/iop3xx.h>
|
||||
|
||||
/*
|
||||
* Standard IO mapping for all IOP3xx based systems
|
||||
* Standard IO mapping for all IOP3xx based systems. Note that
|
||||
* the IOP3xx OCCDR must be mapped uncached and unbuffered.
|
||||
*/
|
||||
static struct map_desc iop3xx_std_desc[] __initdata = {
|
||||
{ /* mem mapped registers */
|
||||
.virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
|
||||
.pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
|
||||
.length = IOP3XX_PERIPHERAL_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
.type = MT_UNCACHED,
|
||||
}, { /* PCI IO space */
|
||||
.virtual = IOP3XX_PCI_LOWER_IO_VA,
|
||||
.pfn = __phys_to_pfn(IOP3XX_PCI_LOWER_IO_PA),
|
||||
|
@ -101,7 +101,7 @@ extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */
|
||||
extern unsigned long _ramstart, _ramend, _rambase;
|
||||
extern unsigned long memory_start, memory_end, physical_mem_end;
|
||||
extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[],
|
||||
_ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _ebss_b_l1[],
|
||||
_ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _sbss_b_l1[], _ebss_b_l1[],
|
||||
_stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], _sbss_l2[],
|
||||
_ebss_l2[], _l2_lma_start[];
|
||||
|
||||
|
@ -15,7 +15,11 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
|
||||
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
||||
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
||||
|
||||
#define dma_mapping_error
|
||||
static inline
|
||||
int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Map a single buffer of the indicated size for DMA in streaming mode.
|
||||
|
@ -218,7 +218,7 @@ inline int check_gpio(unsigned gpio)
|
||||
if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15
|
||||
|| gpio == GPIO_PH14 || gpio == GPIO_PH15
|
||||
|| gpio == GPIO_PJ14 || gpio == GPIO_PJ15
|
||||
|| gpio > MAX_BLACKFIN_GPIOS)
|
||||
|| gpio >= MAX_BLACKFIN_GPIOS)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -188,10 +188,11 @@ static struct cplb_desc cplb_data[] = {
|
||||
|
||||
static u16 __init lock_kernel_check(u32 start, u32 end)
|
||||
{
|
||||
if ((end <= (u32) _end && end >= (u32)_stext) ||
|
||||
(start <= (u32) _end && start >= (u32)_stext))
|
||||
return IN_KERNEL;
|
||||
return 0;
|
||||
if (start >= (u32)_end || end <= (u32)_stext)
|
||||
return 0;
|
||||
|
||||
/* This cplb block overlapped with kernel area. */
|
||||
return IN_KERNEL;
|
||||
}
|
||||
|
||||
static unsigned short __init
|
||||
|
@ -351,9 +351,14 @@ int _access_ok(unsigned long addr, unsigned long size)
|
||||
return 1;
|
||||
#endif
|
||||
#if L1_DATA_B_LENGTH != 0
|
||||
if (addr >= L1_DATA_B_START
|
||||
if (addr >= L1_DATA_B_START + (_ebss_b_l1 - _sdata_b_l1)
|
||||
&& addr + size <= L1_DATA_B_START + L1_DATA_B_LENGTH)
|
||||
return 1;
|
||||
#endif
|
||||
#if L2_LENGTH != 0
|
||||
if (addr >= L2_START + (_ebss_l2 - _stext_l2)
|
||||
&& addr + size <= L2_START + L2_LENGTH)
|
||||
return 1;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -119,23 +119,23 @@ void __init bfin_relocate_l1_mem(void)
|
||||
/* Copy _stext_l1 to _etext_l1 to L1 instruction SRAM */
|
||||
dma_memcpy(_stext_l1, _l1_lma_start, l1_code_length);
|
||||
|
||||
l1_data_a_length = _ebss_l1 - _sdata_l1;
|
||||
l1_data_a_length = _sbss_l1 - _sdata_l1;
|
||||
if (l1_data_a_length > L1_DATA_A_LENGTH)
|
||||
panic("L1 Data SRAM Bank A Overflow\n");
|
||||
|
||||
/* Copy _sdata_l1 to _ebss_l1 to L1 data bank A SRAM */
|
||||
/* Copy _sdata_l1 to _sbss_l1 to L1 data bank A SRAM */
|
||||
dma_memcpy(_sdata_l1, _l1_lma_start + l1_code_length, l1_data_a_length);
|
||||
|
||||
l1_data_b_length = _ebss_b_l1 - _sdata_b_l1;
|
||||
l1_data_b_length = _sbss_b_l1 - _sdata_b_l1;
|
||||
if (l1_data_b_length > L1_DATA_B_LENGTH)
|
||||
panic("L1 Data SRAM Bank B Overflow\n");
|
||||
|
||||
/* Copy _sdata_b_l1 to _ebss_b_l1 to L1 data bank B SRAM */
|
||||
/* Copy _sdata_b_l1 to _sbss_b_l1 to L1 data bank B SRAM */
|
||||
dma_memcpy(_sdata_b_l1, _l1_lma_start + l1_code_length +
|
||||
l1_data_a_length, l1_data_b_length);
|
||||
|
||||
if (L2_LENGTH != 0) {
|
||||
l2_length = _ebss_l2 - _stext_l2;
|
||||
l2_length = _sbss_l2 - _stext_l2;
|
||||
if (l2_length > L2_LENGTH)
|
||||
panic("L2 SRAM Overflow\n");
|
||||
|
||||
@ -827,7 +827,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
printk(KERN_ERR "Warning: Compiled for Rev %d, but running on Rev %d\n",
|
||||
bfin_compiled_revid(), bfin_revid());
|
||||
}
|
||||
if (bfin_revid() <= CONFIG_BF_REV_MIN || bfin_revid() > CONFIG_BF_REV_MAX)
|
||||
if (bfin_revid() < CONFIG_BF_REV_MIN || bfin_revid() > CONFIG_BF_REV_MAX)
|
||||
printk(KERN_ERR "Warning: Unsupported Chip Revision ADSP-%s Rev 0.%d detected\n",
|
||||
CPU, bfin_revid());
|
||||
}
|
||||
|
@ -59,7 +59,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_VERBOSE_DEBUG
|
||||
#ifdef CONFIG_DEBUG_VERBOSE
|
||||
#define verbose_printk(fmt, arg...) \
|
||||
printk(fmt, ##arg)
|
||||
#else
|
||||
@ -147,9 +147,12 @@ static void decode_address(char *buf, unsigned long address)
|
||||
char *name = p->comm;
|
||||
struct file *file = vma->vm_file;
|
||||
|
||||
if (file)
|
||||
name = d_path(&file->f_path, _tmpbuf,
|
||||
if (file) {
|
||||
char *d_name = d_path(&file->f_path, _tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
if (!IS_ERR(d_name))
|
||||
name = d_name;
|
||||
}
|
||||
|
||||
/* FLAT does not have its text aligned to the start of
|
||||
* the map while FDPIC ELF does ...
|
||||
@ -571,7 +574,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
#endif
|
||||
panic("Kernel exception");
|
||||
} else {
|
||||
#ifdef CONFIG_VERBOSE_DEBUG
|
||||
#ifdef CONFIG_DEBUG_VERBOSE
|
||||
unsigned long *stack;
|
||||
/* Dump the user space stack */
|
||||
stack = (unsigned long *)rdusp();
|
||||
|
@ -25,9 +25,13 @@
|
||||
*/
|
||||
.macro do_flush flushins:req optflushins optnopins label
|
||||
|
||||
R2 = -L1_CACHE_BYTES;
|
||||
|
||||
/* start = (start & -L1_CACHE_BYTES) */
|
||||
R0 = R0 & R2;
|
||||
|
||||
/* end = ((end - 1) & -L1_CACHE_BYTES) + L1_CACHE_BYTES; */
|
||||
R1 += -1;
|
||||
R2 = -L1_CACHE_BYTES;
|
||||
R1 = R1 & R2;
|
||||
R1 += L1_CACHE_BYTES;
|
||||
|
||||
@ -63,7 +67,7 @@ ENDPROC(_blackfin_icache_flush_range)
|
||||
|
||||
/* Flush all cache lines assocoiated with this area of memory. */
|
||||
ENTRY(_blackfin_icache_dcache_flush_range)
|
||||
do_flush IFLUSH, FLUSH
|
||||
do_flush FLUSH, IFLUSH
|
||||
ENDPROC(_blackfin_icache_dcache_flush_range)
|
||||
|
||||
/* Throw away all D-cached data in specified region without any obligation to
|
||||
|
@ -72,13 +72,13 @@ unsigned int __bfin_cycles_mod;
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
static unsigned int bfin_getfreq(unsigned int cpu)
|
||||
static unsigned int bfin_getfreq_khz(unsigned int cpu)
|
||||
{
|
||||
/* The driver only support single cpu */
|
||||
if (cpu != 0)
|
||||
return -1;
|
||||
|
||||
return get_cclk();
|
||||
return get_cclk() / 1000;
|
||||
}
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ static int bfin_target(struct cpufreq_policy *policy,
|
||||
|
||||
cclk_hz = bfin_freq_table[index].frequency;
|
||||
|
||||
freqs.old = bfin_getfreq(0);
|
||||
freqs.old = bfin_getfreq_khz(0);
|
||||
freqs.new = cclk_hz;
|
||||
freqs.cpu = 0;
|
||||
|
||||
@ -137,8 +137,8 @@ static int __init __bfin_cpu_init(struct cpufreq_policy *policy)
|
||||
if (policy->cpu != 0)
|
||||
return -EINVAL;
|
||||
|
||||
cclk = get_cclk();
|
||||
sclk = get_sclk();
|
||||
cclk = get_cclk() / 1000;
|
||||
sclk = get_sclk() / 1000;
|
||||
|
||||
#if ANOMALY_05000273 || (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_DCACHE))
|
||||
min_cclk = sclk * 2;
|
||||
@ -152,7 +152,7 @@ static int __init __bfin_cpu_init(struct cpufreq_policy *policy)
|
||||
dpm_state_table[index].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
|
||||
dpm_state_table[index].tscale = (TIME_SCALE / (1 << csel)) - 1;
|
||||
|
||||
pr_debug("cpufreq: freq:%d csel:%d tscale:%d\n",
|
||||
pr_debug("cpufreq: freq:%d csel:0x%x tscale:%d\n",
|
||||
bfin_freq_table[index].frequency,
|
||||
dpm_state_table[index].csel,
|
||||
dpm_state_table[index].tscale);
|
||||
@ -173,7 +173,7 @@ static struct freq_attr *bfin_freq_attr[] = {
|
||||
static struct cpufreq_driver bfin_driver = {
|
||||
.verify = bfin_verify_speed,
|
||||
.target = bfin_target,
|
||||
.get = bfin_getfreq,
|
||||
.get = bfin_getfreq_khz,
|
||||
.init = __bfin_cpu_init,
|
||||
.name = "bfin cpufreq",
|
||||
.owner = THIS_MODULE,
|
||||
|
@ -277,7 +277,7 @@ ENTRY(_bfin_return_from_exception)
|
||||
p5.h = hi(ILAT);
|
||||
r6 = [p5];
|
||||
r7 = 0x20; /* Did I just cause anther HW error? */
|
||||
r7 = r7 & r1;
|
||||
r6 = r7 & r6;
|
||||
CC = R7 == R6;
|
||||
if CC JUMP _double_fault;
|
||||
#endif
|
||||
|
@ -183,10 +183,10 @@ static void __init l2_sram_init(void)
|
||||
return;
|
||||
}
|
||||
|
||||
free_l2_sram_head.next->paddr = (void *)L2_START +
|
||||
(_etext_l2 - _stext_l2) + (_edata_l2 - _sdata_l2);
|
||||
free_l2_sram_head.next->size = L2_LENGTH -
|
||||
(_etext_l2 - _stext_l2) + (_edata_l2 - _sdata_l2);
|
||||
free_l2_sram_head.next->paddr =
|
||||
(void *)L2_START + (_ebss_l2 - _stext_l2);
|
||||
free_l2_sram_head.next->size =
|
||||
L2_LENGTH - (_ebss_l2 - _stext_l2);
|
||||
free_l2_sram_head.next->pid = 0;
|
||||
free_l2_sram_head.next->next = NULL;
|
||||
|
||||
|
@ -226,7 +226,7 @@ extern long ia64_cmpxchg_called_with_bad_pointer (void);
|
||||
/************************************************/
|
||||
#define ia64_ssm IA64_INTRINSIC_MACRO(ssm)
|
||||
#define ia64_rsm IA64_INTRINSIC_MACRO(rsm)
|
||||
#define ia64_getreg IA64_INTRINSIC_API(getreg)
|
||||
#define ia64_getreg IA64_INTRINSIC_MACRO(getreg)
|
||||
#define ia64_setreg IA64_INTRINSIC_API(setreg)
|
||||
#define ia64_set_rr IA64_INTRINSIC_API(set_rr)
|
||||
#define ia64_get_rr IA64_INTRINSIC_API(get_rr)
|
||||
|
@ -78,6 +78,19 @@ extern unsigned long ia64_native_getreg_func(int regnum);
|
||||
ia64_native_rsm(mask); \
|
||||
} while (0)
|
||||
|
||||
/* returned ip value should be the one in the caller,
|
||||
* not in __paravirt_getreg() */
|
||||
#define paravirt_getreg(reg) \
|
||||
({ \
|
||||
unsigned long res; \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(reg)); \
|
||||
if ((reg) == _IA64_REG_IP) \
|
||||
res = ia64_native_getreg(_IA64_REG_IP); \
|
||||
else \
|
||||
res = pv_cpu_ops.getreg(reg); \
|
||||
res; \
|
||||
})
|
||||
|
||||
/******************************************************************************
|
||||
* replacement of hand written assembly codes.
|
||||
*/
|
||||
|
@ -499,6 +499,7 @@ GLOBAL_ENTRY(prefetch_stack)
|
||||
END(prefetch_stack)
|
||||
|
||||
GLOBAL_ENTRY(kernel_execve)
|
||||
rum psr.ac
|
||||
mov r15=__NR_execve // put syscall number in place
|
||||
break __BREAK_SYSCALL
|
||||
br.ret.sptk.many rp
|
||||
|
@ -260,7 +260,7 @@ start_ap:
|
||||
* Switch into virtual mode:
|
||||
*/
|
||||
movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH|IA64_PSR_BN \
|
||||
|IA64_PSR_DI)
|
||||
|IA64_PSR_DI|IA64_PSR_AC)
|
||||
;;
|
||||
mov cr.ipsr=r16
|
||||
movl r17=1f
|
||||
|
@ -1139,7 +1139,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
|
||||
return previous_current;
|
||||
|
||||
no_mod:
|
||||
printk(KERN_INFO "cpu %d, %s %s, original stack not modified\n",
|
||||
mprintk(KERN_INFO "cpu %d, %s %s, original stack not modified\n",
|
||||
smp_processor_id(), type, msg);
|
||||
return previous_current;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ ia64_native_getreg_func(int regnum)
|
||||
unsigned long res = -1;
|
||||
switch (regnum) {
|
||||
CASE_GET_REG(GP);
|
||||
CASE_GET_REG(IP);
|
||||
/*CASE_GET_REG(IP);*/ /* returned ip value shouldn't be constant */
|
||||
CASE_GET_REG(PSR);
|
||||
CASE_GET_REG(TP);
|
||||
CASE_GET_REG(SP);
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/iommu.h>
|
||||
|
||||
dma_addr_t bad_dma_address __read_mostly;
|
||||
EXPORT_SYMBOL(bad_dma_address);
|
||||
|
@ -20,6 +20,8 @@ if VIRTUALIZATION
|
||||
config KVM
|
||||
tristate "Kernel-based Virtual Machine (KVM) support"
|
||||
depends on HAVE_KVM && EXPERIMENTAL
|
||||
# for device assignment:
|
||||
depends on PCI
|
||||
select PREEMPT_NOTIFIERS
|
||||
select ANON_INODES
|
||||
---help---
|
||||
|
@ -673,16 +673,16 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
||||
|
||||
vcpu_load(vcpu);
|
||||
|
||||
if (vcpu->sigset_active)
|
||||
sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
|
||||
|
||||
if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) {
|
||||
kvm_vcpu_block(vcpu);
|
||||
clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
|
||||
vcpu_put(vcpu);
|
||||
return -EAGAIN;
|
||||
r = -EAGAIN;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (vcpu->sigset_active)
|
||||
sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
|
||||
|
||||
if (vcpu->mmio_needed) {
|
||||
memcpy(vcpu->mmio_data, kvm_run->mmio.data, 8);
|
||||
kvm_set_mmio_data(vcpu);
|
||||
@ -690,7 +690,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
||||
vcpu->mmio_needed = 0;
|
||||
}
|
||||
r = __vcpu_run(vcpu, kvm_run);
|
||||
|
||||
out:
|
||||
if (vcpu->sigset_active)
|
||||
sigprocmask(SIG_SETMASK, &sigsaved, NULL);
|
||||
|
||||
|
@ -384,6 +384,10 @@ static inline u64 __gpfn_is_io(u64 gpfn)
|
||||
#define MODE_IND(psr) \
|
||||
(((psr).it << 2) + ((psr).dt << 1) + (psr).rt)
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
#define _vmm_raw_spin_lock(x) do {}while(0)
|
||||
#define _vmm_raw_spin_unlock(x) do {}while(0)
|
||||
#else
|
||||
#define _vmm_raw_spin_lock(x) \
|
||||
do { \
|
||||
__u32 *ia64_spinlock_ptr = (__u32 *) (x); \
|
||||
@ -403,6 +407,7 @@ static inline u64 __gpfn_is_io(u64 gpfn)
|
||||
do { barrier(); \
|
||||
((spinlock_t *)x)->raw_lock.lock = 0; } \
|
||||
while (0)
|
||||
#endif
|
||||
|
||||
void vmm_spin_lock(spinlock_t *lock);
|
||||
void vmm_spin_unlock(spinlock_t *lock);
|
||||
|
@ -58,7 +58,7 @@ __HCALL2(xen_set_rr, HYPERPRIVOP_SET_RR)
|
||||
__HCALL2(xen_set_kr, HYPERPRIVOP_SET_KR)
|
||||
|
||||
#ifdef CONFIG_IA32_SUPPORT
|
||||
__HCALL1(xen_get_eflag, HYPERPRIVOP_GET_EFLAG)
|
||||
__HCALL0(xen_get_eflag, HYPERPRIVOP_GET_EFLAG)
|
||||
__HCALL1(xen_set_eflag, HYPERPRIVOP_SET_EFLAG) // refer SDM vol1 3.1.8
|
||||
#endif /* CONFIG_IA32_SUPPORT */
|
||||
|
||||
|
@ -133,7 +133,7 @@ void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
|
||||
{
|
||||
int i;
|
||||
|
||||
BUG_ON(IRQ_USER + cnt >= NR_IRQS);
|
||||
BUG_ON(IRQ_USER + cnt > NR_IRQS);
|
||||
m68k_first_user_vec = vec;
|
||||
for (i = 0; i < cnt; i++)
|
||||
irq_controller[IRQ_USER + i] = &user_irq_controller;
|
||||
|
@ -84,5 +84,7 @@ extern void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned
|
||||
extern unsigned get_434_reg(unsigned reg_offs);
|
||||
extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask);
|
||||
extern unsigned char get_latch_u5(void);
|
||||
extern void rb532_gpio_set_ilevel(int bit, unsigned gpio);
|
||||
extern void rb532_gpio_set_istat(int bit, unsigned gpio);
|
||||
|
||||
#endif /* _RC32434_GPIO_H_ */
|
||||
|
@ -40,12 +40,14 @@
|
||||
#define BTCS 0x010040
|
||||
#define BTCOMPARE 0x010044
|
||||
#define GPIOBASE 0x050000
|
||||
#define GPIOCFG 0x050004
|
||||
#define GPIOD 0x050008
|
||||
#define GPIOILEVEL 0x05000C
|
||||
#define GPIOISTAT 0x050010
|
||||
#define GPIONMIEN 0x050014
|
||||
#define IMASK6 0x038038
|
||||
/* Offsets relative to GPIOBASE */
|
||||
#define GPIOFUNC 0x00
|
||||
#define GPIOCFG 0x04
|
||||
#define GPIOD 0x08
|
||||
#define GPIOILEVEL 0x0C
|
||||
#define GPIOISTAT 0x10
|
||||
#define GPIONMIEN 0x14
|
||||
#define IMASK6 0x38
|
||||
#define LO_WPX (1 << 0)
|
||||
#define LO_ALE (1 << 1)
|
||||
#define LO_CLE (1 << 2)
|
||||
|
@ -63,7 +63,7 @@ static inline int mips_clockevent_init(void)
|
||||
/*
|
||||
* Initialize the count register as a clocksource
|
||||
*/
|
||||
#ifdef CONFIG_CEVT_R4K
|
||||
#ifdef CONFIG_CSRC_R4K
|
||||
extern int init_mips_clocksource(void);
|
||||
#else
|
||||
static inline int init_mips_clocksource(void)
|
||||
|
@ -27,7 +27,7 @@ int __init init_mips_clocksource(void)
|
||||
if (!cpu_has_counter || !mips_hpt_frequency)
|
||||
return -ENXIO;
|
||||
|
||||
/* Calclate a somewhat reasonable rating value */
|
||||
/* Calculate a somewhat reasonable rating value */
|
||||
clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
|
||||
|
||||
clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
|
||||
|
@ -161,7 +161,7 @@ static inline int __init indy_sc_probe(void)
|
||||
|
||||
/* XXX Check with wje if the Indy caches can differenciate between
|
||||
writeback + invalidate and just invalidate. */
|
||||
struct bcache_ops indy_sc_ops = {
|
||||
static struct bcache_ops indy_sc_ops = {
|
||||
.bc_enable = indy_sc_enable,
|
||||
.bc_disable = indy_sc_disable,
|
||||
.bc_wback_inv = indy_sc_wback_invalidate,
|
||||
|
@ -22,9 +22,9 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
#include <asm-mips/addrspace.h>
|
||||
#include <asm-mips/mips-boards/launch.h>
|
||||
#include <asm-mips/mipsmtregs.h>
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/mips-boards/launch.h>
|
||||
#include <asm/mipsmtregs.h>
|
||||
|
||||
int amon_cpu_avail(int cpu)
|
||||
{
|
||||
|
@ -118,7 +118,7 @@ static struct platform_device cf_slot0 = {
|
||||
/* Resources and device for NAND */
|
||||
static int rb532_dev_ready(struct mtd_info *mtd)
|
||||
{
|
||||
return readl(IDT434_REG_BASE + GPIOD) & GPIO_RDY;
|
||||
return gpio_get_value(GPIO_RDY);
|
||||
}
|
||||
|
||||
static void rb532_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
|
||||
|
@ -39,10 +39,6 @@
|
||||
struct rb532_gpio_chip {
|
||||
struct gpio_chip chip;
|
||||
void __iomem *regbase;
|
||||
void (*set_int_level)(struct gpio_chip *chip, unsigned offset, int value);
|
||||
int (*get_int_level)(struct gpio_chip *chip, unsigned offset);
|
||||
void (*set_int_status)(struct gpio_chip *chip, unsigned offset, int value);
|
||||
int (*get_int_status)(struct gpio_chip *chip, unsigned offset);
|
||||
};
|
||||
|
||||
struct mpmc_device dev3;
|
||||
@ -111,15 +107,47 @@ unsigned char get_latch_u5(void)
|
||||
}
|
||||
EXPORT_SYMBOL(get_latch_u5);
|
||||
|
||||
/* rb532_set_bit - sanely set a bit
|
||||
*
|
||||
* bitval: new value for the bit
|
||||
* offset: bit index in the 4 byte address range
|
||||
* ioaddr: 4 byte aligned address being altered
|
||||
*/
|
||||
static inline void rb532_set_bit(unsigned bitval,
|
||||
unsigned offset, void __iomem *ioaddr)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 val;
|
||||
|
||||
bitval = !!bitval; /* map parameter to {0,1} */
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
val = readl(ioaddr);
|
||||
val &= ~( ~bitval << offset ); /* unset bit if bitval == 0 */
|
||||
val |= ( bitval << offset ); /* set bit if bitval == 1 */
|
||||
writel(val, ioaddr);
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/* rb532_get_bit - read a bit
|
||||
*
|
||||
* returns the boolean state of the bit, which may be > 1
|
||||
*/
|
||||
static inline int rb532_get_bit(unsigned offset, void __iomem *ioaddr)
|
||||
{
|
||||
return (readl(ioaddr) & (1 << offset));
|
||||
}
|
||||
|
||||
/*
|
||||
* Return GPIO level */
|
||||
static int rb532_gpio_get(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
u32 mask = 1 << offset;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
return readl(gpch->regbase + GPIOD) & mask;
|
||||
return rb532_get_bit(offset, gpch->regbase + GPIOD);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -128,23 +156,10 @@ static int rb532_gpio_get(struct gpio_chip *chip, unsigned offset)
|
||||
static void rb532_gpio_set(struct gpio_chip *chip,
|
||||
unsigned offset, int value)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 mask = 1 << offset;
|
||||
u32 tmp;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
void __iomem *gpvr;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
gpvr = gpch->regbase + GPIOD;
|
||||
|
||||
local_irq_save(flags);
|
||||
tmp = readl(gpvr);
|
||||
if (value)
|
||||
tmp |= mask;
|
||||
else
|
||||
tmp &= ~mask;
|
||||
writel(tmp, gpvr);
|
||||
local_irq_restore(flags);
|
||||
rb532_set_bit(value, offset, gpch->regbase + GPIOD);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -152,21 +167,14 @@ static void rb532_gpio_set(struct gpio_chip *chip,
|
||||
*/
|
||||
static int rb532_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 mask = 1 << offset;
|
||||
u32 value;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
void __iomem *gpdr;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
gpdr = gpch->regbase + GPIOCFG;
|
||||
|
||||
local_irq_save(flags);
|
||||
value = readl(gpdr);
|
||||
value &= ~mask;
|
||||
writel(value, gpdr);
|
||||
local_irq_restore(flags);
|
||||
if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
|
||||
return 1; /* alternate function, GPIOCFG is ignored */
|
||||
|
||||
rb532_set_bit(0, offset, gpch->regbase + GPIOCFG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -176,99 +184,20 @@ static int rb532_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
|
||||
static int rb532_gpio_direction_output(struct gpio_chip *chip,
|
||||
unsigned offset, int value)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 mask = 1 << offset;
|
||||
u32 tmp;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
void __iomem *gpdr;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
writel(mask, gpch->regbase + GPIOD);
|
||||
gpdr = gpch->regbase + GPIOCFG;
|
||||
|
||||
local_irq_save(flags);
|
||||
tmp = readl(gpdr);
|
||||
tmp |= mask;
|
||||
writel(tmp, gpdr);
|
||||
local_irq_restore(flags);
|
||||
if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
|
||||
return 1; /* alternate function, GPIOCFG is ignored */
|
||||
|
||||
/* set the initial output value */
|
||||
rb532_set_bit(value, offset, gpch->regbase + GPIOD);
|
||||
|
||||
rb532_set_bit(1, offset, gpch->regbase + GPIOCFG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the GPIO interrupt level
|
||||
*/
|
||||
static void rb532_gpio_set_int_level(struct gpio_chip *chip,
|
||||
unsigned offset, int value)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 mask = 1 << offset;
|
||||
u32 tmp;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
void __iomem *gpil;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
gpil = gpch->regbase + GPIOILEVEL;
|
||||
|
||||
local_irq_save(flags);
|
||||
tmp = readl(gpil);
|
||||
if (value)
|
||||
tmp |= mask;
|
||||
else
|
||||
tmp &= ~mask;
|
||||
writel(tmp, gpil);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the GPIO interrupt level
|
||||
*/
|
||||
static int rb532_gpio_get_int_level(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
u32 mask = 1 << offset;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
return readl(gpch->regbase + GPIOILEVEL) & mask;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the GPIO interrupt status
|
||||
*/
|
||||
static void rb532_gpio_set_int_status(struct gpio_chip *chip,
|
||||
unsigned offset, int value)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 mask = 1 << offset;
|
||||
u32 tmp;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
void __iomem *gpis;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
gpis = gpch->regbase + GPIOISTAT;
|
||||
|
||||
local_irq_save(flags);
|
||||
tmp = readl(gpis);
|
||||
if (value)
|
||||
tmp |= mask;
|
||||
else
|
||||
tmp &= ~mask;
|
||||
writel(tmp, gpis);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the GPIO interrupt status
|
||||
*/
|
||||
static int rb532_gpio_get_int_status(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
u32 mask = 1 << offset;
|
||||
struct rb532_gpio_chip *gpch;
|
||||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
return readl(gpch->regbase + GPIOISTAT) & mask;
|
||||
}
|
||||
|
||||
static struct rb532_gpio_chip rb532_gpio_chip[] = {
|
||||
[0] = {
|
||||
.chip = {
|
||||
@ -280,13 +209,35 @@ static struct rb532_gpio_chip rb532_gpio_chip[] = {
|
||||
.base = 0,
|
||||
.ngpio = 32,
|
||||
},
|
||||
.get_int_level = rb532_gpio_get_int_level,
|
||||
.set_int_level = rb532_gpio_set_int_level,
|
||||
.get_int_status = rb532_gpio_get_int_status,
|
||||
.set_int_status = rb532_gpio_set_int_status,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Set GPIO interrupt level
|
||||
*/
|
||||
void rb532_gpio_set_ilevel(int bit, unsigned gpio)
|
||||
{
|
||||
rb532_set_bit(bit, gpio, rb532_gpio_chip->regbase + GPIOILEVEL);
|
||||
}
|
||||
EXPORT_SYMBOL(rb532_gpio_set_ilevel);
|
||||
|
||||
/*
|
||||
* Set GPIO interrupt status
|
||||
*/
|
||||
void rb532_gpio_set_istat(int bit, unsigned gpio)
|
||||
{
|
||||
rb532_set_bit(bit, gpio, rb532_gpio_chip->regbase + GPIOISTAT);
|
||||
}
|
||||
EXPORT_SYMBOL(rb532_gpio_set_istat);
|
||||
|
||||
/*
|
||||
* Configure GPIO alternate function
|
||||
*/
|
||||
static void rb532_gpio_set_func(int bit, unsigned gpio)
|
||||
{
|
||||
rb532_set_bit(bit, gpio, rb532_gpio_chip->regbase + GPIOFUNC);
|
||||
}
|
||||
|
||||
int __init rb532_gpio_init(void)
|
||||
{
|
||||
struct resource *r;
|
||||
@ -310,9 +261,11 @@ int __init rb532_gpio_init(void)
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
/* Set the interrupt status and level for the CF pin */
|
||||
rb532_gpio_set_int_level(&rb532_gpio_chip->chip, CF_GPIO_NUM, 1);
|
||||
rb532_gpio_set_int_status(&rb532_gpio_chip->chip, CF_GPIO_NUM, 0);
|
||||
/* configure CF_GPIO_NUM as CFRDY IRQ source */
|
||||
rb532_gpio_set_func(0, CF_GPIO_NUM);
|
||||
rb532_gpio_direction_input(&rb532_gpio_chip->chip, CF_GPIO_NUM);
|
||||
rb532_gpio_set_ilevel(1, CF_GPIO_NUM);
|
||||
rb532_gpio_set_istat(0, CF_GPIO_NUM);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -15,6 +15,15 @@ config DEBUG_DECOMPRESS_KERNEL
|
||||
decompressing Linux seeing "Uncompressing Linux... " and
|
||||
"Ok, booting the kernel.\n" on console.
|
||||
|
||||
config TEST_MISALIGNMENT_HANDLER
|
||||
bool "Run tests on the misalignment handler"
|
||||
depends on DEBUG_KERNEL
|
||||
default n
|
||||
help
|
||||
If you say Y here the kernel will execute a list of misaligned memory
|
||||
accesses to make sure the misalignment handler deals them with
|
||||
correctly. If it does not, the kernel will throw a BUG.
|
||||
|
||||
config KPROBES
|
||||
bool "Kprobes"
|
||||
depends on DEBUG_KERNEL
|
||||
|
@ -37,26 +37,22 @@
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#if 0
|
||||
#define kdebug(FMT, ...) printk(KERN_DEBUG FMT, ##__VA_ARGS__)
|
||||
#define kdebug(FMT, ...) printk(KERN_DEBUG "MISALIGN: "FMT"\n", ##__VA_ARGS__)
|
||||
#else
|
||||
#define kdebug(FMT, ...) do {} while (0)
|
||||
#endif
|
||||
|
||||
static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
unsigned opcode, unsigned disp,
|
||||
void **_address, unsigned long **_postinc);
|
||||
static int misalignment_addr(unsigned long *registers, unsigned long sp,
|
||||
unsigned params, unsigned opcode,
|
||||
unsigned long disp,
|
||||
void **_address, unsigned long **_postinc,
|
||||
unsigned long *_inc);
|
||||
|
||||
static int misalignment_reg(unsigned long *registers, unsigned params,
|
||||
unsigned opcode, unsigned disp,
|
||||
unsigned opcode, unsigned long disp,
|
||||
unsigned long **_register);
|
||||
|
||||
static inline unsigned int_log2(unsigned x)
|
||||
{
|
||||
unsigned y;
|
||||
asm("bsch %1,%0" : "=r"(y) : "r"(x), "0"(0));
|
||||
return y;
|
||||
}
|
||||
#define log2(x) int_log2(x)
|
||||
static void misalignment_MOV_Lcc(struct pt_regs *regs, uint32_t opcode);
|
||||
|
||||
static const unsigned Dreg_index[] = {
|
||||
REG_D0 >> 2, REG_D1 >> 2, REG_D2 >> 2, REG_D3 >> 2
|
||||
@ -86,9 +82,10 @@ enum format_id {
|
||||
FMT_D7,
|
||||
FMT_D8,
|
||||
FMT_D9,
|
||||
FMT_D10,
|
||||
};
|
||||
|
||||
struct {
|
||||
static const struct {
|
||||
u_int8_t opsz, dispsz;
|
||||
} format_tbl[16] = {
|
||||
[FMT_S0] = { 8, 0 },
|
||||
@ -103,6 +100,7 @@ struct {
|
||||
[FMT_D7] = { 24, 8 },
|
||||
[FMT_D8] = { 24, 24 },
|
||||
[FMT_D9] = { 24, 32 },
|
||||
[FMT_D10] = { 32, 0 },
|
||||
};
|
||||
|
||||
enum value_id {
|
||||
@ -128,9 +126,14 @@ enum value_id {
|
||||
SD24, /* 24-bit signed displacement */
|
||||
SIMM4_2, /* 4-bit signed displacement in opcode bits 4-7 */
|
||||
SIMM8, /* 8-bit signed immediate */
|
||||
IMM8, /* 8-bit unsigned immediate */
|
||||
IMM16, /* 16-bit unsigned immediate */
|
||||
IMM24, /* 24-bit unsigned immediate */
|
||||
IMM32, /* 32-bit unsigned immediate */
|
||||
IMM32_HIGH8, /* 32-bit unsigned immediate, high 8-bits in opcode */
|
||||
IMM32_HIGH8, /* 32-bit unsigned immediate, LSB in opcode */
|
||||
|
||||
IMM32_MEM, /* 32-bit unsigned displacement */
|
||||
IMM32_HIGH8_MEM, /* 32-bit unsigned displacement, LSB in opcode */
|
||||
|
||||
DN0 = DM0,
|
||||
DN1 = DM1,
|
||||
@ -149,7 +152,7 @@ enum value_id {
|
||||
};
|
||||
|
||||
struct mn10300_opcode {
|
||||
const char *name;
|
||||
const char name[8];
|
||||
u_int32_t opcode;
|
||||
u_int32_t opmask;
|
||||
unsigned exclusion;
|
||||
@ -185,6 +188,10 @@ struct mn10300_opcode {
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
static const struct mn10300_opcode mn10300_opcodes[] = {
|
||||
{ "mov", 0x4200, 0xf300, 0, FMT_S1, 0, {DM1, MEM2(IMM8, SP)}},
|
||||
{ "mov", 0x4300, 0xf300, 0, FMT_S1, 0, {AM1, MEM2(IMM8, SP)}},
|
||||
{ "mov", 0x5800, 0xfc00, 0, FMT_S1, 0, {MEM2(IMM8, SP), DN0}},
|
||||
{ "mov", 0x5c00, 0xfc00, 0, FMT_S1, 0, {MEM2(IMM8, SP), AN0}},
|
||||
{ "mov", 0x60, 0xf0, 0, FMT_S0, 0, {DM1, MEM(AN0)}},
|
||||
{ "mov", 0x70, 0xf0, 0, FMT_S0, 0, {MEM(AM0), DN1}},
|
||||
{ "mov", 0xf000, 0xfff0, 0, FMT_D0, 0, {MEM(AM0), AN1}},
|
||||
@ -197,8 +204,6 @@ static const struct mn10300_opcode mn10300_opcodes[] = {
|
||||
{ "mov", 0xf81000, 0xfff000, 0, FMT_D1, 0, {DM1, MEM2(SD8, AN0)}},
|
||||
{ "mov", 0xf82000, 0xfff000, 0, FMT_D1, 0, {MEM2(SD8,AM0), AN1}},
|
||||
{ "mov", 0xf83000, 0xfff000, 0, FMT_D1, 0, {AM1, MEM2(SD8, AN0)}},
|
||||
{ "mov", 0xf8f000, 0xfffc00, 0, FMT_D1, AM33, {MEM2(SD8, AM0), SP}},
|
||||
{ "mov", 0xf8f400, 0xfffc00, 0, FMT_D1, AM33, {SP, MEM2(SD8, AN0)}},
|
||||
{ "mov", 0xf90a00, 0xffff00, 0, FMT_D6, AM33, {MEM(RM0), RN2}},
|
||||
{ "mov", 0xf91a00, 0xffff00, 0, FMT_D6, AM33, {RM2, MEM(RN0)}},
|
||||
{ "mov", 0xf96a00, 0xffff00, 0x12, FMT_D6, AM33, {MEMINC(RM0), RN2}},
|
||||
@ -207,24 +212,46 @@ static const struct mn10300_opcode mn10300_opcodes[] = {
|
||||
{ "mov", 0xfa100000, 0xfff00000, 0, FMT_D2, 0, {DM1, MEM2(SD16, AN0)}},
|
||||
{ "mov", 0xfa200000, 0xfff00000, 0, FMT_D2, 0, {MEM2(SD16, AM0), AN1}},
|
||||
{ "mov", 0xfa300000, 0xfff00000, 0, FMT_D2, 0, {AM1, MEM2(SD16, AN0)}},
|
||||
{ "mov", 0xfa900000, 0xfff30000, 0, FMT_D2, 0, {AM1, MEM2(IMM16, SP)}},
|
||||
{ "mov", 0xfa910000, 0xfff30000, 0, FMT_D2, 0, {DM1, MEM2(IMM16, SP)}},
|
||||
{ "mov", 0xfab00000, 0xfffc0000, 0, FMT_D2, 0, {MEM2(IMM16, SP), AN0}},
|
||||
{ "mov", 0xfab40000, 0xfffc0000, 0, FMT_D2, 0, {MEM2(IMM16, SP), DN0}},
|
||||
{ "mov", 0xfb0a0000, 0xffff0000, 0, FMT_D7, AM33, {MEM2(SD8, RM0), RN2}},
|
||||
{ "mov", 0xfb1a0000, 0xffff0000, 0, FMT_D7, AM33, {RM2, MEM2(SD8, RN0)}},
|
||||
{ "mov", 0xfb6a0000, 0xffff0000, 0x22, FMT_D7, AM33, {MEMINC2 (RM0, SIMM8), RN2}},
|
||||
{ "mov", 0xfb7a0000, 0xffff0000, 0, FMT_D7, AM33, {RM2, MEMINC2 (RN0, SIMM8)}},
|
||||
{ "mov", 0xfb8a0000, 0xffff0f00, 0, FMT_D7, AM33, {MEM2(IMM8, SP), RN2}},
|
||||
{ "mov", 0xfb8e0000, 0xffff000f, 0, FMT_D7, AM33, {MEM2(RI, RM0), RD2}},
|
||||
{ "mov", 0xfb9a0000, 0xffff0f00, 0, FMT_D7, AM33, {RM2, MEM2(IMM8, SP)}},
|
||||
{ "mov", 0xfb9e0000, 0xffff000f, 0, FMT_D7, AM33, {RD2, MEM2(RI, RN0)}},
|
||||
{ "mov", 0xfc000000, 0xfff00000, 0, FMT_D4, 0, {MEM2(IMM32,AM0), DN1}},
|
||||
{ "mov", 0xfc100000, 0xfff00000, 0, FMT_D4, 0, {DM1, MEM2(IMM32,AN0)}},
|
||||
{ "mov", 0xfc200000, 0xfff00000, 0, FMT_D4, 0, {MEM2(IMM32,AM0), AN1}},
|
||||
{ "mov", 0xfc300000, 0xfff00000, 0, FMT_D4, 0, {AM1, MEM2(IMM32,AN0)}},
|
||||
{ "mov", 0xfc800000, 0xfff30000, 0, FMT_D4, 0, {AM1, MEM(IMM32_MEM)}},
|
||||
{ "mov", 0xfc810000, 0xfff30000, 0, FMT_D4, 0, {DM1, MEM(IMM32_MEM)}},
|
||||
{ "mov", 0xfc900000, 0xfff30000, 0, FMT_D4, 0, {AM1, MEM2(IMM32, SP)}},
|
||||
{ "mov", 0xfc910000, 0xfff30000, 0, FMT_D4, 0, {DM1, MEM2(IMM32, SP)}},
|
||||
{ "mov", 0xfca00000, 0xfffc0000, 0, FMT_D4, 0, {MEM(IMM32_MEM), AN0}},
|
||||
{ "mov", 0xfca40000, 0xfffc0000, 0, FMT_D4, 0, {MEM(IMM32_MEM), DN0}},
|
||||
{ "mov", 0xfcb00000, 0xfffc0000, 0, FMT_D4, 0, {MEM2(IMM32, SP), AN0}},
|
||||
{ "mov", 0xfcb40000, 0xfffc0000, 0, FMT_D4, 0, {MEM2(IMM32, SP), DN0}},
|
||||
{ "mov", 0xfd0a0000, 0xffff0000, 0, FMT_D8, AM33, {MEM2(SD24, RM0), RN2}},
|
||||
{ "mov", 0xfd1a0000, 0xffff0000, 0, FMT_D8, AM33, {RM2, MEM2(SD24, RN0)}},
|
||||
{ "mov", 0xfd6a0000, 0xffff0000, 0x22, FMT_D8, AM33, {MEMINC2 (RM0, IMM24), RN2}},
|
||||
{ "mov", 0xfd7a0000, 0xffff0000, 0, FMT_D8, AM33, {RM2, MEMINC2 (RN0, IMM24)}},
|
||||
{ "mov", 0xfd8a0000, 0xffff0f00, 0, FMT_D8, AM33, {MEM2(IMM24, SP), RN2}},
|
||||
{ "mov", 0xfd9a0000, 0xffff0f00, 0, FMT_D8, AM33, {RM2, MEM2(IMM24, SP)}},
|
||||
{ "mov", 0xfe0a0000, 0xffff0000, 0, FMT_D9, AM33, {MEM2(IMM32_HIGH8,RM0), RN2}},
|
||||
{ "mov", 0xfe0a0000, 0xffff0000, 0, FMT_D9, AM33, {MEM2(IMM32_HIGH8,RM0), RN2}},
|
||||
{ "mov", 0xfe0e0000, 0xffff0f00, 0, FMT_D9, AM33, {MEM(IMM32_HIGH8_MEM), RN2}},
|
||||
{ "mov", 0xfe1a0000, 0xffff0000, 0, FMT_D9, AM33, {RM2, MEM2(IMM32_HIGH8, RN0)}},
|
||||
{ "mov", 0xfe1a0000, 0xffff0000, 0, FMT_D9, AM33, {RM2, MEM2(IMM32_HIGH8, RN0)}},
|
||||
{ "mov", 0xfe1e0000, 0xffff0f00, 0, FMT_D9, AM33, {RM2, MEM(IMM32_HIGH8_MEM)}},
|
||||
{ "mov", 0xfe6a0000, 0xffff0000, 0x22, FMT_D9, AM33, {MEMINC2 (RM0, IMM32_HIGH8), RN2}},
|
||||
{ "mov", 0xfe7a0000, 0xffff0000, 0, FMT_D9, AM33, {RN2, MEMINC2 (RM0, IMM32_HIGH8)}},
|
||||
{ "mov", 0xfe8a0000, 0xffff0f00, 0, FMT_D9, AM33, {MEM2(IMM32_HIGH8, SP), RN2}},
|
||||
{ "mov", 0xfe9a0000, 0xffff0f00, 0, FMT_D9, AM33, {RM2, MEM2(IMM32_HIGH8, SP)}},
|
||||
|
||||
{ "movhu", 0xf060, 0xfff0, 0, FMT_D0, 0, {MEM(AM0), DN1}},
|
||||
{ "movhu", 0xf070, 0xfff0, 0, FMT_D0, 0, {DM1, MEM(AN0)}},
|
||||
@ -232,29 +259,58 @@ static const struct mn10300_opcode mn10300_opcodes[] = {
|
||||
{ "movhu", 0xf4c0, 0xffc0, 0, FMT_D0, 0, {DM2, MEM2(DI, AN0)}},
|
||||
{ "movhu", 0xf86000, 0xfff000, 0, FMT_D1, 0, {MEM2(SD8, AM0), DN1}},
|
||||
{ "movhu", 0xf87000, 0xfff000, 0, FMT_D1, 0, {DM1, MEM2(SD8, AN0)}},
|
||||
{ "movhu", 0xf89300, 0xfff300, 0, FMT_D1, 0, {DM1, MEM2(IMM8, SP)}},
|
||||
{ "movhu", 0xf8bc00, 0xfffc00, 0, FMT_D1, 0, {MEM2(IMM8, SP), DN0}},
|
||||
{ "movhu", 0xf94a00, 0xffff00, 0, FMT_D6, AM33, {MEM(RM0), RN2}},
|
||||
{ "movhu", 0xf95a00, 0xffff00, 0, FMT_D6, AM33, {RM2, MEM(RN0)}},
|
||||
{ "movhu", 0xf9ea00, 0xffff00, 0x12, FMT_D6, AM33, {MEMINC(RM0), RN2}},
|
||||
{ "movhu", 0xf9fa00, 0xffff00, 0, FMT_D6, AM33, {RM2, MEMINC(RN0)}},
|
||||
{ "movhu", 0xfa600000, 0xfff00000, 0, FMT_D2, 0, {MEM2(SD16, AM0), DN1}},
|
||||
{ "movhu", 0xfa700000, 0xfff00000, 0, FMT_D2, 0, {DM1, MEM2(SD16, AN0)}},
|
||||
{ "movhu", 0xfa930000, 0xfff30000, 0, FMT_D2, 0, {DM1, MEM2(IMM16, SP)}},
|
||||
{ "movhu", 0xfabc0000, 0xfffc0000, 0, FMT_D2, 0, {MEM2(IMM16, SP), DN0}},
|
||||
{ "movhu", 0xfb4a0000, 0xffff0000, 0, FMT_D7, AM33, {MEM2(SD8, RM0), RN2}},
|
||||
{ "movhu", 0xfb5a0000, 0xffff0000, 0, FMT_D7, AM33, {RM2, MEM2(SD8, RN0)}},
|
||||
{ "movhu", 0xfbca0000, 0xffff0f00, 0, FMT_D7, AM33, {MEM2(IMM8, SP), RN2}},
|
||||
{ "movhu", 0xfbce0000, 0xffff000f, 0, FMT_D7, AM33, {MEM2(RI, RM0), RD2}},
|
||||
{ "movhu", 0xfbda0000, 0xffff0f00, 0, FMT_D7, AM33, {RM2, MEM2(IMM8, SP)}},
|
||||
{ "movhu", 0xfbde0000, 0xffff000f, 0, FMT_D7, AM33, {RD2, MEM2(RI, RN0)}},
|
||||
{ "movhu", 0xfbea0000, 0xffff0000, 0x22, FMT_D7, AM33, {MEMINC2 (RM0, SIMM8), RN2}},
|
||||
{ "movhu", 0xfbfa0000, 0xffff0000, 0, FMT_D7, AM33, {RM2, MEMINC2 (RN0, SIMM8)}},
|
||||
{ "movhu", 0xfc600000, 0xfff00000, 0, FMT_D4, 0, {MEM2(IMM32,AM0), DN1}},
|
||||
{ "movhu", 0xfc700000, 0xfff00000, 0, FMT_D4, 0, {DM1, MEM2(IMM32,AN0)}},
|
||||
{ "movhu", 0xfc830000, 0xfff30000, 0, FMT_D4, 0, {DM1, MEM(IMM32_MEM)}},
|
||||
{ "movhu", 0xfc930000, 0xfff30000, 0, FMT_D4, 0, {DM1, MEM2(IMM32, SP)}},
|
||||
{ "movhu", 0xfcac0000, 0xfffc0000, 0, FMT_D4, 0, {MEM(IMM32_MEM), DN0}},
|
||||
{ "movhu", 0xfcbc0000, 0xfffc0000, 0, FMT_D4, 0, {MEM2(IMM32, SP), DN0}},
|
||||
{ "movhu", 0xfd4a0000, 0xffff0000, 0, FMT_D8, AM33, {MEM2(SD24, RM0), RN2}},
|
||||
{ "movhu", 0xfd5a0000, 0xffff0000, 0, FMT_D8, AM33, {RM2, MEM2(SD24, RN0)}},
|
||||
{ "movhu", 0xfdca0000, 0xffff0f00, 0, FMT_D8, AM33, {MEM2(IMM24, SP), RN2}},
|
||||
{ "movhu", 0xfdda0000, 0xffff0f00, 0, FMT_D8, AM33, {RM2, MEM2(IMM24, SP)}},
|
||||
{ "movhu", 0xfdea0000, 0xffff0000, 0x22, FMT_D8, AM33, {MEMINC2 (RM0, IMM24), RN2}},
|
||||
{ "movhu", 0xfdfa0000, 0xffff0000, 0, FMT_D8, AM33, {RM2, MEMINC2 (RN0, IMM24)}},
|
||||
{ "movhu", 0xfe4a0000, 0xffff0000, 0, FMT_D9, AM33, {MEM2(IMM32_HIGH8,RM0), RN2}},
|
||||
{ "movhu", 0xfe4e0000, 0xffff0f00, 0, FMT_D9, AM33, {MEM(IMM32_HIGH8_MEM), RN2}},
|
||||
{ "movhu", 0xfe5a0000, 0xffff0000, 0, FMT_D9, AM33, {RM2, MEM2(IMM32_HIGH8, RN0)}},
|
||||
{ "movhu", 0xfe5e0000, 0xffff0f00, 0, FMT_D9, AM33, {RM2, MEM(IMM32_HIGH8_MEM)}},
|
||||
{ "movhu", 0xfeca0000, 0xffff0f00, 0, FMT_D9, AM33, {MEM2(IMM32_HIGH8, SP), RN2}},
|
||||
{ "movhu", 0xfeda0000, 0xffff0f00, 0, FMT_D9, AM33, {RM2, MEM2(IMM32_HIGH8, SP)}},
|
||||
{ "movhu", 0xfeea0000, 0xffff0000, 0x22, FMT_D9, AM33, {MEMINC2 (RM0, IMM32_HIGH8), RN2}},
|
||||
{ "movhu", 0xfefa0000, 0xffff0000, 0, FMT_D9, AM33, {RN2, MEMINC2 (RM0, IMM32_HIGH8)}},
|
||||
{ 0, 0, 0, 0, 0, 0, {0}},
|
||||
|
||||
{ "mov_llt", 0xf7e00000, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lgt", 0xf7e00001, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lge", 0xf7e00002, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lle", 0xf7e00003, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lcs", 0xf7e00004, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lhi", 0xf7e00005, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lcc", 0xf7e00006, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lls", 0xf7e00007, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_leq", 0xf7e00008, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lne", 0xf7e00009, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
{ "mov_lra", 0xf7e0000a, 0xffff000f, 0x22, FMT_D10, AM33, {MEMINC2 (RN4,SIMM4_2), RM6}},
|
||||
|
||||
{ "", 0, 0, 0, 0, 0, {0}},
|
||||
};
|
||||
|
||||
/*
|
||||
@ -265,18 +321,21 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code)
|
||||
const struct exception_table_entry *fixup;
|
||||
const struct mn10300_opcode *pop;
|
||||
unsigned long *registers = (unsigned long *) regs;
|
||||
unsigned long data, *store, *postinc;
|
||||
unsigned long data, *store, *postinc, disp, inc, sp;
|
||||
mm_segment_t seg;
|
||||
siginfo_t info;
|
||||
uint32_t opcode, disp, noc, xo, xm;
|
||||
uint8_t *pc, byte;
|
||||
uint32_t opcode, noc, xo, xm;
|
||||
uint8_t *pc, byte, datasz;
|
||||
void *address;
|
||||
unsigned tmp, npop;
|
||||
unsigned tmp, npop, dispsz, loop;
|
||||
|
||||
kdebug("MISALIGN at %lx\n", regs->pc);
|
||||
/* we don't fix up userspace misalignment faults */
|
||||
if (user_mode(regs))
|
||||
goto bus_error;
|
||||
|
||||
if (in_interrupt())
|
||||
die("Misalignment trap in interrupt context", regs, code);
|
||||
sp = (unsigned long) regs + sizeof(*regs);
|
||||
|
||||
kdebug("==>misalignment({pc=%lx,sp=%lx})", regs->pc, sp);
|
||||
|
||||
if (regs->epsw & EPSW_IE)
|
||||
asm volatile("or %0,epsw" : : "i"(EPSW_IE));
|
||||
@ -294,8 +353,8 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code)
|
||||
opcode = byte;
|
||||
noc = 8;
|
||||
|
||||
for (pop = mn10300_opcodes; pop->name; pop++) {
|
||||
npop = log2(pop->opcode | pop->opmask);
|
||||
for (pop = mn10300_opcodes; pop->name[0]; pop++) {
|
||||
npop = ilog2(pop->opcode | pop->opmask);
|
||||
if (npop <= 0 || npop > 31)
|
||||
continue;
|
||||
npop = (npop + 8) & ~7;
|
||||
@ -328,15 +387,15 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code)
|
||||
}
|
||||
|
||||
/* didn't manage to find a fixup */
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x\n",
|
||||
regs->pc, opcode);
|
||||
printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x\n",
|
||||
regs->pc, opcode);
|
||||
|
||||
failed:
|
||||
set_fs(seg);
|
||||
if (die_if_no_fixup("misalignment error", regs, code))
|
||||
return;
|
||||
|
||||
bus_error:
|
||||
info.si_signo = SIGBUS;
|
||||
info.si_errno = 0;
|
||||
info.si_code = BUS_ADRALN;
|
||||
@ -346,31 +405,27 @@ failed:
|
||||
|
||||
/* error reading opcodes */
|
||||
fetch_error:
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %p: fault whilst reading instruction data\n",
|
||||
pc);
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %p: fault whilst reading instruction data\n",
|
||||
pc);
|
||||
goto failed;
|
||||
|
||||
bad_addr_mode:
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported addressing mode %x\n",
|
||||
regs->pc, opcode);
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported addressing mode %x\n",
|
||||
regs->pc, opcode);
|
||||
goto failed;
|
||||
|
||||
bad_reg_mode:
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported register mode %x\n",
|
||||
regs->pc, opcode);
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported register mode %x\n",
|
||||
regs->pc, opcode);
|
||||
goto failed;
|
||||
|
||||
unsupported_instruction:
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported instruction %x (%s)\n",
|
||||
regs->pc, opcode, pop->name);
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: unsupported instruction %x (%s)\n",
|
||||
regs->pc, opcode, pop->name);
|
||||
goto failed;
|
||||
|
||||
transfer_failed:
|
||||
@ -391,7 +446,7 @@ transfer_failed:
|
||||
|
||||
/* we matched the opcode */
|
||||
found_opcode:
|
||||
kdebug("MISALIGN: %lx: %x==%x { %x, %x }\n",
|
||||
kdebug("%lx: %x==%x { %x, %x }",
|
||||
regs->pc, opcode, pop->opcode, pop->params[0], pop->params[1]);
|
||||
|
||||
tmp = format_tbl[pop->format].opsz;
|
||||
@ -406,106 +461,108 @@ found_opcode:
|
||||
|
||||
/* grab the extra displacement (note it's LSB first) */
|
||||
disp = 0;
|
||||
tmp = format_tbl[pop->format].dispsz >> 3;
|
||||
while (tmp > 0) {
|
||||
tmp--;
|
||||
disp <<= 8;
|
||||
|
||||
dispsz = format_tbl[pop->format].dispsz;
|
||||
for (loop = 0; loop < dispsz; loop += 8) {
|
||||
pc++;
|
||||
if (__get_user(byte, pc) != 0)
|
||||
goto fetch_error;
|
||||
disp |= byte;
|
||||
disp |= byte << loop;
|
||||
kdebug("{%p} disp[%02x]=%02x", pc, loop, byte);
|
||||
}
|
||||
|
||||
kdebug("disp=%lx", disp);
|
||||
|
||||
set_fs(KERNEL_XDS);
|
||||
if (fixup || regs->epsw & EPSW_nSL)
|
||||
if (fixup)
|
||||
set_fs(seg);
|
||||
|
||||
tmp = (pop->params[0] ^ pop->params[1]) & 0x80000000;
|
||||
if (!tmp) {
|
||||
if (!user_mode(regs))
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx:"
|
||||
" insn not move to/from memory %x\n",
|
||||
regs->pc, opcode);
|
||||
printk(KERN_CRIT
|
||||
"MISALIGN: %lx: insn not move to/from memory %x\n",
|
||||
regs->pc, opcode);
|
||||
goto failed;
|
||||
}
|
||||
|
||||
/* determine the data transfer size of the move */
|
||||
if (pop->name[3] == 0 || /* "mov" */
|
||||
pop->name[4] == 'l') /* mov_lcc */
|
||||
inc = datasz = 4;
|
||||
else if (pop->name[3] == 'h') /* movhu */
|
||||
inc = datasz = 2;
|
||||
else
|
||||
goto unsupported_instruction;
|
||||
|
||||
if (pop->params[0] & 0x80000000) {
|
||||
/* move memory to register */
|
||||
if (!misalignment_addr(registers, pop->params[0], opcode, disp,
|
||||
&address, &postinc))
|
||||
if (!misalignment_addr(registers, sp,
|
||||
pop->params[0], opcode, disp,
|
||||
&address, &postinc, &inc))
|
||||
goto bad_addr_mode;
|
||||
|
||||
if (!misalignment_reg(registers, pop->params[1], opcode, disp,
|
||||
&store))
|
||||
goto bad_reg_mode;
|
||||
|
||||
if (strcmp(pop->name, "mov") == 0) {
|
||||
kdebug("FIXUP: mov (%p),DARn\n", address);
|
||||
if (copy_from_user(&data, (void *) address, 4) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[0] & 0x1000000)
|
||||
*postinc += 4;
|
||||
} else if (strcmp(pop->name, "movhu") == 0) {
|
||||
kdebug("FIXUP: movhu (%p),DARn\n", address);
|
||||
data = 0;
|
||||
if (copy_from_user(&data, (void *) address, 2) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[0] & 0x1000000)
|
||||
*postinc += 2;
|
||||
} else {
|
||||
goto unsupported_instruction;
|
||||
kdebug("mov%u (%p),DARn", datasz, address);
|
||||
if (copy_from_user(&data, (void *) address, datasz) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[0] & 0x1000000) {
|
||||
kdebug("inc=%lx", inc);
|
||||
*postinc += inc;
|
||||
}
|
||||
|
||||
*store = data;
|
||||
kdebug("loaded %lx", data);
|
||||
} else {
|
||||
/* move register to memory */
|
||||
if (!misalignment_reg(registers, pop->params[0], opcode, disp,
|
||||
&store))
|
||||
goto bad_reg_mode;
|
||||
|
||||
if (!misalignment_addr(registers, pop->params[1], opcode, disp,
|
||||
&address, &postinc))
|
||||
if (!misalignment_addr(registers, sp,
|
||||
pop->params[1], opcode, disp,
|
||||
&address, &postinc, &inc))
|
||||
goto bad_addr_mode;
|
||||
|
||||
data = *store;
|
||||
|
||||
if (strcmp(pop->name, "mov") == 0) {
|
||||
kdebug("FIXUP: mov %lx,(%p)\n", data, address);
|
||||
if (copy_to_user((void *) address, &data, 4) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[1] & 0x1000000)
|
||||
*postinc += 4;
|
||||
} else if (strcmp(pop->name, "movhu") == 0) {
|
||||
kdebug("FIXUP: movhu %hx,(%p)\n",
|
||||
(uint16_t) data, address);
|
||||
if (copy_to_user((void *) address, &data, 2) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[1] & 0x1000000)
|
||||
*postinc += 2;
|
||||
} else {
|
||||
goto unsupported_instruction;
|
||||
}
|
||||
kdebug("mov%u %lx,(%p)", datasz, data, address);
|
||||
if (copy_to_user((void *) address, &data, datasz) != 0)
|
||||
goto transfer_failed;
|
||||
if (pop->params[1] & 0x1000000)
|
||||
*postinc += inc;
|
||||
}
|
||||
|
||||
tmp = format_tbl[pop->format].opsz + format_tbl[pop->format].dispsz;
|
||||
regs->pc += tmp >> 3;
|
||||
|
||||
/* handle MOV_Lcc, which are currently the only FMT_D10 insns that
|
||||
* access memory */
|
||||
if (pop->format == FMT_D10)
|
||||
misalignment_MOV_Lcc(regs, opcode);
|
||||
|
||||
set_fs(seg);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* determine the address that was being accessed
|
||||
*/
|
||||
static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
unsigned opcode, unsigned disp,
|
||||
void **_address, unsigned long **_postinc)
|
||||
static int misalignment_addr(unsigned long *registers, unsigned long sp,
|
||||
unsigned params, unsigned opcode,
|
||||
unsigned long disp,
|
||||
void **_address, unsigned long **_postinc,
|
||||
unsigned long *_inc)
|
||||
{
|
||||
unsigned long *postinc = NULL, address = 0, tmp;
|
||||
|
||||
params &= 0x7fffffff;
|
||||
if (!(params & 0x1000000)) {
|
||||
kdebug("noinc");
|
||||
*_inc = 0;
|
||||
_inc = NULL;
|
||||
}
|
||||
|
||||
params &= 0x00ffffff;
|
||||
|
||||
do {
|
||||
switch (params & 0xff) {
|
||||
@ -514,11 +571,11 @@ static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
address += *postinc;
|
||||
break;
|
||||
case DM1:
|
||||
postinc = ®isters[Dreg_index[opcode >> 2 & 0x0c]];
|
||||
postinc = ®isters[Dreg_index[opcode >> 2 & 0x03]];
|
||||
address += *postinc;
|
||||
break;
|
||||
case DM2:
|
||||
postinc = ®isters[Dreg_index[opcode >> 4 & 0x30]];
|
||||
postinc = ®isters[Dreg_index[opcode >> 4 & 0x03]];
|
||||
address += *postinc;
|
||||
break;
|
||||
case AM0:
|
||||
@ -526,11 +583,11 @@ static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
address += *postinc;
|
||||
break;
|
||||
case AM1:
|
||||
postinc = ®isters[Areg_index[opcode >> 2 & 0x0c]];
|
||||
postinc = ®isters[Areg_index[opcode >> 2 & 0x03]];
|
||||
address += *postinc;
|
||||
break;
|
||||
case AM2:
|
||||
postinc = ®isters[Areg_index[opcode >> 4 & 0x30]];
|
||||
postinc = ®isters[Areg_index[opcode >> 4 & 0x03]];
|
||||
address += *postinc;
|
||||
break;
|
||||
case RM0:
|
||||
@ -561,33 +618,53 @@ static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
postinc = ®isters[Rreg_index[disp >> 4 & 0x0f]];
|
||||
address += *postinc;
|
||||
break;
|
||||
case SP:
|
||||
address += sp;
|
||||
break;
|
||||
|
||||
/* displacements are either to be added to the address
|
||||
* before use, or, in the case of post-inc addressing,
|
||||
* to be added into the base register after use */
|
||||
case SD8:
|
||||
case SIMM8:
|
||||
address += (int32_t) (int8_t) (disp & 0xff);
|
||||
break;
|
||||
disp = (long) (int8_t) (disp & 0xff);
|
||||
goto displace_or_inc;
|
||||
case SD16:
|
||||
address += (int32_t) (int16_t) (disp & 0xffff);
|
||||
break;
|
||||
disp = (long) (int16_t) (disp & 0xffff);
|
||||
goto displace_or_inc;
|
||||
case SD24:
|
||||
tmp = disp << 8;
|
||||
asm("asr 8,%0" : "=r"(tmp) : "0"(tmp));
|
||||
address += tmp;
|
||||
break;
|
||||
disp = (long) tmp;
|
||||
goto displace_or_inc;
|
||||
case SIMM4_2:
|
||||
tmp = opcode >> 4 & 0x0f;
|
||||
tmp <<= 28;
|
||||
asm("asr 28,%0" : "=r"(tmp) : "0"(tmp));
|
||||
address += tmp;
|
||||
break;
|
||||
disp = (long) tmp;
|
||||
goto displace_or_inc;
|
||||
case IMM8:
|
||||
disp &= 0x000000ff;
|
||||
goto displace_or_inc;
|
||||
case IMM16:
|
||||
disp &= 0x0000ffff;
|
||||
goto displace_or_inc;
|
||||
case IMM24:
|
||||
address += disp & 0x00ffffff;
|
||||
break;
|
||||
disp &= 0x00ffffff;
|
||||
goto displace_or_inc;
|
||||
case IMM32:
|
||||
case IMM32_MEM:
|
||||
case IMM32_HIGH8:
|
||||
address += disp;
|
||||
case IMM32_HIGH8_MEM:
|
||||
displace_or_inc:
|
||||
kdebug("%s %lx", _inc ? "incr" : "disp", disp);
|
||||
if (!_inc)
|
||||
address += disp;
|
||||
else
|
||||
*_inc = disp;
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
return 0;
|
||||
}
|
||||
} while ((params >>= 8));
|
||||
@ -601,7 +678,7 @@ static int misalignment_addr(unsigned long *registers, unsigned params,
|
||||
* determine the register that is acting as source/dest
|
||||
*/
|
||||
static int misalignment_reg(unsigned long *registers, unsigned params,
|
||||
unsigned opcode, unsigned disp,
|
||||
unsigned opcode, unsigned long disp,
|
||||
unsigned long **_register)
|
||||
{
|
||||
params &= 0x7fffffff;
|
||||
@ -654,8 +731,239 @@ static int misalignment_reg(unsigned long *registers, unsigned params,
|
||||
break;
|
||||
|
||||
default:
|
||||
BUG();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* handle the conditional loop part of the move-and-loop instructions
|
||||
*/
|
||||
static void misalignment_MOV_Lcc(struct pt_regs *regs, uint32_t opcode)
|
||||
{
|
||||
unsigned long epsw = regs->epsw;
|
||||
unsigned long NxorV;
|
||||
|
||||
kdebug("MOV_Lcc %x [flags=%lx]", opcode, epsw & 0xf);
|
||||
|
||||
/* calculate N^V and shift onto the same bit position as Z */
|
||||
NxorV = ((epsw >> 3) ^ epsw >> 1) & 1;
|
||||
|
||||
switch (opcode & 0xf) {
|
||||
case 0x0: /* MOV_LLT: N^V */
|
||||
if (NxorV)
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x1: /* MOV_LGT: ~(Z or (N^V))*/
|
||||
if (!((epsw & EPSW_FLAG_Z) | NxorV))
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x2: /* MOV_LGE: ~(N^V) */
|
||||
if (!NxorV)
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x3: /* MOV_LLE: Z or (N^V) */
|
||||
if ((epsw & EPSW_FLAG_Z) | NxorV)
|
||||
goto take_the_loop;
|
||||
return;
|
||||
|
||||
case 0x4: /* MOV_LCS: C */
|
||||
if (epsw & EPSW_FLAG_C)
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x5: /* MOV_LHI: ~(C or Z) */
|
||||
if (!(epsw & (EPSW_FLAG_C | EPSW_FLAG_Z)))
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x6: /* MOV_LCC: ~C */
|
||||
if (!(epsw & EPSW_FLAG_C))
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x7: /* MOV_LLS: C or Z */
|
||||
if (epsw & (EPSW_FLAG_C | EPSW_FLAG_Z))
|
||||
goto take_the_loop;
|
||||
return;
|
||||
|
||||
case 0x8: /* MOV_LEQ: Z */
|
||||
if (epsw & EPSW_FLAG_Z)
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0x9: /* MOV_LNE: ~Z */
|
||||
if (!(epsw & EPSW_FLAG_Z))
|
||||
goto take_the_loop;
|
||||
return;
|
||||
case 0xa: /* MOV_LRA: always */
|
||||
goto take_the_loop;
|
||||
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
|
||||
take_the_loop:
|
||||
/* wind the PC back to just after the SETLB insn */
|
||||
kdebug("loop LAR=%lx", regs->lar);
|
||||
regs->pc = regs->lar - 4;
|
||||
}
|
||||
|
||||
/*
|
||||
* misalignment handler tests
|
||||
*/
|
||||
#ifdef CONFIG_TEST_MISALIGNMENT_HANDLER
|
||||
static u8 __initdata testbuf[512] __attribute__((aligned(16))) = {
|
||||
[257] = 0x11,
|
||||
[258] = 0x22,
|
||||
[259] = 0x33,
|
||||
[260] = 0x44,
|
||||
};
|
||||
|
||||
#define ASSERTCMP(X, OP, Y) \
|
||||
do { \
|
||||
if (unlikely(!((X) OP (Y)))) { \
|
||||
printk(KERN_ERR "\n"); \
|
||||
printk(KERN_ERR "MISALIGN: Assertion failed at line %u\n", \
|
||||
__LINE__); \
|
||||
printk(KERN_ERR "0x%lx " #OP " 0x%lx is false\n", \
|
||||
(unsigned long)(X), (unsigned long)(Y)); \
|
||||
BUG(); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
static int __init test_misalignment(void)
|
||||
{
|
||||
register void *r asm("e0");
|
||||
register u32 y asm("e1");
|
||||
void *p = testbuf, *q;
|
||||
u32 tmp, tmp2, x;
|
||||
|
||||
printk(KERN_NOTICE "==>test_misalignment() [testbuf=%p]\n", p);
|
||||
p++;
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (Am),Dn ___\n");
|
||||
q = p + 256;
|
||||
asm volatile("mov (%0),%1" : "+a"(q), "=d"(x));
|
||||
ASSERTCMP(q, ==, p + 256);
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (256,Am),Dn ___\n");
|
||||
q = p;
|
||||
asm volatile("mov (256,%0),%1" : "+a"(q), "=d"(x));
|
||||
ASSERTCMP(q, ==, p);
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (Di,Am),Dn ___\n");
|
||||
tmp = 256;
|
||||
q = p;
|
||||
asm volatile("mov (%2,%0),%1" : "+a"(q), "=d"(x), "+d"(tmp));
|
||||
ASSERTCMP(q, ==, p);
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
ASSERTCMP(tmp, ==, 256);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (256,Rm),Rn ___\n");
|
||||
r = p;
|
||||
asm volatile("mov (256,%0),%1" : "+r"(r), "=r"(y));
|
||||
ASSERTCMP(r, ==, p);
|
||||
ASSERTCMP(y, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (Rm+),Rn ___\n");
|
||||
r = p + 256;
|
||||
asm volatile("mov (%0+),%1" : "+r"(r), "=r"(y));
|
||||
ASSERTCMP(r, ==, p + 256 + 4);
|
||||
ASSERTCMP(y, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (Rm+,8),Rn ___\n");
|
||||
r = p + 256;
|
||||
asm volatile("mov (%0+,8),%1" : "+r"(r), "=r"(y));
|
||||
ASSERTCMP(r, ==, p + 256 + 8);
|
||||
ASSERTCMP(y, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (7,SP),Rn ___\n");
|
||||
asm volatile(
|
||||
"add -16,sp \n"
|
||||
"mov +0x11,%0 \n"
|
||||
"movbu %0,(7,sp) \n"
|
||||
"mov +0x22,%0 \n"
|
||||
"movbu %0,(8,sp) \n"
|
||||
"mov +0x33,%0 \n"
|
||||
"movbu %0,(9,sp) \n"
|
||||
"mov +0x44,%0 \n"
|
||||
"movbu %0,(10,sp) \n"
|
||||
"mov (7,sp),%1 \n"
|
||||
"add +16,sp \n"
|
||||
: "+a"(q), "=d"(x));
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (259,SP),Rn ___\n");
|
||||
asm volatile(
|
||||
"add -264,sp \n"
|
||||
"mov +0x11,%0 \n"
|
||||
"movbu %0,(259,sp) \n"
|
||||
"mov +0x22,%0 \n"
|
||||
"movbu %0,(260,sp) \n"
|
||||
"mov +0x33,%0 \n"
|
||||
"movbu %0,(261,sp) \n"
|
||||
"mov +0x55,%0 \n"
|
||||
"movbu %0,(262,sp) \n"
|
||||
"mov (259,sp),%1 \n"
|
||||
"add +264,sp \n"
|
||||
: "+d"(tmp), "=d"(x));
|
||||
ASSERTCMP(x, ==, 0x55332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV (260,SP),Rn ___\n");
|
||||
asm volatile(
|
||||
"add -264,sp \n"
|
||||
"mov +0x11,%0 \n"
|
||||
"movbu %0,(260,sp) \n"
|
||||
"mov +0x22,%0 \n"
|
||||
"movbu %0,(261,sp) \n"
|
||||
"mov +0x33,%0 \n"
|
||||
"movbu %0,(262,sp) \n"
|
||||
"mov +0x55,%0 \n"
|
||||
"movbu %0,(263,sp) \n"
|
||||
"mov (260,sp),%1 \n"
|
||||
"add +264,sp \n"
|
||||
: "+d"(tmp), "=d"(x));
|
||||
ASSERTCMP(x, ==, 0x55332211);
|
||||
|
||||
|
||||
printk(KERN_NOTICE "___ MOV_LNE ___\n");
|
||||
tmp = 1;
|
||||
tmp2 = 2;
|
||||
q = p + 256;
|
||||
asm volatile(
|
||||
"setlb \n"
|
||||
"mov %2,%3 \n"
|
||||
"mov %1,%2 \n"
|
||||
"cmp +0,%1 \n"
|
||||
"mov_lne (%0+,4),%1"
|
||||
: "+r"(q), "+d"(tmp), "+d"(tmp2), "=d"(x)
|
||||
:
|
||||
: "cc");
|
||||
ASSERTCMP(q, ==, p + 256 + 12);
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "___ MOV in SETLB ___\n");
|
||||
tmp = 1;
|
||||
tmp2 = 2;
|
||||
q = p + 256;
|
||||
asm volatile(
|
||||
"setlb \n"
|
||||
"mov %1,%3 \n"
|
||||
"mov (%0+),%1 \n"
|
||||
"cmp +0,%1 \n"
|
||||
"lne "
|
||||
: "+a"(q), "+d"(tmp), "+d"(tmp2), "=d"(x)
|
||||
:
|
||||
: "cc");
|
||||
|
||||
ASSERTCMP(q, ==, p + 256 + 8);
|
||||
ASSERTCMP(x, ==, 0x44332211);
|
||||
|
||||
printk(KERN_NOTICE "<==test_misalignment()\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(test_misalignment);
|
||||
|
||||
#endif /* CONFIG_TEST_MISALIGNMENT_HANDLER */
|
||||
|
@ -44,8 +44,6 @@ extern void arch_send_call_function_ipi(cpumask_t mask);
|
||||
|
||||
#define PROC_CHANGE_PENALTY 15 /* Schedule penalty */
|
||||
|
||||
extern unsigned long cpu_present_mask;
|
||||
|
||||
#define raw_smp_processor_id() (current_thread_info()->cpu)
|
||||
|
||||
#else /* CONFIG_SMP */
|
||||
|
@ -183,10 +183,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
* being 64 bit in both cases.
|
||||
*/
|
||||
|
||||
static long translate_usr_offset(long offset)
|
||||
static compat_ulong_t translate_usr_offset(compat_ulong_t offset)
|
||||
{
|
||||
if (offset < 0)
|
||||
return -1;
|
||||
return sizeof(struct pt_regs);
|
||||
else if (offset <= 32*4) /* gr[0..31] */
|
||||
return offset * 2 + 4;
|
||||
else if (offset <= 32*4+32*8) /* gr[0..31] + fr[0..31] */
|
||||
@ -194,7 +194,7 @@ static long translate_usr_offset(long offset)
|
||||
else if (offset < sizeof(struct pt_regs)/2 + 32*4)
|
||||
return offset * 2 + 4 - 32*8;
|
||||
else
|
||||
return -1;
|
||||
return sizeof(struct pt_regs);
|
||||
}
|
||||
|
||||
long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||
@ -209,7 +209,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||
if (addr & (sizeof(compat_uint_t)-1))
|
||||
break;
|
||||
addr = translate_usr_offset(addr);
|
||||
if (addr < 0)
|
||||
if (addr >= sizeof(struct pt_regs))
|
||||
break;
|
||||
|
||||
tmp = *(compat_uint_t *) ((char *) task_regs(child) + addr);
|
||||
@ -236,7 +236,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||
if (addr & (sizeof(compat_uint_t)-1))
|
||||
break;
|
||||
addr = translate_usr_offset(addr);
|
||||
if (addr < 0)
|
||||
if (addr >= sizeof(struct pt_regs))
|
||||
break;
|
||||
if (addr >= PT_FR0 && addr <= PT_FR31 + 4) {
|
||||
/* Special case, fp regs are 64 bits anyway */
|
||||
|
@ -108,7 +108,7 @@
|
||||
compatible = "simple-bus";
|
||||
ranges = <0x0 0xfef00000 0x00100000>;
|
||||
reg = <0xfef00000 0x100000>; // CCSRBAR 1M
|
||||
bus-frequency = <0>;
|
||||
bus-frequency = <33333333>;
|
||||
|
||||
i2c1: i2c@3000 {
|
||||
#address-cells = <1>;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.27-rc4
|
||||
# Thu Aug 21 00:52:01 2008
|
||||
# Linux kernel version: 2.6.28-rc3
|
||||
# Sat Nov 8 12:39:49 2008
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
@ -23,7 +23,7 @@ CONFIG_PPC_STD_MMU_32=y
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PPC32=y
|
||||
CONFIG_WORD_SIZE=32
|
||||
CONFIG_PPC_MERGE=y
|
||||
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
@ -54,8 +54,6 @@ CONFIG_AUDIT_ARCH=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
# CONFIG_DEFAULT_UIMAGE is not set
|
||||
CONFIG_REDBOOT=y
|
||||
CONFIG_HIBERNATE_32=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
# CONFIG_PPC_DCR_NATIVE is not set
|
||||
# CONFIG_PPC_DCR_MMIO is not set
|
||||
@ -99,7 +97,6 @@ CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_PCSPKR_PLATFORM=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
@ -109,7 +106,9 @@ 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=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@ -122,10 +121,6 @@ CONFIG_HAVE_IOREMAP_PROT=y
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_HAVE_KRETPROBES=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
# 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_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
@ -158,6 +153,7 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# Platform support
|
||||
@ -165,10 +161,10 @@ CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_PPC_MULTIPLATFORM=y
|
||||
CONFIG_CLASSIC32=y
|
||||
# CONFIG_PPC_CHRP is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_MPC5121_ADS is not set
|
||||
# CONFIG_MPC5121_GENERIC is not set
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_CELL is not set
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PPC_82xx is not set
|
||||
@ -188,24 +184,21 @@ CONFIG_ASP834x=y
|
||||
CONFIG_PPC_MPC834x=y
|
||||
# CONFIG_PPC_86xx is not set
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
CONFIG_PPC_NATIVE=y
|
||||
# CONFIG_UDBG_RTAS_CONSOLE is not set
|
||||
CONFIG_IPIC=y
|
||||
CONFIG_MPIC=y
|
||||
# CONFIG_MPIC is not set
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
CONFIG_PPC_I8259=y
|
||||
CONFIG_PPC_RTAS=y
|
||||
# CONFIG_RTAS_ERROR_LOGGING is not set
|
||||
CONFIG_RTAS_PROC=y
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
CONFIG_PPC_MPC106=y
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
# CONFIG_PPC_970_NAP is not set
|
||||
# CONFIG_PPC_INDIRECT_IO is not set
|
||||
# CONFIG_GENERIC_IOMAP is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_PPC601_SYNC_FIX is not set
|
||||
# CONFIG_TAU is not set
|
||||
# CONFIG_QUICC_ENGINE is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
# CONFIG_MPC8xxx_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
@ -225,6 +218,8 @@ CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_IOMMU_HELPER is not set
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
@ -239,15 +234,15 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# 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=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
@ -259,7 +254,6 @@ CONFIG_ISA_DMA_API=y
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_ISA is not set
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_PPC_INDIRECT_PCI=y
|
||||
@ -272,7 +266,7 @@ CONFIG_PCI_SYSCALL=y
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
CONFIG_ARCH_SUPPORTS_MSI=y
|
||||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_LEGACY is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
# CONFIG_HAS_RAPIDIO is not set
|
||||
@ -340,6 +334,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
@ -360,11 +355,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_PHONET is not set
|
||||
CONFIG_WIRELESS=y
|
||||
# CONFIG_CFG80211 is not set
|
||||
CONFIG_WIRELESS_OLD_REGULATORY=y
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
@ -470,7 +464,6 @@ CONFIG_OF_I2C=y
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_MAC_FLOPPY is not set
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
@ -547,8 +540,6 @@ CONFIG_PHYLIB=y
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_MACE is not set
|
||||
# CONFIG_BMAC is not set
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
@ -559,8 +550,12 @@ CONFIG_MII=y
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
||||
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
||||
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
||||
# CONFIG_NET_PCI is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_ATL2 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
# CONFIG_ACENIC is not set
|
||||
# CONFIG_DL2K is not set
|
||||
@ -583,6 +578,7 @@ CONFIG_GIANFAR=y
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
# CONFIG_ATL1E is not set
|
||||
# CONFIG_JME is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_TR is not set
|
||||
|
||||
@ -667,14 +663,11 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
# CONFIG_SERIAL_UARTLITE is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
# CONFIG_SERIAL_OF_PLATFORM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_BRIQ_PANEL is not set
|
||||
# CONFIG_HVC_RTAS is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
@ -710,12 +703,6 @@ CONFIG_I2C_HELPER_AUTO=y
|
||||
# CONFIG_I2C_VIA is not set
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
|
||||
#
|
||||
# Mac SMBus host controller drivers
|
||||
#
|
||||
# CONFIG_I2C_HYDRA is not set
|
||||
CONFIG_I2C_POWERMAC=y
|
||||
|
||||
#
|
||||
# I2C system bus drivers (mostly embedded / system-on-chip)
|
||||
#
|
||||
@ -753,6 +740,7 @@ CONFIG_I2C_MPC=y
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_SENSORS_TSL2550 is not set
|
||||
# CONFIG_MCU_MPC8349EMITX is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
@ -774,7 +762,6 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_AMS is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
@ -829,7 +816,6 @@ CONFIG_WATCHDOG=y
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
# CONFIG_ALIM7101_WDT is not set
|
||||
# CONFIG_8xxx_WDT is not set
|
||||
# CONFIG_WATCHDOG_RTAS is not set
|
||||
|
||||
#
|
||||
# PCI-based Watchdog Cards
|
||||
@ -855,6 +841,17 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
|
||||
#
|
||||
# Voltage and Current regulators
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -907,6 +904,8 @@ CONFIG_USB_DEVICE_CLASS=y
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
CONFIG_USB_MON=y
|
||||
# CONFIG_USB_WUSB is not set
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
@ -923,6 +922,8 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
|
||||
# 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
|
||||
@ -930,6 +931,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
# CONFIG_USB_WDM is not set
|
||||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
@ -956,6 +958,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=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
|
||||
@ -972,7 +975,9 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_ISIGHTFW is not set
|
||||
# CONFIG_USB_VST is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
@ -1018,12 +1023,15 @@ CONFIG_RTC_DRV_DS1374=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 is not set
|
||||
# CONFIG_RTC_DRV_M48T35 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_BQ4802 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
@ -1032,6 +1040,7 @@ CONFIG_RTC_DRV_DS1374=y
|
||||
# CONFIG_RTC_DRV_PPC is not set
|
||||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -1043,12 +1052,13 @@ CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
CONFIG_JBD=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# 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_DNOTIFY=y
|
||||
@ -1078,6 +1088,7 @@ CONFIG_INOTIFY_USER=y
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
@ -1126,6 +1137,7 @@ CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
CONFIG_SUNRPC_GSS=y
|
||||
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||
CONFIG_RPCSEC_GSS_KRB5=y
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
@ -1197,7 +1209,6 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
@ -1229,13 +1240,15 @@ CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
|
||||
CONFIG_HAVE_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_IRQSTACKS is not set
|
||||
@ -1247,14 +1260,19 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
# Crypto core or helper
|
||||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
@ -1327,6 +1345,11 @@ CONFIG_CRYPTO_DES=y
|
||||
#
|
||||
# CONFIG_CRYPTO_DEFLATE 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_CRYPTO_DEV_TALITOS is not set
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.27-rc4
|
||||
# Thu Aug 21 00:52:17 2008
|
||||
# Linux kernel version: 2.6.28-rc3
|
||||
# Sat Nov 8 12:39:50 2008
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
@ -23,7 +23,7 @@ CONFIG_PPC_STD_MMU_32=y
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PPC32=y
|
||||
CONFIG_WORD_SIZE=32
|
||||
CONFIG_PPC_MERGE=y
|
||||
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
@ -53,8 +53,6 @@ CONFIG_PPC_UDBG_16550=y
|
||||
CONFIG_AUDIT_ARCH=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_DEFAULT_UIMAGE=y
|
||||
CONFIG_HIBERNATE_32=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
# CONFIG_PPC_DCR_NATIVE is not set
|
||||
# CONFIG_PPC_DCR_MMIO is not set
|
||||
@ -98,7 +96,6 @@ CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_PCSPKR_PLATFORM=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
@ -108,7 +105,9 @@ 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=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@ -121,10 +120,6 @@ CONFIG_HAVE_IOREMAP_PROT=y
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_HAVE_KRETPROBES=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
# 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_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
@ -157,6 +152,7 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# Platform support
|
||||
@ -164,10 +160,10 @@ CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_PPC_MULTIPLATFORM=y
|
||||
CONFIG_CLASSIC32=y
|
||||
# CONFIG_PPC_CHRP is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_MPC5121_ADS is not set
|
||||
# CONFIG_MPC5121_GENERIC is not set
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_CELL is not set
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PPC_82xx is not set
|
||||
@ -187,24 +183,21 @@ CONFIG_MPC831x_RDB=y
|
||||
CONFIG_PPC_MPC831x=y
|
||||
# CONFIG_PPC_86xx is not set
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
CONFIG_PPC_NATIVE=y
|
||||
# CONFIG_UDBG_RTAS_CONSOLE is not set
|
||||
CONFIG_IPIC=y
|
||||
CONFIG_MPIC=y
|
||||
# CONFIG_MPIC is not set
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
CONFIG_PPC_I8259=y
|
||||
CONFIG_PPC_RTAS=y
|
||||
# CONFIG_RTAS_ERROR_LOGGING is not set
|
||||
CONFIG_RTAS_PROC=y
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
CONFIG_PPC_MPC106=y
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
# CONFIG_PPC_970_NAP is not set
|
||||
# CONFIG_PPC_INDIRECT_IO is not set
|
||||
# CONFIG_GENERIC_IOMAP is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_PPC601_SYNC_FIX is not set
|
||||
# CONFIG_TAU is not set
|
||||
# CONFIG_QUICC_ENGINE is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
# CONFIG_MPC8xxx_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
@ -224,6 +217,8 @@ CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_IOMMU_HELPER is not set
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
@ -238,15 +233,15 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# 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=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
@ -258,7 +253,6 @@ CONFIG_ISA_DMA_API=y
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_ISA is not set
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_PPC_INDIRECT_PCI=y
|
||||
@ -271,7 +265,7 @@ CONFIG_PCI_SYSCALL=y
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
CONFIG_ARCH_SUPPORTS_MSI=y
|
||||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_LEGACY is not set
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
@ -340,6 +334,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
@ -360,11 +355,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_PHONET is not set
|
||||
CONFIG_WIRELESS=y
|
||||
# CONFIG_CFG80211 is not set
|
||||
CONFIG_WIRELESS_OLD_REGULATORY=y
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
@ -470,6 +464,7 @@ CONFIG_MTD_NAND_IDS=y
|
||||
# CONFIG_MTD_NAND_PLATFORM is not set
|
||||
# CONFIG_MTD_ALAUDA is not set
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
# CONFIG_MTD_NAND_FSL_UPM is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
@ -482,7 +477,6 @@ CONFIG_OF_SPI=y
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_MAC_FLOPPY is not set
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
@ -583,13 +577,12 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_NSP32 is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_MESH is not set
|
||||
# CONFIG_SCSI_MAC53C94 is not set
|
||||
# CONFIG_SCSI_SRP is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_MD=y
|
||||
CONFIG_MD_AUTODETECT=y
|
||||
CONFIG_MD_LINEAR=y
|
||||
CONFIG_MD_RAID0=y
|
||||
CONFIG_MD_RAID1=y
|
||||
@ -638,8 +631,6 @@ CONFIG_CICADA_PHY=y
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_MACE is not set
|
||||
# CONFIG_BMAC is not set
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
@ -651,6 +642,9 @@ CONFIG_MII=y
|
||||
# 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
|
||||
@ -671,6 +665,7 @@ CONFIG_E100=y
|
||||
# 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
|
||||
@ -693,18 +688,22 @@ CONFIG_GIANFAR=y
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
# CONFIG_ATL1E is not set
|
||||
# CONFIG_JME is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_ENIC is not set
|
||||
# CONFIG_IXGBE is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_NIU is not set
|
||||
# CONFIG_MLX4_EN is not set
|
||||
# CONFIG_MLX4_CORE is not set
|
||||
# CONFIG_TEHUTI is not set
|
||||
# CONFIG_BNX2X is not set
|
||||
# CONFIG_QLGE is not set
|
||||
# CONFIG_SFC is not set
|
||||
# CONFIG_TR is not set
|
||||
|
||||
@ -790,14 +789,11 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
# CONFIG_SERIAL_UARTLITE is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
# CONFIG_SERIAL_OF_PLATFORM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_BRIQ_PANEL is not set
|
||||
# CONFIG_HVC_RTAS is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_NVRAM is not set
|
||||
@ -833,12 +829,6 @@ CONFIG_I2C_HELPER_AUTO=y
|
||||
# CONFIG_I2C_VIA is not set
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
|
||||
#
|
||||
# Mac SMBus host controller drivers
|
||||
#
|
||||
# CONFIG_I2C_HYDRA is not set
|
||||
CONFIG_I2C_POWERMAC=y
|
||||
|
||||
#
|
||||
# I2C system bus drivers (mostly embedded / system-on-chip)
|
||||
#
|
||||
@ -876,6 +866,7 @@ CONFIG_I2C_MPC=y
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_SENSORS_TSL2550 is not set
|
||||
# CONFIG_MCU_MPC8349EMITX is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
@ -913,7 +904,6 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_AMS is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
@ -935,6 +925,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_LM93 is not set
|
||||
# CONFIG_SENSORS_MAX1111 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_MAX6650 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
@ -969,7 +960,6 @@ CONFIG_WATCHDOG=y
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
# CONFIG_ALIM7101_WDT is not set
|
||||
# CONFIG_8xxx_WDT is not set
|
||||
# CONFIG_WATCHDOG_RTAS is not set
|
||||
|
||||
#
|
||||
# PCI-based Watchdog Cards
|
||||
@ -995,6 +985,17 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
|
||||
#
|
||||
# Voltage and Current regulators
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -1037,12 +1038,18 @@ CONFIG_HID=y
|
||||
# USB Input Devices
|
||||
#
|
||||
# CONFIG_USB_HID is not set
|
||||
# CONFIG_HID_PID is not set
|
||||
|
||||
#
|
||||
# USB HID Boot Protocol drivers
|
||||
#
|
||||
# CONFIG_USB_KBD is not set
|
||||
# CONFIG_USB_MOUSE is not set
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_COMPAT=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
@ -1061,6 +1068,8 @@ CONFIG_USB_DEVICE_CLASS=y
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
CONFIG_USB_MON=y
|
||||
# CONFIG_USB_WUSB is not set
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
@ -1084,6 +1093,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
# 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
|
||||
# CONFIG_USB_GADGET_MUSB_HDRC is not set
|
||||
|
||||
#
|
||||
@ -1092,6 +1103,7 @@ CONFIG_USB_UHCI_HCD=y
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
# CONFIG_USB_WDM is not set
|
||||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
@ -1113,7 +1125,6 @@ CONFIG_USB_STORAGE=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
|
||||
|
||||
@ -1134,6 +1145,7 @@ CONFIG_USB_STORAGE=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
|
||||
@ -1151,23 +1163,26 @@ CONFIG_USB_STORAGE=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=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=2
|
||||
CONFIG_USB_GADGET_SELECTED=y
|
||||
# CONFIG_USB_GADGET_AMD5536UDC is not set
|
||||
# CONFIG_USB_GADGET_AT91 is not set
|
||||
# CONFIG_USB_GADGET_ATMEL_USBA is not set
|
||||
# CONFIG_USB_GADGET_FSL_USB2 is not set
|
||||
CONFIG_USB_GADGET_NET2280=y
|
||||
CONFIG_USB_NET2280=y
|
||||
# CONFIG_USB_GADGET_PXA25X is not set
|
||||
# CONFIG_USB_GADGET_M66592 is not set
|
||||
# CONFIG_USB_GADGET_PXA27X is not set
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||
# CONFIG_USB_GADGET_OMAP is not set
|
||||
# CONFIG_USB_GADGET_PXA25X is not set
|
||||
# CONFIG_USB_GADGET_PXA27X is not set
|
||||
# CONFIG_USB_GADGET_S3C2410 is not set
|
||||
# CONFIG_USB_GADGET_AT91 is not set
|
||||
# CONFIG_USB_GADGET_M66592 is not set
|
||||
# CONFIG_USB_GADGET_AMD5536UDC is not set
|
||||
# CONFIG_USB_GADGET_FSL_QE is not set
|
||||
CONFIG_USB_GADGET_NET2280=y
|
||||
CONFIG_USB_NET2280=y
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||
CONFIG_USB_GADGET_DUALSPEED=y
|
||||
# CONFIG_USB_ZERO is not set
|
||||
@ -1179,6 +1194,7 @@ CONFIG_USB_ETH_RNDIS=y
|
||||
# CONFIG_USB_MIDI_GADGET is not set
|
||||
# CONFIG_USB_G_PRINTER is not set
|
||||
# CONFIG_USB_CDC_COMPOSITE is not set
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
@ -1224,17 +1240,21 @@ CONFIG_RTC_DRV_DS1307=y
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
# CONFIG_RTC_DRV_R9701 is not set
|
||||
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||
# CONFIG_RTC_DRV_DS3234 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_CMOS 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 is not set
|
||||
# CONFIG_RTC_DRV_M48T35 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_BQ4802 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
@ -1243,6 +1263,7 @@ CONFIG_RTC_DRV_DS1307=y
|
||||
# CONFIG_RTC_DRV_PPC is not set
|
||||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -1254,12 +1275,13 @@ CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
CONFIG_JBD=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# 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_DNOTIFY=y
|
||||
@ -1289,6 +1311,7 @@ CONFIG_INOTIFY_USER=y
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
@ -1337,6 +1360,7 @@ CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
CONFIG_SUNRPC_GSS=y
|
||||
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||
CONFIG_RPCSEC_GSS_KRB5=y
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
@ -1373,7 +1397,6 @@ CONFIG_MSDOS_PARTITION=y
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
@ -1427,15 +1450,23 @@ CONFIG_SCHED_DEBUG=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_HAVE_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_FUNCTION_TRACER is not set
|
||||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
@ -1444,6 +1475,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
# CONFIG_CODE_PATCHING_SELFTEST is not set
|
||||
# CONFIG_FTR_FIXUP_SELFTEST is not set
|
||||
# CONFIG_MSI_BITMAP_SELFTEST is not set
|
||||
# CONFIG_XMON is not set
|
||||
# CONFIG_IRQSTACKS is not set
|
||||
# CONFIG_BDI_SWITCH is not set
|
||||
@ -1455,14 +1487,19 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
# Crypto core or helper
|
||||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
@ -1535,6 +1572,11 @@ CONFIG_CRYPTO_DES=y
|
||||
#
|
||||
# CONFIG_CRYPTO_DEFLATE 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_CRYPTO_DEV_TALITOS is not set
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user