Merge commit 'v2.6.28-rc7' into core/locking
This commit is contained in:
Коммит
cb9c34e6d0
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -316,12 +316,10 @@ reduce current DMA mapping usage or delay and try again later).
|
|||
pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
|
||||
int nents, int direction)
|
||||
|
||||
Maps a scatter gather list from the block layer.
|
||||
|
||||
Returns: the number of physical segments mapped (this may be shorter
|
||||
than <nents> passed in if the block layer determines that some
|
||||
elements of the scatter/gather list are physically adjacent and thus
|
||||
may be mapped with a single entry).
|
||||
than <nents> passed in if some elements of the scatter/gather list are
|
||||
physically or virtually adjacent and an IOMMU maps them with a single
|
||||
entry).
|
||||
|
||||
Please note that the sg cannot be mapped again if it has been mapped once.
|
||||
The mapping process is allowed to destroy information in the sg.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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.
|
|
@ -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.
|
||||
|
|
|
@ -23,6 +23,7 @@ Contents:
|
|||
1.3 sparc64
|
||||
1.4 ppc
|
||||
1.5 SuperH
|
||||
1.6 Blackfin
|
||||
|
||||
2. "Policy" / "Governor"?
|
||||
2.1 Policy
|
||||
|
@ -97,6 +98,17 @@ The following SuperH processors are supported by cpufreq:
|
|||
SH-3
|
||||
SH-4
|
||||
|
||||
1.6 Blackfin
|
||||
------------
|
||||
|
||||
The following Blackfin processors are supported by cpufreq:
|
||||
|
||||
BF522, BF523, BF524, BF525, BF526, BF527, Rev 0.1 or higher
|
||||
BF531, BF532, BF533, Rev 0.3 or higher
|
||||
BF534, BF536, BF537, Rev 0.2 or higher
|
||||
BF561, Rev 0.3 or higher
|
||||
BF542, BF544, BF547, BF548, BF549, Rev 0.1 or higher
|
||||
|
||||
|
||||
2. "Policy" / "Governor" ?
|
||||
==========================
|
||||
|
|
|
@ -28,10 +28,7 @@ Manish Singh <manish.singh@oracle.com>
|
|||
Caveats
|
||||
=======
|
||||
Features which OCFS2 does not support yet:
|
||||
- extended attributes
|
||||
- quotas
|
||||
- cluster aware flock
|
||||
- cluster aware lockf
|
||||
- Directory change notification (F_NOTIFY)
|
||||
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
||||
- POSIX ACLs
|
||||
|
|
|
@ -44,6 +44,7 @@ Table of Contents
|
|||
2.14 /proc/<pid>/io - Display the IO accounting fields
|
||||
2.15 /proc/<pid>/coredump_filter - Core dump filtering settings
|
||||
2.16 /proc/<pid>/mountinfo - Information about mounts
|
||||
2.17 /proc/sys/fs/epoll - Configuration options for the epoll interface
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Preface
|
||||
|
@ -2483,4 +2484,30 @@ For more information on mount propagation see:
|
|||
|
||||
Documentation/filesystems/sharedsubtree.txt
|
||||
|
||||
2.17 /proc/sys/fs/epoll - Configuration options for the epoll interface
|
||||
--------------------------------------------------------
|
||||
|
||||
This directory contains configuration options for the epoll(7) interface.
|
||||
|
||||
max_user_instances
|
||||
------------------
|
||||
|
||||
This is the maximum number of epoll file descriptors that a single user can
|
||||
have open at a given time. The default value is 128, and should be enough
|
||||
for normal users.
|
||||
|
||||
max_user_watches
|
||||
----------------
|
||||
|
||||
Every epoll file descriptor can store a number of files to be monitored
|
||||
for event readiness. Each one of these monitored files constitutes a "watch".
|
||||
This configuration option sets the maximum number of "watches" that are
|
||||
allowed for each user.
|
||||
Each "watch" costs roughly 90 bytes on a 32bit kernel, and roughly 160 bytes
|
||||
on a 64bit one.
|
||||
The current default value for max_user_watches is the 1/32 of the available
|
||||
low memory, divided for the "watch" cost in bytes.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -130,12 +130,12 @@ The 2.6 kernel build process always creates a gzipped cpio format initramfs
|
|||
archive and links it into the resulting kernel binary. By default, this
|
||||
archive is empty (consuming 134 bytes on x86).
|
||||
|
||||
The config option CONFIG_INITRAMFS_SOURCE (for some reason buried under
|
||||
devices->block devices in menuconfig, and living in usr/Kconfig) can be used
|
||||
to specify a source for the initramfs archive, which will automatically be
|
||||
incorporated into the resulting binary. This option can point to an existing
|
||||
gzipped cpio archive, a directory containing files to be archived, or a text
|
||||
file specification such as the following example:
|
||||
The config option CONFIG_INITRAMFS_SOURCE (in General Setup in menuconfig,
|
||||
and living in usr/Kconfig) can be used to specify a source for the
|
||||
initramfs archive, which will automatically be incorporated into the
|
||||
resulting binary. This option can point to an existing gzipped cpio
|
||||
archive, a directory containing files to be archived, or a text file
|
||||
specification such as the following example:
|
||||
|
||||
dir /dev 755 0 0
|
||||
nod /dev/console 644 0 0 c 5 1
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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!
|
|
@ -20,10 +20,11 @@ pressed or released a BUTTON_IRQ happens. The driver could look like:
|
|||
|
||||
static struct input_dev *button_dev;
|
||||
|
||||
static void button_interrupt(int irq, void *dummy, struct pt_regs *fp)
|
||||
static irqreturn_t button_interrupt(int irq, void *dummy)
|
||||
{
|
||||
input_report_key(button_dev, BTN_0, inb(BUTTON_PORT) & 1);
|
||||
input_sync(button_dev);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int __init button_init(void)
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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
|
|
@ -1072,10 +1072,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
ref Reference board
|
||||
dell-m4-1 Dell desktops
|
||||
dell-m4-2 Dell desktops
|
||||
dell-m4-3 Dell desktops
|
||||
|
||||
STAC92HD73*
|
||||
ref Reference board
|
||||
dell-m6 Dell desktops
|
||||
dell-m6-amic Dell desktops/laptops with analog mics
|
||||
dell-m6-dmic Dell desktops/laptops with digital mics
|
||||
dell-m6 Dell desktops/laptops with both type of mics
|
||||
|
||||
STAC9872
|
||||
vaio Setup for VAIO FE550G/SZ110
|
||||
|
|
|
@ -215,7 +215,7 @@ So for example arch/.../mach-*/board-*.c files might have code like:
|
|||
/* if your mach-* infrastructure doesn't support kernels that can
|
||||
* run on multiple boards, pdata wouldn't benefit from "__init".
|
||||
*/
|
||||
static struct mysoc_spi_data __init pdata = { ... };
|
||||
static struct mysoc_spi_data __initdata pdata = { ... };
|
||||
|
||||
static __init board_init(void)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,7 @@ $ echo mmiotrace > /debug/tracing/current_tracer
|
|||
$ cat /debug/tracing/trace_pipe > mydump.txt &
|
||||
Start X or whatever.
|
||||
$ echo "X is up" > /debug/tracing/trace_marker
|
||||
$ echo none > /debug/tracing/current_tracer
|
||||
$ echo nop > /debug/tracing/current_tracer
|
||||
Check for lost events.
|
||||
|
||||
|
||||
|
@ -66,7 +66,7 @@ which action. It is recommended to place descriptive markers about what you
|
|||
do.
|
||||
|
||||
Shut down mmiotrace (requires root privileges):
|
||||
$ echo none > /debug/tracing/current_tracer
|
||||
$ echo nop > /debug/tracing/current_tracer
|
||||
The 'cat' process exits. If it does not, kill it by issuing 'fg' command and
|
||||
pressing ctrl+c.
|
||||
|
||||
|
@ -81,7 +81,9 @@ are:
|
|||
$ cat /debug/tracing/trace_entries
|
||||
gives you a number. Approximately double this number and write it back, for
|
||||
instance:
|
||||
$ echo 0 > /debug/tracing/tracing_enabled
|
||||
$ echo 128000 > /debug/tracing/trace_entries
|
||||
$ echo 1 > /debug/tracing/tracing_enabled
|
||||
Then start again from the top.
|
||||
|
||||
If you are doing a trace for a driver project, e.g. Nouveau, you should also
|
||||
|
|
|
@ -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
|
||||
|
20
MAINTAINERS
20
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
|
||||
|
@ -2216,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
|
||||
|
@ -2696,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
|
||||
|
@ -3377,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
|
||||
|
@ -3914,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
|
||||
|
|
4
Makefile
4
Makefile
|
@ -1,8 +1,8 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 28
|
||||
EXTRAVERSION = -rc4
|
||||
NAME = Killer Bat of Doom
|
||||
EXTRAVERSION = -rc7
|
||||
NAME = Erotic Pickled Herring
|
||||
|
||||
# *DOCUMENTATION*
|
||||
# To see a list of typical targets execute "make help"
|
||||
|
|
|
@ -79,8 +79,6 @@ config HAVE_KRETPROBES
|
|||
# task_pt_regs() in asm/processor.h or asm/ptrace.h
|
||||
# arch_has_single_step() if there is hardware single-step support
|
||||
# arch_has_block_step() if there is hardware block-step support
|
||||
# arch_ptrace() and not #define __ARCH_SYS_PTRACE
|
||||
# compat_arch_ptrace() and #define __ARCH_WANT_COMPAT_SYS_PTRACE
|
||||
# asm/syscall.h supplying asm-generic/syscall.h interface
|
||||
# linux/regset.h user_regset interfaces
|
||||
# CORE_DUMP_USE_REGSET #define'd in linux/elf.h
|
||||
|
|
|
@ -338,7 +338,7 @@ common_swizzle(struct pci_dev *dev, u8 *pinp)
|
|||
return PCI_SLOT(dev->devfn);
|
||||
}
|
||||
|
||||
void __devinit
|
||||
void
|
||||
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
||||
struct resource *res)
|
||||
{
|
||||
|
|
|
@ -121,7 +121,7 @@ wait_boot_cpu_to_stop(int cpuid)
|
|||
/*
|
||||
* Where secondaries begin a life of C.
|
||||
*/
|
||||
void __init
|
||||
void __cpuinit
|
||||
smp_callin(void)
|
||||
{
|
||||
int cpuid = hard_smp_processor_id();
|
||||
|
@ -198,7 +198,7 @@ wait_for_txrdy (unsigned long cpumask)
|
|||
* Send a message to a secondary's console. "START" is one such
|
||||
* interesting message. ;-)
|
||||
*/
|
||||
static void __init
|
||||
static void __cpuinit
|
||||
send_secondary_console_msg(char *str, int cpuid)
|
||||
{
|
||||
struct percpu_struct *cpu;
|
||||
|
@ -289,7 +289,7 @@ recv_secondary_console_msg(void)
|
|||
/*
|
||||
* Convince the console to have a secondary cpu begin execution.
|
||||
*/
|
||||
static int __init
|
||||
static int __cpuinit
|
||||
secondary_cpu_start(int cpuid, struct task_struct *idle)
|
||||
{
|
||||
struct percpu_struct *cpu;
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
static int opDEC_fix;
|
||||
|
||||
static void __init
|
||||
static void __cpuinit
|
||||
opDEC_check(void)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
|
@ -1072,7 +1072,7 @@ give_sigbus:
|
|||
return;
|
||||
}
|
||||
|
||||
void __init
|
||||
void __cpuinit
|
||||
trap_init(void)
|
||||
{
|
||||
/* Tell PAL-code what global pointer we want in the kernel. */
|
||||
|
|
|
@ -179,7 +179,7 @@ CONFIG_MACH_HUSKY=y
|
|||
# CONFIG_MACH_AKITA is not set
|
||||
# CONFIG_MACH_SPITZ is not set
|
||||
# CONFIG_MACH_BORZOI is not set
|
||||
CONFIG_MACH_TOSA=y
|
||||
# CONFIG_MACH_TOSA is not set
|
||||
# CONFIG_ARCH_VIPER is not set
|
||||
# CONFIG_ARCH_PXA_ESERIES is not set
|
||||
# CONFIG_TRIZEPS_PXA is not set
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#define LCD_CONN_TYPE(_x) ((_x) & 0x0f)
|
||||
#define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f)
|
||||
|
||||
#define LCD_TYPE_MASK 0xf
|
||||
#define LCD_TYPE_UNKNOWN 0
|
||||
#define LCD_TYPE_MONO_STN 1
|
||||
#define LCD_TYPE_MONO_DSTN 2
|
||||
|
|
|
@ -565,7 +565,7 @@ static int mioa701_sys_suspend(struct sys_device *sysdev, pm_message_t state)
|
|||
u32 *mem_resume_unknown = phys_to_virt(RESUME_UNKNOWN_ADDR);
|
||||
|
||||
/* Devices prepare suspend */
|
||||
is_bt_on = gpio_get_value(GPIO83_BT_ON);
|
||||
is_bt_on = !!gpio_get_value(GPIO83_BT_ON);
|
||||
pxa2xx_mfp_set_lpm(GPIO83_BT_ON,
|
||||
is_bt_on ? MFP_LPM_DRIVE_HIGH : MFP_LPM_DRIVE_LOW);
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ ENTRY(mioa701_jumpaddr)
|
|||
1:
|
||||
mov r0, #0xa0000000 @ Don't suppose memory access works
|
||||
orr r0, r0, #0x00200000 @ even if it's supposed to
|
||||
orr r0, r0, #0x0000b000
|
||||
mov r1, #0
|
||||
str r1, [r0] @ Early disable resume for next boot
|
||||
ldr r0, mioa701_jumpaddr @ (Murphy's Law)
|
||||
|
|
|
@ -56,6 +56,9 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
|||
GPIO110_MMC_DAT_2,
|
||||
GPIO111_MMC_DAT_3,
|
||||
GPIO112_MMC_CMD,
|
||||
GPIO14_GPIO, /* SD detect */
|
||||
GPIO114_GPIO, /* SD power */
|
||||
GPIO115_GPIO, /* SD r/o switch */
|
||||
|
||||
/* AC97 */
|
||||
GPIO28_AC97_BITCLK,
|
||||
|
@ -64,6 +67,7 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
|||
GPIO31_AC97_SYNC,
|
||||
|
||||
/* IrDA */
|
||||
GPIO40_GPIO, /* ir disable */
|
||||
GPIO46_FICP_RXD,
|
||||
GPIO47_FICP_TXD,
|
||||
|
||||
|
@ -71,7 +75,8 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
|||
GPIO16_PWM0_OUT,
|
||||
|
||||
/* USB */
|
||||
GPIO13_GPIO,
|
||||
GPIO13_GPIO, /* usb detect */
|
||||
GPIO95_GPIO, /* usb power */
|
||||
|
||||
/* PCMCIA */
|
||||
GPIO48_nPOE,
|
||||
|
@ -84,6 +89,45 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
|||
GPIO55_nPREG,
|
||||
GPIO56_nPWAIT,
|
||||
GPIO57_nIOIS16,
|
||||
GPIO94_GPIO, /* wifi power 1 */
|
||||
GPIO108_GPIO, /* wifi power 2 */
|
||||
GPIO116_GPIO, /* wifi ready */
|
||||
|
||||
/* MATRIX KEYPAD */
|
||||
GPIO100_KP_MKIN_0,
|
||||
GPIO101_KP_MKIN_1,
|
||||
GPIO102_KP_MKIN_2,
|
||||
GPIO97_KP_MKIN_3,
|
||||
GPIO103_KP_MKOUT_0,
|
||||
GPIO104_KP_MKOUT_1,
|
||||
GPIO105_KP_MKOUT_2,
|
||||
|
||||
/* LCD */
|
||||
GPIO58_LCD_LDD_0,
|
||||
GPIO59_LCD_LDD_1,
|
||||
GPIO60_LCD_LDD_2,
|
||||
GPIO61_LCD_LDD_3,
|
||||
GPIO62_LCD_LDD_4,
|
||||
GPIO63_LCD_LDD_5,
|
||||
GPIO64_LCD_LDD_6,
|
||||
GPIO65_LCD_LDD_7,
|
||||
GPIO66_LCD_LDD_8,
|
||||
GPIO67_LCD_LDD_9,
|
||||
GPIO68_LCD_LDD_10,
|
||||
GPIO69_LCD_LDD_11,
|
||||
GPIO70_LCD_LDD_12,
|
||||
GPIO71_LCD_LDD_13,
|
||||
GPIO72_LCD_LDD_14,
|
||||
GPIO73_LCD_LDD_15,
|
||||
GPIO74_LCD_FCLK,
|
||||
GPIO75_LCD_LCLK,
|
||||
GPIO76_LCD_PCLK,
|
||||
GPIO77_LCD_BIAS,
|
||||
|
||||
/* MISC. */
|
||||
GPIO10_GPIO, /* hotsync button */
|
||||
GPIO12_GPIO, /* power detect */
|
||||
GPIO107_GPIO, /* earphone detect */
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -95,32 +139,49 @@ static int palmtx_mci_init(struct device *dev, irq_handler_t palmtx_detect_int,
|
|||
int err = 0;
|
||||
|
||||
/* Setup an interrupt for detecting card insert/remove events */
|
||||
err = request_irq(IRQ_GPIO_PALMTX_SD_DETECT_N, palmtx_detect_int,
|
||||
IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
|
||||
err = gpio_request(GPIO_NR_PALMTX_SD_DETECT_N, "SD IRQ");
|
||||
if (err)
|
||||
goto err;
|
||||
err = gpio_direction_input(GPIO_NR_PALMTX_SD_DETECT_N);
|
||||
if (err)
|
||||
goto err2;
|
||||
err = request_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N),
|
||||
palmtx_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
|
||||
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||
"SD/MMC card detect", data);
|
||||
if (err) {
|
||||
printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
|
||||
__func__);
|
||||
return err;
|
||||
goto err2;
|
||||
}
|
||||
|
||||
err = gpio_request(GPIO_NR_PALMTX_SD_POWER, "SD_POWER");
|
||||
if (err)
|
||||
goto pwr_err;
|
||||
goto err3;
|
||||
err = gpio_direction_output(GPIO_NR_PALMTX_SD_POWER, 0);
|
||||
if (err)
|
||||
goto err4;
|
||||
|
||||
err = gpio_request(GPIO_NR_PALMTX_SD_READONLY, "SD_READONLY");
|
||||
if (err)
|
||||
goto ro_err;
|
||||
goto err4;
|
||||
err = gpio_direction_input(GPIO_NR_PALMTX_SD_READONLY);
|
||||
if (err)
|
||||
goto err5;
|
||||
|
||||
printk(KERN_DEBUG "%s: irq registered\n", __func__);
|
||||
|
||||
return 0;
|
||||
|
||||
ro_err:
|
||||
err5:
|
||||
gpio_free(GPIO_NR_PALMTX_SD_READONLY);
|
||||
err4:
|
||||
gpio_free(GPIO_NR_PALMTX_SD_POWER);
|
||||
pwr_err:
|
||||
free_irq(IRQ_GPIO_PALMTX_SD_DETECT_N, data);
|
||||
err3:
|
||||
free_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N), data);
|
||||
err2:
|
||||
gpio_free(GPIO_NR_PALMTX_SD_DETECT_N);
|
||||
err:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -128,7 +189,8 @@ static void palmtx_mci_exit(struct device *dev, void *data)
|
|||
{
|
||||
gpio_free(GPIO_NR_PALMTX_SD_READONLY);
|
||||
gpio_free(GPIO_NR_PALMTX_SD_POWER);
|
||||
free_irq(IRQ_GPIO_PALMTX_SD_DETECT_N, data);
|
||||
free_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N), data);
|
||||
gpio_free(GPIO_NR_PALMTX_SD_DETECT_N);
|
||||
}
|
||||
|
||||
static void palmtx_mci_power(struct device *dev, unsigned int vdd)
|
||||
|
@ -167,7 +229,6 @@ static unsigned int palmtx_matrix_keys[] = {
|
|||
|
||||
KEY(3, 0, KEY_RIGHT),
|
||||
KEY(3, 2, KEY_LEFT),
|
||||
|
||||
};
|
||||
|
||||
static struct pxa27x_keypad_platform_data palmtx_keypad_platform_data = {
|
||||
|
@ -209,11 +270,19 @@ static int palmtx_backlight_init(struct device *dev)
|
|||
ret = gpio_request(GPIO_NR_PALMTX_BL_POWER, "BL POWER");
|
||||
if (ret)
|
||||
goto err;
|
||||
ret = gpio_direction_output(GPIO_NR_PALMTX_BL_POWER, 0);
|
||||
if (ret)
|
||||
goto err2;
|
||||
ret = gpio_request(GPIO_NR_PALMTX_LCD_POWER, "LCD POWER");
|
||||
if (ret)
|
||||
goto err2;
|
||||
ret = gpio_direction_output(GPIO_NR_PALMTX_LCD_POWER, 0);
|
||||
if (ret)
|
||||
goto err3;
|
||||
|
||||
return 0;
|
||||
err3:
|
||||
gpio_free(GPIO_NR_PALMTX_LCD_POWER);
|
||||
err2:
|
||||
gpio_free(GPIO_NR_PALMTX_BL_POWER);
|
||||
err:
|
||||
|
@ -254,6 +323,24 @@ static struct platform_device palmtx_backlight = {
|
|||
/******************************************************************************
|
||||
* IrDA
|
||||
******************************************************************************/
|
||||
static int palmtx_irda_startup(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
err = gpio_request(GPIO_NR_PALMTX_IR_DISABLE, "IR DISABLE");
|
||||
if (err)
|
||||
goto err;
|
||||
err = gpio_direction_output(GPIO_NR_PALMTX_IR_DISABLE, 1);
|
||||
if (err)
|
||||
gpio_free(GPIO_NR_PALMTX_IR_DISABLE);
|
||||
err:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void palmtx_irda_shutdown(struct device *dev)
|
||||
{
|
||||
gpio_free(GPIO_NR_PALMTX_IR_DISABLE);
|
||||
}
|
||||
|
||||
static void palmtx_irda_transceiver_mode(struct device *dev, int mode)
|
||||
{
|
||||
gpio_set_value(GPIO_NR_PALMTX_IR_DISABLE, mode & IR_OFF);
|
||||
|
@ -261,6 +348,8 @@ static void palmtx_irda_transceiver_mode(struct device *dev, int mode)
|
|||
}
|
||||
|
||||
static struct pxaficp_platform_data palmtx_ficp_platform_data = {
|
||||
.startup = palmtx_irda_startup,
|
||||
.shutdown = palmtx_irda_shutdown,
|
||||
.transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
|
||||
.transceiver_mode = palmtx_irda_transceiver_mode,
|
||||
};
|
||||
|
@ -268,17 +357,11 @@ static struct pxaficp_platform_data palmtx_ficp_platform_data = {
|
|||
/******************************************************************************
|
||||
* UDC
|
||||
******************************************************************************/
|
||||
static void palmtx_udc_command(int cmd)
|
||||
{
|
||||
gpio_set_value(GPIO_NR_PALMTX_USB_POWER, !cmd);
|
||||
udelay(50);
|
||||
gpio_set_value(GPIO_NR_PALMTX_USB_PULLUP, !cmd);
|
||||
}
|
||||
|
||||
static struct pxa2xx_udc_mach_info palmtx_udc_info __initdata = {
|
||||
.gpio_vbus = GPIO_NR_PALMTX_USB_DETECT_N,
|
||||
.gpio_vbus_inverted = 1,
|
||||
.udc_command = palmtx_udc_command,
|
||||
.gpio_pullup = GPIO_NR_PALMTX_USB_POWER,
|
||||
.gpio_pullup_inverted = 0,
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -290,17 +373,16 @@ static int power_supply_init(struct device *dev)
|
|||
|
||||
ret = gpio_request(GPIO_NR_PALMTX_POWER_DETECT, "CABLE_STATE_AC");
|
||||
if (ret)
|
||||
goto err_cs_ac;
|
||||
|
||||
ret = gpio_request(GPIO_NR_PALMTX_USB_DETECT_N, "CABLE_STATE_USB");
|
||||
goto err1;
|
||||
ret = gpio_direction_input(GPIO_NR_PALMTX_POWER_DETECT);
|
||||
if (ret)
|
||||
goto err_cs_usb;
|
||||
goto err2;
|
||||
|
||||
return 0;
|
||||
|
||||
err_cs_usb:
|
||||
err2:
|
||||
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
||||
err_cs_ac:
|
||||
err1:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -309,14 +391,8 @@ static int palmtx_is_ac_online(void)
|
|||
return gpio_get_value(GPIO_NR_PALMTX_POWER_DETECT);
|
||||
}
|
||||
|
||||
static int palmtx_is_usb_online(void)
|
||||
{
|
||||
return !gpio_get_value(GPIO_NR_PALMTX_USB_DETECT_N);
|
||||
}
|
||||
|
||||
static void power_supply_exit(struct device *dev)
|
||||
{
|
||||
gpio_free(GPIO_NR_PALMTX_USB_DETECT_N);
|
||||
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
||||
}
|
||||
|
||||
|
@ -327,7 +403,6 @@ static char *palmtx_supplicants[] = {
|
|||
static struct pda_power_pdata power_supply_info = {
|
||||
.init = power_supply_init,
|
||||
.is_ac_online = palmtx_is_ac_online,
|
||||
.is_usb_online = palmtx_is_usb_online,
|
||||
.exit = power_supply_exit,
|
||||
.supplied_to = palmtx_supplicants,
|
||||
.num_supplicants = ARRAY_SIZE(palmtx_supplicants),
|
||||
|
@ -410,12 +485,23 @@ static void __init palmtx_map_io(void)
|
|||
iotable_init(palmtx_io_desc, ARRAY_SIZE(palmtx_io_desc));
|
||||
}
|
||||
|
||||
/* setup udc GPIOs initial state */
|
||||
static void __init palmtx_udc_init(void)
|
||||
{
|
||||
if (!gpio_request(GPIO_NR_PALMTX_USB_POWER, "UDC Vbus")) {
|
||||
gpio_direction_output(GPIO_NR_PALMTX_USB_POWER, 1);
|
||||
gpio_free(GPIO_NR_PALMTX_USB_POWER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void __init palmtx_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
|
||||
|
||||
set_pxa_fb_info(&palmtx_lcd_screen);
|
||||
pxa_set_mci_info(&palmtx_mci_platform_data);
|
||||
palmtx_udc_init();
|
||||
pxa_set_udc_info(&palmtx_udc_info);
|
||||
pxa_set_ac97_info(NULL);
|
||||
pxa_set_ficp_info(&palmtx_ficp_platform_data);
|
||||
|
|
|
@ -385,6 +385,7 @@ static struct soc_camera_link iclink[] = {
|
|||
.gpio = NR_BUILTIN_GPIO + 1,
|
||||
}, {
|
||||
.bus_id = 0, /* Must match with the camera ID above */
|
||||
.gpio = -ENXIO,
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -90,12 +90,13 @@ void arch_reset(char mode)
|
|||
/* Jump into ROM at address 0 */
|
||||
cpu_reset(0);
|
||||
break;
|
||||
case 'h':
|
||||
do_hw_reset();
|
||||
break;
|
||||
case 'g':
|
||||
do_gpio_reset();
|
||||
break;
|
||||
case 'h':
|
||||
default:
|
||||
do_hw_reset();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
static unsigned long spitz_pin_config[] __initdata = {
|
||||
/* Chip Selects */
|
||||
GPIO78_nCS_2, /* SCOOP #2 */
|
||||
GPIO79_nCS_3, /* NAND */
|
||||
GPIO80_nCS_4, /* SCOOP #1 */
|
||||
|
||||
/* LCD - 16bpp Active TFT */
|
||||
|
@ -97,10 +98,10 @@ static unsigned long spitz_pin_config[] __initdata = {
|
|||
GPIO51_nPIOW,
|
||||
GPIO85_nPCE_1,
|
||||
GPIO54_nPCE_2,
|
||||
GPIO79_PSKTSEL,
|
||||
GPIO55_nPREG,
|
||||
GPIO56_nPWAIT,
|
||||
GPIO57_nIOIS16,
|
||||
GPIO104_PSKTSEL,
|
||||
|
||||
/* MMC */
|
||||
GPIO32_MMC_CLK,
|
||||
|
@ -686,7 +687,6 @@ static void __init akita_init(void)
|
|||
spitz_pcmcia_config.num_devs = 1;
|
||||
platform_scoop_config = &spitz_pcmcia_config;
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(akita_i2c_board_info));
|
||||
|
||||
common_init();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -18,6 +18,7 @@ struct s3c2410_spigpio_info {
|
|||
unsigned long pin_mosi;
|
||||
unsigned long pin_miso;
|
||||
|
||||
int num_chipselect;
|
||||
int bus_num;
|
||||
|
||||
void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs);
|
||||
|
|
|
@ -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,6 +101,7 @@
|
|||
#define OMAP24XX_GPIO_IRQSTATUS2 0x0028
|
||||
#define OMAP24XX_GPIO_IRQENABLE2 0x002c
|
||||
#define OMAP24XX_GPIO_IRQENABLE1 0x001c
|
||||
#define OMAP24XX_GPIO_WAKE_EN 0x0020
|
||||
#define OMAP24XX_GPIO_CTRL 0x0030
|
||||
#define OMAP24XX_GPIO_OE 0x0034
|
||||
#define OMAP24XX_GPIO_DATAIN 0x0038
|
||||
|
@ -1551,7 +1552,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
|||
#endif
|
||||
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
||||
case METHOD_GPIO_24XX:
|
||||
wake_status = bank->base + OMAP24XX_GPIO_SETWKUENA;
|
||||
wake_status = bank->base + OMAP24XX_GPIO_WAKE_EN;
|
||||
wake_clear = bank->base + OMAP24XX_GPIO_CLEARWKUENA;
|
||||
wake_set = bank->base + OMAP24XX_GPIO_SETWKUENA;
|
||||
break;
|
||||
|
@ -1574,7 +1575,7 @@ static int omap_gpio_resume(struct sys_device *dev)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (!cpu_is_omap24xx() && !cpu_is_omap16xx())
|
||||
if (!cpu_class_is_omap2() && !cpu_is_omap16xx())
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < gpio_bank_count; i++) {
|
||||
|
|
|
@ -128,7 +128,7 @@ void clk_deny_idle(struct clk *clk);
|
|||
* clk_allow_idle - Counters previous clk_deny_idle
|
||||
* @clk: clock signal handle
|
||||
*/
|
||||
void clk_deny_idle(struct clk *clk);
|
||||
void clk_allow_idle(struct clk *clk);
|
||||
|
||||
extern void omap_pm_idle(void);
|
||||
extern void omap_pm_suspend(void);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -35,6 +35,15 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
|
|||
int error = -EBADF;
|
||||
struct file * file = NULL;
|
||||
|
||||
/* As with sparc32, make sure the shift for mmap2 is constant
|
||||
(12), no matter what PAGE_SIZE we have.... */
|
||||
|
||||
/* But unlike sparc32, don't just silently break if we're
|
||||
trying to map something we can't */
|
||||
if (pgoff & ((1 << (PAGE_SHIFT - 12)) - 1))
|
||||
return -EINVAL;
|
||||
pgoff >>= PAGE_SHIFT - 12;
|
||||
|
||||
flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
|
||||
if (!(flags & MAP_ANONYMOUS)) {
|
||||
file = fget(fd);
|
||||
|
@ -42,16 +51,6 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
|
|||
goto out;
|
||||
}
|
||||
|
||||
/* As with sparc32, make sure the shift for mmap2 is constant
|
||||
(12), no matter what PAGE_SIZE we have.... */
|
||||
|
||||
/* But unlike sparc32, don't just silently break if we're
|
||||
trying to map something we can't */
|
||||
if (pgoff & ((1<<(PAGE_SHIFT-12))-1))
|
||||
return -EINVAL;
|
||||
|
||||
pgoff >>= (PAGE_SHIFT - 12);
|
||||
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -325,8 +325,6 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs)
|
|||
#define arch_has_block_step() (1)
|
||||
extern void user_enable_block_step(struct task_struct *);
|
||||
|
||||
#define __ARCH_WANT_COMPAT_SYS_PTRACE
|
||||
|
||||
#endif /* !__KERNEL__ */
|
||||
|
||||
/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
|
||||
|
|
|
@ -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);
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче