Merge commit 'v2.6.28-rc7' into core/locking
This commit is contained in:
commit
cb9c34e6d0
742 changed files with 18205 additions and 5848 deletions
|
@ -42,14 +42,8 @@ IRQ.txt
|
||||||
- description of what an IRQ is.
|
- description of what an IRQ is.
|
||||||
ManagementStyle
|
ManagementStyle
|
||||||
- how to (attempt to) manage kernel hackers.
|
- how to (attempt to) manage kernel hackers.
|
||||||
MSI-HOWTO.txt
|
|
||||||
- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
|
|
||||||
RCU/
|
RCU/
|
||||||
- directory with info on RCU (read-copy update).
|
- 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
|
SAK.txt
|
||||||
- info on Secure Attention Keys.
|
- info on Secure Attention Keys.
|
||||||
SM501.txt
|
SM501.txt
|
||||||
|
@ -86,20 +80,16 @@ blackfin/
|
||||||
- directory with documentation for the Blackfin arch.
|
- directory with documentation for the Blackfin arch.
|
||||||
block/
|
block/
|
||||||
- info on the Block I/O (BIO) layer.
|
- info on the Block I/O (BIO) layer.
|
||||||
|
blockdev/
|
||||||
|
- info on block devices & drivers
|
||||||
cachetlb.txt
|
cachetlb.txt
|
||||||
- describes the cache/TLB flushing interfaces Linux uses.
|
- describes the cache/TLB flushing interfaces Linux uses.
|
||||||
cciss.txt
|
|
||||||
- info, major/minor #'s for Compaq's SMART Array Controllers.
|
|
||||||
cdrom/
|
cdrom/
|
||||||
- directory with information on the CD-ROM drivers that Linux has.
|
- directory with information on the CD-ROM drivers that Linux has.
|
||||||
computone.txt
|
|
||||||
- info on Computone Intelliport II/Plus Multiport Serial Driver.
|
|
||||||
connector/
|
connector/
|
||||||
- docs on the netlink based userspace<->kernel space communication mod.
|
- docs on the netlink based userspace<->kernel space communication mod.
|
||||||
console/
|
console/
|
||||||
- documentation on Linux console drivers.
|
- documentation on Linux console drivers.
|
||||||
cpqarray.txt
|
|
||||||
- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
|
|
||||||
cpu-freq/
|
cpu-freq/
|
||||||
- info on CPU frequency and voltage scaling.
|
- info on CPU frequency and voltage scaling.
|
||||||
cpu-hotplug.txt
|
cpu-hotplug.txt
|
||||||
|
@ -126,8 +116,6 @@ device-mapper/
|
||||||
- directory with info on Device Mapper.
|
- directory with info on Device Mapper.
|
||||||
devices.txt
|
devices.txt
|
||||||
- plain ASCII listing of all the nodes in /dev/ with major minor #'s.
|
- 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
|
dontdiff
|
||||||
- file containing a list of files that should never be diff'ed.
|
- file containing a list of files that should never be diff'ed.
|
||||||
driver-model/
|
driver-model/
|
||||||
|
@ -152,14 +140,10 @@ filesystems/
|
||||||
- info on the vfs and the various filesystems that Linux supports.
|
- info on the vfs and the various filesystems that Linux supports.
|
||||||
firmware_class/
|
firmware_class/
|
||||||
- request_firmware() hotplug interface info.
|
- request_firmware() hotplug interface info.
|
||||||
floppy.txt
|
|
||||||
- notes and driver options for the floppy disk driver.
|
|
||||||
frv/
|
frv/
|
||||||
- Fujitsu FR-V Linux documentation.
|
- Fujitsu FR-V Linux documentation.
|
||||||
gpio.txt
|
gpio.txt
|
||||||
- overview of GPIO (General Purpose Input/Output) access conventions.
|
- overview of GPIO (General Purpose Input/Output) access conventions.
|
||||||
hayes-esp.txt
|
|
||||||
- info on using the Hayes ESP serial driver.
|
|
||||||
highuid.txt
|
highuid.txt
|
||||||
- notes on the change from 16 bit to 32 bit user/group IDs.
|
- notes on the change from 16 bit to 32 bit user/group IDs.
|
||||||
timers/
|
timers/
|
||||||
|
@ -186,8 +170,6 @@ io_ordering.txt
|
||||||
- info on ordering I/O writes to memory-mapped addresses.
|
- info on ordering I/O writes to memory-mapped addresses.
|
||||||
ioctl/
|
ioctl/
|
||||||
- directory with documents describing various IOCTL calls.
|
- directory with documents describing various IOCTL calls.
|
||||||
ioctl-number.txt
|
|
||||||
- how to implement and register device/driver ioctl calls.
|
|
||||||
iostats.txt
|
iostats.txt
|
||||||
- info on I/O statistics Linux kernel provides.
|
- info on I/O statistics Linux kernel provides.
|
||||||
irqflags-tracing.txt
|
irqflags-tracing.txt
|
||||||
|
@ -250,14 +232,10 @@ mips/
|
||||||
- directory with info about Linux on MIPS architecture.
|
- directory with info about Linux on MIPS architecture.
|
||||||
mono.txt
|
mono.txt
|
||||||
- how to execute Mono-based .NET binaries with the help of BINFMT_MISC.
|
- 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
|
mutex-design.txt
|
||||||
- info on the generic mutex subsystem.
|
- info on the generic mutex subsystem.
|
||||||
namespaces/
|
namespaces/
|
||||||
- directory with various information about namespaces
|
- directory with various information about namespaces
|
||||||
nbd.txt
|
|
||||||
- info on a TCP implementation of a network block device.
|
|
||||||
netlabel/
|
netlabel/
|
||||||
- directory with information on the NetLabel subsystem.
|
- directory with information on the NetLabel subsystem.
|
||||||
networking/
|
networking/
|
||||||
|
@ -270,8 +248,6 @@ numastat.txt
|
||||||
- info on how to read Numa policy hit/miss statistics in sysfs.
|
- info on how to read Numa policy hit/miss statistics in sysfs.
|
||||||
oops-tracing.txt
|
oops-tracing.txt
|
||||||
- how to decode those nasty internal kernel error dump messages.
|
- how to decode those nasty internal kernel error dump messages.
|
||||||
paride.txt
|
|
||||||
- information about the parallel port IDE subsystem.
|
|
||||||
parisc/
|
parisc/
|
||||||
- directory with info on using Linux on PA-RISC architecture.
|
- directory with info on using Linux on PA-RISC architecture.
|
||||||
parport.txt
|
parport.txt
|
||||||
|
@ -290,20 +266,16 @@ powerpc/
|
||||||
- directory with info on using Linux with the PowerPC.
|
- directory with info on using Linux with the PowerPC.
|
||||||
preempt-locking.txt
|
preempt-locking.txt
|
||||||
- info on locking under a preemptive kernel.
|
- info on locking under a preemptive kernel.
|
||||||
|
printk-formats.txt
|
||||||
|
- how to get printk format specifiers right
|
||||||
prio_tree.txt
|
prio_tree.txt
|
||||||
- info on radix-priority-search-tree use for indexing vmas.
|
- 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
|
rbtree.txt
|
||||||
- info on what red-black trees are and what they are for.
|
- 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
|
robust-futex-ABI.txt
|
||||||
- documentation of the robust futex ABI.
|
- documentation of the robust futex ABI.
|
||||||
robust-futexes.txt
|
robust-futexes.txt
|
||||||
- a description of what robust futexes are.
|
- a description of what robust futexes are.
|
||||||
rocket.txt
|
|
||||||
- info on the Comtrol RocketPort multiport serial driver.
|
|
||||||
rt-mutex-design.txt
|
rt-mutex-design.txt
|
||||||
- description of the RealTime mutex implementation design.
|
- description of the RealTime mutex implementation design.
|
||||||
rt-mutex.txt
|
rt-mutex.txt
|
||||||
|
@ -332,8 +304,6 @@ sparc/
|
||||||
- directory with info on using Linux on Sparc architecture.
|
- directory with info on using Linux on Sparc architecture.
|
||||||
sparse.txt
|
sparse.txt
|
||||||
- info on how to obtain and use the sparse tool for typechecking.
|
- 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/
|
spi/
|
||||||
- overview of Linux kernel Serial Peripheral Interface (SPI) support.
|
- overview of Linux kernel Serial Peripheral Interface (SPI) support.
|
||||||
spinlocks.txt
|
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.
|
- info on why the kernel does not have a stable in-kernel api or abi.
|
||||||
stable_kernel_rules.txt
|
stable_kernel_rules.txt
|
||||||
- rules and procedures for the -stable kernel releases.
|
- rules and procedures for the -stable kernel releases.
|
||||||
stallion.txt
|
|
||||||
- info on using the Stallion multiport serial driver.
|
|
||||||
svga.txt
|
svga.txt
|
||||||
- short guide on selecting video modes at boot via VGA BIOS.
|
- short guide on selecting video modes at boot via VGA BIOS.
|
||||||
sysfs-rules.txt
|
sysfs-rules.txt
|
||||||
- How not to use sysfs.
|
- How not to use sysfs.
|
||||||
sx.txt
|
|
||||||
- info on the Specialix SX/SI multiport serial driver.
|
|
||||||
sysctl/
|
sysctl/
|
||||||
- directory with info on the /proc/sys/* files.
|
- directory with info on the /proc/sys/* files.
|
||||||
sysrq.txt
|
sysrq.txt
|
||||||
|
@ -358,8 +324,6 @@ telephony/
|
||||||
- directory with info on telephony (e.g. voice over IP) support.
|
- directory with info on telephony (e.g. voice over IP) support.
|
||||||
time_interpolators.txt
|
time_interpolators.txt
|
||||||
- info on time interpolators.
|
- info on time interpolators.
|
||||||
tty.txt
|
|
||||||
- guide to the locking policies of the tty layer.
|
|
||||||
uml/
|
uml/
|
||||||
- directory with information about User Mode Linux.
|
- directory with information about User Mode Linux.
|
||||||
unicode.txt
|
unicode.txt
|
||||||
|
|
88
Documentation/ABI/testing/sysfs-c2port
Normal file
88
Documentation/ABI/testing/sysfs-c2port
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
What: /sys/class/c2port/
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/ directory will contain files and
|
||||||
|
directories that will provide a unified interface to
|
||||||
|
the C2 port interface.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/ directory is related to X-th
|
||||||
|
C2 port into the system. Each directory will contain files to
|
||||||
|
manage and control its C2 port.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/access
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/access file enable the access
|
||||||
|
to the C2 port from the system. No commands can be sent
|
||||||
|
till this entry is set to 0.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/dev_id
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/dev_id file show the device ID
|
||||||
|
of the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_access
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_access file enable the
|
||||||
|
access to the on-board flash of the connected micro.
|
||||||
|
No commands can be sent till this entry is set to 0.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_block_size
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_block_size file show
|
||||||
|
the on-board flash block size of the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_blocks_num
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_blocks_num file show
|
||||||
|
the on-board flash blocks number of the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_data
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_data file export
|
||||||
|
the content of the on-board flash of the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_erase
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_erase file execute
|
||||||
|
the "erase" command on the on-board flash of the connected
|
||||||
|
micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/flash_erase
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/flash_erase file show the
|
||||||
|
on-board flash size of the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/reset
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/reset file execute a "reset"
|
||||||
|
command on the connected micro.
|
||||||
|
|
||||||
|
What: /sys/class/c2port/c2portX/rev_id
|
||||||
|
Date: October 2008
|
||||||
|
Contact: Rodolfo Giometti <giometti@linux.it>
|
||||||
|
Description:
|
||||||
|
The /sys/class/c2port/c2portX/rev_id file show the revision ID
|
||||||
|
of the connected micro.
|
|
@ -89,7 +89,7 @@ Description:
|
||||||
|
|
||||||
error - an interrupt that can't be accounted for above.
|
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.
|
doesn't have an event handler.
|
||||||
|
|
||||||
disable: the GPE/Fixed Event is valid but disabled.
|
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
|
and other user space applications so that the machine won't shutdown
|
||||||
when pressing the power button.
|
when pressing the power button.
|
||||||
# cat ff_pwr_btn
|
# cat ff_pwr_btn
|
||||||
0
|
0 enabled
|
||||||
# press the power button for 3 times;
|
# press the power button for 3 times;
|
||||||
# cat ff_pwr_btn
|
# cat ff_pwr_btn
|
||||||
3
|
3 enabled
|
||||||
# echo disable > ff_pwr_btn
|
# echo disable > ff_pwr_btn
|
||||||
# cat ff_pwr_btn
|
# cat ff_pwr_btn
|
||||||
disable
|
3 disabled
|
||||||
# press the power button for 3 times;
|
# press the power button for 3 times;
|
||||||
# cat ff_pwr_btn
|
# cat ff_pwr_btn
|
||||||
disable
|
3 disabled
|
||||||
# echo enable > ff_pwr_btn
|
# echo enable > ff_pwr_btn
|
||||||
# cat 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,
|
* 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
|
* and it triggers an ACPI fixed event when the enable bit is set again
|
||||||
*/
|
*/
|
||||||
# press the power button for 3 times;
|
# press the power button for 3 times;
|
||||||
# cat ff_pwr_btn
|
# cat ff_pwr_btn
|
||||||
7
|
7 enabled
|
||||||
# echo disable > ff_pwr_btn
|
# echo disable > ff_pwr_btn
|
||||||
# press the power button for 3 times;
|
# press the power button for 3 times;
|
||||||
# echo clear > ff_pwr_btn /* clear the status bit */
|
# echo clear > ff_pwr_btn /* clear the status bit */
|
||||||
# echo disable > ff_pwr_btn
|
# echo disable > ff_pwr_btn
|
||||||
# cat 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,
|
pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
|
||||||
int nents, int direction)
|
int nents, int direction)
|
||||||
|
|
||||||
Maps a scatter gather list from the block layer.
|
|
||||||
|
|
||||||
Returns: the number of physical segments mapped (this may be shorter
|
Returns: the number of physical segments mapped (this may be shorter
|
||||||
than <nents> passed in if the block layer determines that some
|
than <nents> passed in if some elements of the scatter/gather list are
|
||||||
elements of the scatter/gather list are physically adjacent and thus
|
physically or virtually adjacent and an IOMMU maps them with a single
|
||||||
may be mapped with a single entry).
|
entry).
|
||||||
|
|
||||||
Please note that the sg cannot be mapped again if it has been mapped once.
|
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.
|
The mapping process is allowed to destroy information in the sg.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file
|
- this file
|
||||||
|
MSI-HOWTO.txt
|
||||||
|
- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
|
||||||
PCI-DMA-mapping.txt
|
PCI-DMA-mapping.txt
|
||||||
- info for PCI drivers using DMA portably across all platforms
|
- info for PCI drivers using DMA portably across all platforms
|
||||||
PCIEBUS-HOWTO.txt
|
PCIEBUS-HOWTO.txt
|
||||||
|
|
148
Documentation/acpi/debug.txt
Normal file
148
Documentation/acpi/debug.txt
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
ACPI Debug Output
|
||||||
|
|
||||||
|
|
||||||
|
The ACPI CA, the Linux ACPI core, and some ACPI drivers can generate debug
|
||||||
|
output. This document describes how to use this facility.
|
||||||
|
|
||||||
|
Compile-time configuration
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
ACPI debug output is globally enabled by CONFIG_ACPI_DEBUG. If this config
|
||||||
|
option is turned off, the debug messages are not even built into the
|
||||||
|
kernel.
|
||||||
|
|
||||||
|
Boot- and run-time configuration
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
When CONFIG_ACPI_DEBUG=y, you can select the component and level of messages
|
||||||
|
you're interested in. At boot-time, use the acpi.debug_layer and
|
||||||
|
acpi.debug_level kernel command line options. After boot, you can use the
|
||||||
|
debug_layer and debug_level files in /sys/module/acpi/parameters/ to control
|
||||||
|
the debug messages.
|
||||||
|
|
||||||
|
debug_layer (component)
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The "debug_layer" is a mask that selects components of interest, e.g., a
|
||||||
|
specific driver or part of the ACPI interpreter. To build the debug_layer
|
||||||
|
bitmask, look for the "#define _COMPONENT" in an ACPI source file.
|
||||||
|
|
||||||
|
You can set the debug_layer mask at boot-time using the acpi.debug_layer
|
||||||
|
command line argument, and you can change it after boot by writing values
|
||||||
|
to /sys/module/acpi/parameters/debug_layer.
|
||||||
|
|
||||||
|
The possible components are defined in include/acpi/acoutput.h and
|
||||||
|
include/acpi/acpi_drivers.h. Reading /sys/module/acpi/parameters/debug_layer
|
||||||
|
shows the supported mask values, currently these:
|
||||||
|
|
||||||
|
ACPI_UTILITIES 0x00000001
|
||||||
|
ACPI_HARDWARE 0x00000002
|
||||||
|
ACPI_EVENTS 0x00000004
|
||||||
|
ACPI_TABLES 0x00000008
|
||||||
|
ACPI_NAMESPACE 0x00000010
|
||||||
|
ACPI_PARSER 0x00000020
|
||||||
|
ACPI_DISPATCHER 0x00000040
|
||||||
|
ACPI_EXECUTER 0x00000080
|
||||||
|
ACPI_RESOURCES 0x00000100
|
||||||
|
ACPI_CA_DEBUGGER 0x00000200
|
||||||
|
ACPI_OS_SERVICES 0x00000400
|
||||||
|
ACPI_CA_DISASSEMBLER 0x00000800
|
||||||
|
ACPI_COMPILER 0x00001000
|
||||||
|
ACPI_TOOLS 0x00002000
|
||||||
|
ACPI_BUS_COMPONENT 0x00010000
|
||||||
|
ACPI_AC_COMPONENT 0x00020000
|
||||||
|
ACPI_BATTERY_COMPONENT 0x00040000
|
||||||
|
ACPI_BUTTON_COMPONENT 0x00080000
|
||||||
|
ACPI_SBS_COMPONENT 0x00100000
|
||||||
|
ACPI_FAN_COMPONENT 0x00200000
|
||||||
|
ACPI_PCI_COMPONENT 0x00400000
|
||||||
|
ACPI_POWER_COMPONENT 0x00800000
|
||||||
|
ACPI_CONTAINER_COMPONENT 0x01000000
|
||||||
|
ACPI_SYSTEM_COMPONENT 0x02000000
|
||||||
|
ACPI_THERMAL_COMPONENT 0x04000000
|
||||||
|
ACPI_MEMORY_DEVICE_COMPONENT 0x08000000
|
||||||
|
ACPI_VIDEO_COMPONENT 0x10000000
|
||||||
|
ACPI_PROCESSOR_COMPONENT 0x20000000
|
||||||
|
|
||||||
|
debug_level
|
||||||
|
-----------
|
||||||
|
|
||||||
|
The "debug_level" is a mask that selects different types of messages, e.g.,
|
||||||
|
those related to initialization, method execution, informational messages, etc.
|
||||||
|
To build debug_level, look at the level specified in an ACPI_DEBUG_PRINT()
|
||||||
|
statement.
|
||||||
|
|
||||||
|
The ACPI interpreter uses several different levels, but the Linux
|
||||||
|
ACPI core and ACPI drivers generally only use ACPI_LV_INFO.
|
||||||
|
|
||||||
|
You can set the debug_level mask at boot-time using the acpi.debug_level
|
||||||
|
command line argument, and you can change it after boot by writing values
|
||||||
|
to /sys/module/acpi/parameters/debug_level.
|
||||||
|
|
||||||
|
The possible levels are defined in include/acpi/acoutput.h. Reading
|
||||||
|
/sys/module/acpi/parameters/debug_level shows the supported mask values,
|
||||||
|
currently these:
|
||||||
|
|
||||||
|
ACPI_LV_INIT 0x00000001
|
||||||
|
ACPI_LV_DEBUG_OBJECT 0x00000002
|
||||||
|
ACPI_LV_INFO 0x00000004
|
||||||
|
ACPI_LV_INIT_NAMES 0x00000020
|
||||||
|
ACPI_LV_PARSE 0x00000040
|
||||||
|
ACPI_LV_LOAD 0x00000080
|
||||||
|
ACPI_LV_DISPATCH 0x00000100
|
||||||
|
ACPI_LV_EXEC 0x00000200
|
||||||
|
ACPI_LV_NAMES 0x00000400
|
||||||
|
ACPI_LV_OPREGION 0x00000800
|
||||||
|
ACPI_LV_BFIELD 0x00001000
|
||||||
|
ACPI_LV_TABLES 0x00002000
|
||||||
|
ACPI_LV_VALUES 0x00004000
|
||||||
|
ACPI_LV_OBJECTS 0x00008000
|
||||||
|
ACPI_LV_RESOURCES 0x00010000
|
||||||
|
ACPI_LV_USER_REQUESTS 0x00020000
|
||||||
|
ACPI_LV_PACKAGE 0x00040000
|
||||||
|
ACPI_LV_ALLOCATIONS 0x00100000
|
||||||
|
ACPI_LV_FUNCTIONS 0x00200000
|
||||||
|
ACPI_LV_OPTIMIZATIONS 0x00400000
|
||||||
|
ACPI_LV_MUTEX 0x01000000
|
||||||
|
ACPI_LV_THREADS 0x02000000
|
||||||
|
ACPI_LV_IO 0x04000000
|
||||||
|
ACPI_LV_INTERRUPTS 0x08000000
|
||||||
|
ACPI_LV_AML_DISASSEMBLE 0x10000000
|
||||||
|
ACPI_LV_VERBOSE_INFO 0x20000000
|
||||||
|
ACPI_LV_FULL_TABLES 0x40000000
|
||||||
|
ACPI_LV_EVENTS 0x80000000
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
For example, drivers/acpi/bus.c contains this:
|
||||||
|
|
||||||
|
#define _COMPONENT ACPI_BUS_COMPONENT
|
||||||
|
...
|
||||||
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device insertion detected\n"));
|
||||||
|
|
||||||
|
To turn on this message, set the ACPI_BUS_COMPONENT bit in acpi.debug_layer
|
||||||
|
and the ACPI_LV_INFO bit in acpi.debug_level. (The ACPI_DEBUG_PRINT
|
||||||
|
statement uses ACPI_DB_INFO, which is macro based on the ACPI_LV_INFO
|
||||||
|
definition.)
|
||||||
|
|
||||||
|
Enable all AML "Debug" output (stores to the Debug object while interpreting
|
||||||
|
AML) during boot:
|
||||||
|
|
||||||
|
acpi.debug_layer=0xffffffff acpi.debug_level=0x2
|
||||||
|
|
||||||
|
Enable PCI and PCI interrupt routing debug messages:
|
||||||
|
|
||||||
|
acpi.debug_layer=0x400000 acpi.debug_level=0x4
|
||||||
|
|
||||||
|
Enable all ACPI hardware-related messages:
|
||||||
|
|
||||||
|
acpi.debug_layer=0x2 acpi.debug_level=0xffffffff
|
||||||
|
|
||||||
|
Enable all ACPI_DB_INFO messages after boot:
|
||||||
|
|
||||||
|
# echo 0x4 > /sys/module/acpi/parameters/debug_level
|
||||||
|
|
||||||
|
Show all valid component values:
|
||||||
|
|
||||||
|
# cat /sys/module/acpi/parameters/debug_layer
|
16
Documentation/blockdev/00-INDEX
Normal file
16
Documentation/blockdev/00-INDEX
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
00-INDEX
|
||||||
|
- this file
|
||||||
|
README.DAC960
|
||||||
|
- info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
|
||||||
|
cciss.txt
|
||||||
|
- info, major/minor #'s for Compaq's SMART Array Controllers.
|
||||||
|
cpqarray.txt
|
||||||
|
- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
|
||||||
|
floppy.txt
|
||||||
|
- notes and driver options for the floppy disk driver.
|
||||||
|
nbd.txt
|
||||||
|
- info on a TCP implementation of a network block device.
|
||||||
|
paride.txt
|
||||||
|
- information about the parallel port IDE subsystem.
|
||||||
|
ramdisk.txt
|
||||||
|
- short guide on how to set up and use the RAM disk.
|
90
Documentation/c2port.txt
Normal file
90
Documentation/c2port.txt
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
C2 port support
|
||||||
|
---------------
|
||||||
|
|
||||||
|
(C) Copyright 2007 Rodolfo Giometti <giometti@enneenne.com>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
This driver implements the support for Linux of Silicon Labs (Silabs)
|
||||||
|
C2 Interface used for in-system programming of micro controllers.
|
||||||
|
|
||||||
|
By using this driver you can reprogram the in-system flash without EC2
|
||||||
|
or EC3 debug adapter. This solution is also useful in those systems
|
||||||
|
where the micro controller is connected via special GPIOs pins.
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
|
||||||
|
The C2 Interface main references are at (http://www.silabs.com)
|
||||||
|
Silicon Laboratories site], see:
|
||||||
|
|
||||||
|
- AN127: FLASH Programming via the C2 Interface at
|
||||||
|
http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Small_Form_Factor/en/an127.pdf, and
|
||||||
|
|
||||||
|
- C2 Specification at
|
||||||
|
http://www.silabs.com/public/documents/tpub_doc/spec/Microcontrollers/en/C2spec.pdf,
|
||||||
|
|
||||||
|
however it implements a two wire serial communication protocol (bit
|
||||||
|
banging) designed to enable in-system programming, debugging, and
|
||||||
|
boundary-scan testing on low pin-count Silicon Labs devices. Currently
|
||||||
|
this code supports only flash programming but extensions are easy to
|
||||||
|
add.
|
||||||
|
|
||||||
|
Using the driver
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Once the driver is loaded you can use sysfs support to get C2port's
|
||||||
|
info or read/write in-system flash.
|
||||||
|
|
||||||
|
# ls /sys/class/c2port/c2port0/
|
||||||
|
access flash_block_size flash_erase rev_id
|
||||||
|
dev_id flash_blocks_num flash_size subsystem/
|
||||||
|
flash_access flash_data reset uevent
|
||||||
|
|
||||||
|
Initially the C2port access is disabled since you hardware may have
|
||||||
|
such lines multiplexed with other devices so, to get access to the
|
||||||
|
C2port, you need the command:
|
||||||
|
|
||||||
|
# echo 1 > /sys/class/c2port/c2port0/access
|
||||||
|
|
||||||
|
after that you should read the device ID and revision ID of the
|
||||||
|
connected micro controller:
|
||||||
|
|
||||||
|
# cat /sys/class/c2port/c2port0/dev_id
|
||||||
|
8
|
||||||
|
# cat /sys/class/c2port/c2port0/rev_id
|
||||||
|
1
|
||||||
|
|
||||||
|
However, for security reasons, the in-system flash access in not
|
||||||
|
enabled yet, to do so you need the command:
|
||||||
|
|
||||||
|
# echo 1 > /sys/class/c2port/c2port0/flash_access
|
||||||
|
|
||||||
|
After that you can read the whole flash:
|
||||||
|
|
||||||
|
# cat /sys/class/c2port/c2port0/flash_data > image
|
||||||
|
|
||||||
|
erase it:
|
||||||
|
|
||||||
|
# echo 1 > /sys/class/c2port/c2port0/flash_erase
|
||||||
|
|
||||||
|
and write it:
|
||||||
|
|
||||||
|
# cat image > /sys/class/c2port/c2port0/flash_data
|
||||||
|
|
||||||
|
after writing you have to reset the device to execute the new code:
|
||||||
|
|
||||||
|
# echo 1 > /sys/class/c2port/c2port0/reset
|
|
@ -1,4 +1,4 @@
|
||||||
The cgroup freezer is useful to batch job management system which start
|
The cgroup freezer is useful to batch job management system which start
|
||||||
and stop sets of tasks in order to schedule the resources of a machine
|
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
|
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
|
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
|
be started/stopped by the batch job management system. It also provides
|
||||||
a means to start and stop the tasks composing the job.
|
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
|
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
|
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
|
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
|
migrated between nodes in a cluster by copying the gathered information
|
||||||
to another node and restarting the tasks there.
|
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
|
and resuming tasks in userspace. Both of these signals are observable
|
||||||
from within the tasks we wish to freeze. While SIGSTOP cannot be caught,
|
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.
|
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>
|
<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.
|
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
|
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.
|
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
|
prevent the freeze/unfreeze cycle from becoming visible to the tasks
|
||||||
being frozen. This allows the bash example above and gdb to run as
|
being frozen. This allows the bash example above and gdb to run as
|
||||||
expected.
|
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
|
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.
|
cgroup. Subsequently writing "THAWED" will unfreeze the tasks in the cgroup.
|
||||||
Reading will return the current state.
|
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 :
|
* Examples of usage :
|
||||||
|
|
||||||
# mkdir /containers/freezer
|
# mkdir /containers
|
||||||
# mount -t cgroup -ofreezer freezer /containers
|
# mount -t cgroup -ofreezer freezer /containers
|
||||||
# mkdir /containers/0
|
# mkdir /containers/0
|
||||||
# echo $some_pid > /containers/0/tasks
|
# echo $some_pid > /containers/0/tasks
|
||||||
|
@ -94,6 +97,6 @@ things happens:
|
||||||
the freezer.state file
|
the freezer.state file
|
||||||
2) Userspace retries the freezing operation by writing "FROZEN" to
|
2) Userspace retries the freezing operation by writing "FROZEN" to
|
||||||
the freezer.state file (writing "FREEZING" is not legal
|
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"
|
3) The tasks that blocked the cgroup from entering the "FROZEN"
|
||||||
state disappear from the cgroup's set of tasks.
|
state disappear from the cgroup's set of tasks.
|
||||||
|
|
|
@ -23,6 +23,7 @@ Contents:
|
||||||
1.3 sparc64
|
1.3 sparc64
|
||||||
1.4 ppc
|
1.4 ppc
|
||||||
1.5 SuperH
|
1.5 SuperH
|
||||||
|
1.6 Blackfin
|
||||||
|
|
||||||
2. "Policy" / "Governor"?
|
2. "Policy" / "Governor"?
|
||||||
2.1 Policy
|
2.1 Policy
|
||||||
|
@ -97,6 +98,17 @@ The following SuperH processors are supported by cpufreq:
|
||||||
SH-3
|
SH-3
|
||||||
SH-4
|
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" ?
|
2. "Policy" / "Governor" ?
|
||||||
==========================
|
==========================
|
||||||
|
|
|
@ -28,10 +28,7 @@ Manish Singh <manish.singh@oracle.com>
|
||||||
Caveats
|
Caveats
|
||||||
=======
|
=======
|
||||||
Features which OCFS2 does not support yet:
|
Features which OCFS2 does not support yet:
|
||||||
- extended attributes
|
|
||||||
- quotas
|
- quotas
|
||||||
- cluster aware flock
|
|
||||||
- cluster aware lockf
|
|
||||||
- Directory change notification (F_NOTIFY)
|
- Directory change notification (F_NOTIFY)
|
||||||
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
||||||
- POSIX ACLs
|
- POSIX ACLs
|
||||||
|
|
|
@ -44,6 +44,7 @@ Table of Contents
|
||||||
2.14 /proc/<pid>/io - Display the IO accounting fields
|
2.14 /proc/<pid>/io - Display the IO accounting fields
|
||||||
2.15 /proc/<pid>/coredump_filter - Core dump filtering settings
|
2.15 /proc/<pid>/coredump_filter - Core dump filtering settings
|
||||||
2.16 /proc/<pid>/mountinfo - Information about mounts
|
2.16 /proc/<pid>/mountinfo - Information about mounts
|
||||||
|
2.17 /proc/sys/fs/epoll - Configuration options for the epoll interface
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Preface
|
Preface
|
||||||
|
@ -2483,4 +2484,30 @@ For more information on mount propagation see:
|
||||||
|
|
||||||
Documentation/filesystems/sharedsubtree.txt
|
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 and links it into the resulting kernel binary. By default, this
|
||||||
archive is empty (consuming 134 bytes on x86).
|
archive is empty (consuming 134 bytes on x86).
|
||||||
|
|
||||||
The config option CONFIG_INITRAMFS_SOURCE (for some reason buried under
|
The config option CONFIG_INITRAMFS_SOURCE (in General Setup in menuconfig,
|
||||||
devices->block devices in menuconfig, and living in usr/Kconfig) can be used
|
and living in usr/Kconfig) can be used to specify a source for the
|
||||||
to specify a source for the initramfs archive, which will automatically be
|
initramfs archive, which will automatically be incorporated into the
|
||||||
incorporated into the resulting binary. This option can point to an existing
|
resulting binary. This option can point to an existing gzipped cpio
|
||||||
gzipped cpio archive, a directory containing files to be archived, or a text
|
archive, a directory containing files to be archived, or a text file
|
||||||
file specification such as the following example:
|
specification such as the following example:
|
||||||
|
|
||||||
dir /dev 755 0 0
|
dir /dev 755 0 0
|
||||||
nod /dev/console 644 0 0 c 5 1
|
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:
|
today:
|
||||||
- dcssblk: s390 dcss block device driver
|
- dcssblk: s390 dcss block device driver
|
||||||
|
|
||||||
An address space operation named get_xip_page is used to retrieve reference
|
An address space operation named get_xip_mem is used to retrieve references
|
||||||
to a struct page. To address the target page, a reference to an address_space,
|
to a page frame number and a kernel address. To obtain these values a reference
|
||||||
and a sector number is provided. A 3rd argument indicates whether the
|
to an address_space is provided. This function assigns values to the kmem and
|
||||||
function should allocate blocks if needed.
|
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
|
This address space operation is mutually exclusive with readpage&writepage that
|
||||||
do page cache read/write operations.
|
do page cache read/write operations.
|
||||||
|
|
67
Documentation/hwmon/adt7462
Normal file
67
Documentation/hwmon/adt7462
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
Kernel driver adt7462
|
||||||
|
======================
|
||||||
|
|
||||||
|
Supported chips:
|
||||||
|
* Analog Devices ADT7462
|
||||||
|
Prefix: 'adt7462'
|
||||||
|
Addresses scanned: I2C 0x58, 0x5C
|
||||||
|
Datasheet: Publicly available at the Analog Devices website
|
||||||
|
|
||||||
|
Author: Darrick J. Wong
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This driver implements support for the Analog Devices ADT7462 chip family.
|
||||||
|
|
||||||
|
This chip is a bit of a beast. It has 8 counters for measuring fan speed. It
|
||||||
|
can also measure 13 voltages or 4 temperatures, or various combinations of the
|
||||||
|
two. See the chip documentation for more details about the exact set of
|
||||||
|
configurations. This driver does not allow one to configure the chip; that is
|
||||||
|
left to the system designer.
|
||||||
|
|
||||||
|
A sophisticated control system for the PWM outputs is designed into the ADT7462
|
||||||
|
that allows fan speed to be adjusted automatically based on any of the three
|
||||||
|
temperature sensors. Each PWM output is individually adjustable and
|
||||||
|
programmable. Once configured, the ADT7462 will adjust the PWM outputs in
|
||||||
|
response to the measured temperatures without further host intervention. This
|
||||||
|
feature can also be disabled for manual control of the PWM's.
|
||||||
|
|
||||||
|
Each of the measured inputs (voltage, temperature, fan speed) has
|
||||||
|
corresponding high/low limit values. The ADT7462 will signal an ALARM if
|
||||||
|
any measured value exceeds either limit.
|
||||||
|
|
||||||
|
The ADT7462 samples all inputs continuously. The driver will not read
|
||||||
|
the registers more often than once every other second. Further,
|
||||||
|
configuration data is only read once per minute.
|
||||||
|
|
||||||
|
Special Features
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The ADT7462 have a 10-bit ADC and can therefore measure temperatures
|
||||||
|
with 0.25 degC resolution.
|
||||||
|
|
||||||
|
The Analog Devices datasheet is very detailed and describes a procedure for
|
||||||
|
determining an optimal configuration for the automatic PWM control.
|
||||||
|
|
||||||
|
The driver will report sensor labels when it is able to determine that
|
||||||
|
information from the configuration registers.
|
||||||
|
|
||||||
|
Configuration Notes
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Besides standard interfaces driver adds the following:
|
||||||
|
|
||||||
|
* PWM Control
|
||||||
|
|
||||||
|
* pwm#_auto_point1_pwm and temp#_auto_point1_temp and
|
||||||
|
* pwm#_auto_point2_pwm and temp#_auto_point2_temp -
|
||||||
|
|
||||||
|
point1: Set the pwm speed at a lower temperature bound.
|
||||||
|
point2: Set the pwm speed at a higher temperature bound.
|
||||||
|
|
||||||
|
The ADT7462 will scale the pwm between the lower and higher pwm speed when
|
||||||
|
the temperature is between the two temperature boundaries. PWM values range
|
||||||
|
from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
|
||||||
|
temperature sensor associated with the PWM control exceeds temp#_max.
|
||||||
|
|
49
Documentation/hwmon/lis3lv02d
Normal file
49
Documentation/hwmon/lis3lv02d
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
Kernel driver lis3lv02d
|
||||||
|
==================
|
||||||
|
|
||||||
|
Supported chips:
|
||||||
|
|
||||||
|
* STMicroelectronics LIS3LV02DL and LIS3LV02DQ
|
||||||
|
|
||||||
|
Author:
|
||||||
|
Yan Burman <burman.yan@gmail.com>
|
||||||
|
Eric Piel <eric.piel@tremplin-utc.net>
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This driver provides support for the accelerometer found in various HP laptops
|
||||||
|
sporting the feature officially called "HP Mobile Data Protection System 3D" or
|
||||||
|
"HP 3D DriveGuard". It detect automatically laptops with this sensor. Known models
|
||||||
|
(for now the HP 2133, nc6420, nc2510, nc8510, nc84x0, nw9440 and nx9420) will
|
||||||
|
have their axis automatically oriented on standard way (eg: you can directly
|
||||||
|
play neverball). The accelerometer data is readable via
|
||||||
|
/sys/devices/platform/lis3lv02d.
|
||||||
|
|
||||||
|
Sysfs attributes under /sys/devices/platform/lis3lv02d/:
|
||||||
|
position - 3D position that the accelerometer reports. Format: "(x,y,z)"
|
||||||
|
calibrate - read: values (x, y, z) that are used as the base for input class device operation.
|
||||||
|
write: forces the base to be recalibrated with the current position.
|
||||||
|
rate - reports the sampling rate of the accelerometer device in HZ
|
||||||
|
|
||||||
|
This driver also provides an absolute input class device, allowing
|
||||||
|
the laptop to act as a pinball machine-esque joystick.
|
||||||
|
|
||||||
|
Axes orientation
|
||||||
|
----------------
|
||||||
|
|
||||||
|
For better compatibility between the various laptops. The values reported by
|
||||||
|
the accelerometer are converted into a "standard" organisation of the axes
|
||||||
|
(aka "can play neverball out of the box"):
|
||||||
|
* When the laptop is horizontal the position reported is about 0 for X and Y
|
||||||
|
and a positive value for Z
|
||||||
|
* If the left side is elevated, X increases (becomes positive)
|
||||||
|
* If the front side (where the touchpad is) is elevated, Y decreases (becomes negative)
|
||||||
|
* If the laptop is put upside-down, Z becomes negative
|
||||||
|
|
||||||
|
If your laptop model is not recognized (cf "dmesg"), you can send an email to the
|
||||||
|
authors to add it to the database. When reporting a new laptop, please include
|
||||||
|
the output of "dmidecode" plus the value of /sys/devices/platform/lis3lv02d/position
|
||||||
|
in these four cases.
|
||||||
|
|
31
Documentation/ics932s401
Normal file
31
Documentation/ics932s401
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
Kernel driver ics932s401
|
||||||
|
======================
|
||||||
|
|
||||||
|
Supported chips:
|
||||||
|
* IDT ICS932S401
|
||||||
|
Prefix: 'ics932s401'
|
||||||
|
Addresses scanned: I2C 0x69
|
||||||
|
Datasheet: Publically available at the IDT website
|
||||||
|
|
||||||
|
Author: Darrick J. Wong
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This driver implements support for the IDT ICS932S401 chip family.
|
||||||
|
|
||||||
|
This chip has 4 clock outputs--a base clock for the CPU (which is likely
|
||||||
|
multiplied to get the real CPU clock), a system clock, a PCI clock, a USB
|
||||||
|
clock, and a reference clock. The driver reports selected and actual
|
||||||
|
frequency. If spread spectrum mode is enabled, the driver also reports by what
|
||||||
|
percent the clock signal is being spread, which should be between 0 and -0.5%.
|
||||||
|
All frequencies are reported in KHz.
|
||||||
|
|
||||||
|
The ICS932S401 monitors all inputs continuously. The driver will not read
|
||||||
|
the registers more often than once every other second.
|
||||||
|
|
||||||
|
Special Features
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The clocks could be reprogrammed to increase system speed. I will not help you
|
||||||
|
do this, as you risk damaging your system!
|
|
@ -20,10 +20,11 @@ pressed or released a BUTTON_IRQ happens. The driver could look like:
|
||||||
|
|
||||||
static struct input_dev *button_dev;
|
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_report_key(button_dev, BTN_0, inb(BUTTON_PORT) & 1);
|
||||||
input_sync(button_dev);
|
input_sync(button_dev);
|
||||||
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init button_init(void)
|
static int __init button_init(void)
|
||||||
|
|
10
Documentation/ioctl/00-INDEX
Normal file
10
Documentation/ioctl/00-INDEX
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
00-INDEX
|
||||||
|
- this file
|
||||||
|
cdrom.txt
|
||||||
|
- summary of CDROM ioctl calls
|
||||||
|
hdio.txt
|
||||||
|
- summary of HDIO_ ioctl calls
|
||||||
|
ioctl-decoding.txt
|
||||||
|
- how to decode the bits of an IOCTL code
|
||||||
|
ioctl-number.txt
|
||||||
|
- how to implement and register device/driver ioctl calls
|
|
@ -198,59 +198,42 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
that require a timer override, but don't have
|
that require a timer override, but don't have
|
||||||
HPET
|
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>
|
Format: <int>
|
||||||
Each bit of the <int> indicates an ACPI debug layer,
|
CONFIG_ACPI_DEBUG must be enabled to produce any ACPI
|
||||||
1: enable, 0: disable. It is useful for boot time
|
debug output. Bits in debug_layer correspond to a
|
||||||
debugging. After system has booted up, it can be set
|
_COMPONENT in an ACPI source file, e.g.,
|
||||||
via /sys/module/acpi/parameters/debug_layer.
|
#define _COMPONENT ACPI_PCI_COMPONENT
|
||||||
CONFIG_ACPI_DEBUG must be enabled for this to produce any output.
|
Bits in debug_level correspond to a level in
|
||||||
Available bits (add the numbers together) to enable debug output
|
ACPI_DEBUG_PRINT statements, e.g.,
|
||||||
for specific parts of the ACPI subsystem:
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
|
||||||
0x01 utilities 0x02 hardware 0x04 events 0x08 tables
|
See Documentation/acpi/debug.txt for more information
|
||||||
0x10 namespace 0x20 parser 0x40 dispatcher
|
about debug layers and levels.
|
||||||
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.
|
|
||||||
|
|
||||||
acpi.debug_level= [HW,ACPI]
|
Enable AML "Debug" output, i.e., stores to the Debug
|
||||||
Format: <int>
|
object while interpreting AML:
|
||||||
Each bit of the <int> indicates an ACPI debug level,
|
acpi.debug_layer=0xffffffff acpi.debug_level=0x2
|
||||||
which corresponds to the level in an ACPI_DEBUG_PRINT
|
Enable PCI/PCI interrupt routing info messages:
|
||||||
statement. After system has booted up, this mask
|
acpi.debug_layer=0x400000 acpi.debug_level=0x4
|
||||||
can be set via /sys/module/acpi/parameters/debug_level.
|
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
|
Some values produce so much output that the system is
|
||||||
any output. The number can be in decimal or prefixed
|
unusable. The "log_buf_len" parameter may be useful
|
||||||
with 0x in hex. Some of these options produce so much
|
if you need to capture more output.
|
||||||
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.
|
|
||||||
|
|
||||||
acpi.power_nocheck= [HW,ACPI]
|
acpi.power_nocheck= [HW,ACPI]
|
||||||
Format: 1/0 enable/disable the check of power state.
|
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:
|
Possible values are:
|
||||||
isolate - enable device isolation (each device, as far
|
isolate - enable device isolation (each device, as far
|
||||||
as possible, will get its own protection
|
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
|
fullflush - enable flushing of IO/TLB entries when
|
||||||
they are unmapped. Otherwise they are
|
they are unmapped. Otherwise they are
|
||||||
flushed before they will be reused, which
|
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]
|
digiepca= [HW,SERIAL]
|
||||||
See drivers/char/README.epca and
|
See drivers/char/README.epca and
|
||||||
Documentation/digiepca.txt.
|
Documentation/serial/digiepca.txt.
|
||||||
|
|
||||||
disable_mtrr_cleanup [X86]
|
disable_mtrr_cleanup [X86]
|
||||||
enable_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.
|
See header of drivers/scsi/fdomain.c.
|
||||||
|
|
||||||
floppy= [HW]
|
floppy= [HW]
|
||||||
See Documentation/floppy.txt.
|
See Documentation/blockdev/floppy.txt.
|
||||||
|
|
||||||
force_pal_cache_flush
|
force_pal_cache_flush
|
||||||
[IA-64] Avoid check_sal_cache_flush which may hang on
|
[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.
|
the same attribute, the last one is used.
|
||||||
|
|
||||||
load_ramdisk= [RAM] List of ramdisks to load from floppy
|
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.
|
lockd.nlm_grace_period=P [NFS] Assign grace period.
|
||||||
Format: <integer>
|
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
|
it is equivalent to "nosmp", which also disables
|
||||||
the IO APIC.
|
the IO APIC.
|
||||||
|
|
||||||
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
max_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory greater than
|
||||||
equal to this physical address is ignored.
|
or equal to this physical address is ignored.
|
||||||
|
|
||||||
max_luns= [SCSI] Maximum number of LUNs to probe.
|
max_luns= [SCSI] Maximum number of LUNs to probe.
|
||||||
Should be between 1 and 2^32-1.
|
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]
|
mga= [HW,DRM]
|
||||||
|
|
||||||
|
min_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory below this
|
||||||
|
physical address is ignored.
|
||||||
|
|
||||||
mminit_loglevel=
|
mminit_loglevel=
|
||||||
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
|
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
|
||||||
parameter allows control of the logging verbosity for
|
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]
|
pcd. [PARIDE]
|
||||||
See header of drivers/block/paride/pcd.c.
|
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:
|
pci=option[,option...] [PCI] various PCI subsystem options:
|
||||||
off [X86] don't probe for the PCI bus
|
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
|
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||||
|
|
||||||
pd. [PARIDE]
|
pd. [PARIDE]
|
||||||
See Documentation/paride.txt.
|
See Documentation/blockdev/paride.txt.
|
||||||
|
|
||||||
pdcchassis= [PARISC,HW] Disable/Enable PDC Chassis Status codes at
|
pdcchassis= [PARISC,HW] Disable/Enable PDC Chassis Status codes at
|
||||||
boot time.
|
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
|
See arch/parisc/kernel/pdc_chassis.c
|
||||||
|
|
||||||
pf. [PARIDE]
|
pf. [PARIDE]
|
||||||
See Documentation/paride.txt.
|
See Documentation/blockdev/paride.txt.
|
||||||
|
|
||||||
pg. [PARIDE]
|
pg. [PARIDE]
|
||||||
See Documentation/paride.txt.
|
See Documentation/blockdev/paride.txt.
|
||||||
|
|
||||||
pirq= [SMP,APIC] Manual mp-table setup
|
pirq= [SMP,APIC] Manual mp-table setup
|
||||||
See Documentation/x86/i386/IO-APIC.txt.
|
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
|
prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk
|
||||||
before loading.
|
before loading.
|
||||||
See Documentation/ramdisk.txt.
|
See Documentation/blockdev/ramdisk.txt.
|
||||||
|
|
||||||
psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
|
psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
|
||||||
probe for; one of (bare|imps|exps|lifebook|any).
|
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>
|
<io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
|
||||||
|
|
||||||
pt. [PARIDE]
|
pt. [PARIDE]
|
||||||
See Documentation/paride.txt.
|
See Documentation/blockdev/paride.txt.
|
||||||
|
|
||||||
pty.legacy_count=
|
pty.legacy_count=
|
||||||
[KNL] Number of legacy pty's. Overwrites compiled-in
|
[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.
|
See Documentation/md.txt.
|
||||||
|
|
||||||
ramdisk_blocksize= [RAM]
|
ramdisk_blocksize= [RAM]
|
||||||
See Documentation/ramdisk.txt.
|
See Documentation/blockdev/ramdisk.txt.
|
||||||
|
|
||||||
ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
|
ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
|
||||||
See Documentation/ramdisk.txt.
|
See Documentation/blockdev/ramdisk.txt.
|
||||||
|
|
||||||
rcupdate.blimit= [KNL,BOOT]
|
rcupdate.blimit= [KNL,BOOT]
|
||||||
Set maximum number of finished RCU callbacks to process
|
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
|
See Documentation/sonypi.txt
|
||||||
|
|
||||||
specialix= [HW,SERIAL] Specialix multi-serial port adapter
|
specialix= [HW,SERIAL] Specialix multi-serial port adapter
|
||||||
See Documentation/specialix.txt.
|
See Documentation/serial/specialix.txt.
|
||||||
|
|
||||||
spia_io_base= [HW,MTD]
|
spia_io_base= [HW,MTD]
|
||||||
spia_fio_base=
|
spia_fio_base=
|
||||||
|
|
|
@ -96,7 +96,7 @@ Letting the PHY Abstraction Layer do Everything
|
||||||
static void adjust_link(struct net_device *dev);
|
static void adjust_link(struct net_device *dev);
|
||||||
|
|
||||||
Next, you need to know the device name of the PHY connected to this device.
|
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,
|
bus id, and the second is the PHY's address on that bus. Typically,
|
||||||
the bus is responsible for making its ID unique.
|
the bus is responsible for making its ID unique.
|
||||||
|
|
||||||
|
|
35
Documentation/printk-formats.txt
Normal file
35
Documentation/printk-formats.txt
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
If variable is of Type, use printk format specifier:
|
||||||
|
---------------------------------------------------------
|
||||||
|
int %d or %x
|
||||||
|
unsigned int %u or %x
|
||||||
|
long %ld or %lx
|
||||||
|
unsigned long %lu or %lx
|
||||||
|
long long %lld or %llx
|
||||||
|
unsigned long long %llu or %llx
|
||||||
|
size_t %zu or %zx
|
||||||
|
ssize_t %zd or %zx
|
||||||
|
|
||||||
|
Raw pointer value SHOULD be printed with %p.
|
||||||
|
|
||||||
|
u64 SHOULD be printed with %llu/%llx, (unsigned long long):
|
||||||
|
|
||||||
|
printk("%llu", (unsigned long long)u64_var);
|
||||||
|
|
||||||
|
s64 SHOULD be printed with %lld/%llx, (long long):
|
||||||
|
|
||||||
|
printk("%lld", (long long)s64_var);
|
||||||
|
|
||||||
|
If <type> is dependent on a config option for its size (e.g., sector_t,
|
||||||
|
blkcnt_t, phys_addr_t, resource_size_t) or is architecture-dependent
|
||||||
|
for its size (e.g., tcflag_t), use a format specifier of its largest
|
||||||
|
possible type and explicitly cast to it. Example:
|
||||||
|
|
||||||
|
printk("test: sector number/total blocks: %llu/%llu\n",
|
||||||
|
(unsigned long long)sector, (unsigned long long)blockcount);
|
||||||
|
|
||||||
|
Reminder: sizeof() result is of type size_t.
|
||||||
|
|
||||||
|
Thank you for your cooperation and attention.
|
||||||
|
|
||||||
|
|
||||||
|
By Randy Dunlap <rdunlap@xenotime.net>
|
24
Documentation/serial/00-INDEX
Normal file
24
Documentation/serial/00-INDEX
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
00-INDEX
|
||||||
|
- this file.
|
||||||
|
README.cycladesZ
|
||||||
|
- info on Cyclades-Z firmware loading.
|
||||||
|
computone.txt
|
||||||
|
- info on Computone Intelliport II/Plus Multiport Serial Driver.
|
||||||
|
digiepca.txt
|
||||||
|
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
||||||
|
hayes-esp.txt
|
||||||
|
- info on using the Hayes ESP serial driver.
|
||||||
|
moxa-smartio
|
||||||
|
- file with info on installing/using Moxa multiport serial driver.
|
||||||
|
riscom8.txt
|
||||||
|
- notes on using the RISCom/8 multi-port serial driver.
|
||||||
|
rocket.txt
|
||||||
|
- info on the Comtrol RocketPort multiport serial driver.
|
||||||
|
specialix.txt
|
||||||
|
- info on hardware/driver for specialix IO8+ multiport serial card.
|
||||||
|
stallion.txt
|
||||||
|
- info on using the Stallion multiport serial driver.
|
||||||
|
sx.txt
|
||||||
|
- info on the Specialix SX/SI multiport serial driver.
|
||||||
|
tty.txt
|
||||||
|
- guide to the locking policies of the tty layer.
|
|
@ -247,7 +247,7 @@ shar archive to make it easier to extract the script from the documentation.
|
||||||
To create the ip2mkdev shell script change to a convenient directory (/tmp
|
To create the ip2mkdev shell script change to a convenient directory (/tmp
|
||||||
works just fine) and run the following command:
|
works just fine) and run the following command:
|
||||||
|
|
||||||
unshar Documentation/computone.txt
|
unshar Documentation/serial/computone.txt
|
||||||
(This file)
|
(This file)
|
||||||
|
|
||||||
You should now have a file ip2mkdev in your current working directory with
|
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
|
ref Reference board
|
||||||
dell-m4-1 Dell desktops
|
dell-m4-1 Dell desktops
|
||||||
dell-m4-2 Dell desktops
|
dell-m4-2 Dell desktops
|
||||||
|
dell-m4-3 Dell desktops
|
||||||
|
|
||||||
STAC92HD73*
|
STAC92HD73*
|
||||||
ref Reference board
|
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
|
STAC9872
|
||||||
vaio Setup for VAIO FE550G/SZ110
|
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
|
/* if your mach-* infrastructure doesn't support kernels that can
|
||||||
* run on multiple boards, pdata wouldn't benefit from "__init".
|
* 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)
|
static __init board_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,7 +37,7 @@ $ echo mmiotrace > /debug/tracing/current_tracer
|
||||||
$ cat /debug/tracing/trace_pipe > mydump.txt &
|
$ cat /debug/tracing/trace_pipe > mydump.txt &
|
||||||
Start X or whatever.
|
Start X or whatever.
|
||||||
$ echo "X is up" > /debug/tracing/trace_marker
|
$ echo "X is up" > /debug/tracing/trace_marker
|
||||||
$ echo none > /debug/tracing/current_tracer
|
$ echo nop > /debug/tracing/current_tracer
|
||||||
Check for lost events.
|
Check for lost events.
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ which action. It is recommended to place descriptive markers about what you
|
||||||
do.
|
do.
|
||||||
|
|
||||||
Shut down mmiotrace (requires root privileges):
|
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
|
The 'cat' process exits. If it does not, kill it by issuing 'fg' command and
|
||||||
pressing ctrl+c.
|
pressing ctrl+c.
|
||||||
|
|
||||||
|
@ -81,7 +81,9 @@ are:
|
||||||
$ cat /debug/tracing/trace_entries
|
$ cat /debug/tracing/trace_entries
|
||||||
gives you a number. Approximately double this number and write it back, for
|
gives you a number. Approximately double this number and write it back, for
|
||||||
instance:
|
instance:
|
||||||
|
$ echo 0 > /debug/tracing/tracing_enabled
|
||||||
$ echo 128000 > /debug/tracing/trace_entries
|
$ echo 128000 > /debug/tracing/trace_entries
|
||||||
|
$ echo 1 > /debug/tracing/tracing_enabled
|
||||||
Then start again from the top.
|
Then start again from the top.
|
||||||
|
|
||||||
If you are doing a trace for a driver project, e.g. Nouveau, you should also
|
If you are doing a trace for a driver project, e.g. Nouveau, you should also
|
||||||
|
|
46
Documentation/w1/masters/omap-hdq
Normal file
46
Documentation/w1/masters/omap-hdq
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
Kernel driver for omap HDQ/1-wire module.
|
||||||
|
========================================
|
||||||
|
|
||||||
|
Supported chips:
|
||||||
|
================
|
||||||
|
HDQ/1-wire controller on the TI OMAP 2430/3430 platforms.
|
||||||
|
|
||||||
|
A useful link about HDQ basics:
|
||||||
|
===============================
|
||||||
|
http://focus.ti.com/lit/an/slua408/slua408.pdf
|
||||||
|
|
||||||
|
Description:
|
||||||
|
============
|
||||||
|
The HDQ/1-Wire module of TI OMAP2430/3430 platforms implement the hardware
|
||||||
|
protocol of the master functions of the Benchmark HDQ and the Dallas
|
||||||
|
Semiconductor 1-Wire protocols. These protocols use a single wire for
|
||||||
|
communication between the master (HDQ/1-Wire controller) and the slave
|
||||||
|
(HDQ/1-Wire external compliant device).
|
||||||
|
|
||||||
|
A typical application of the HDQ/1-Wire module is the communication with battery
|
||||||
|
monitor (gas gauge) integrated circuits.
|
||||||
|
|
||||||
|
The controller supports operation in both HDQ and 1-wire mode. The essential
|
||||||
|
difference between the HDQ and 1-wire mode is how the slave device responds to
|
||||||
|
initialization pulse.In HDQ mode, the firmware does not require the host to
|
||||||
|
create an initialization pulse to the slave.However, the slave can be reset by
|
||||||
|
using an initialization pulse (also referred to as a break pulse).The slave
|
||||||
|
does not respond with a presence pulse as it does in the 1-Wire protocol.
|
||||||
|
|
||||||
|
Remarks:
|
||||||
|
========
|
||||||
|
The driver (drivers/w1/masters/omap_hdq.c) supports the HDQ mode of the
|
||||||
|
controller. In this mode, as we can not read the ID which obeys the W1
|
||||||
|
spec(family:id:crc), a module parameter can be passed to the driver which will
|
||||||
|
be used to calculate the CRC and pass back an appropriate slave ID to the W1
|
||||||
|
core.
|
||||||
|
|
||||||
|
By default the master driver and the BQ slave i/f
|
||||||
|
driver(drivers/w1/slaves/w1_bq27000.c) sets the ID to 1.
|
||||||
|
Please note to load both the modules with a different ID if required, but note
|
||||||
|
that the ID used should be same for both master and slave driver loading.
|
||||||
|
|
||||||
|
e.g:
|
||||||
|
insmod omap_hdq.ko W1_ID=2
|
||||||
|
inamod w1_bq27000.ko F_ID=2
|
||||||
|
|
20
MAINTAINERS
20
MAINTAINERS
|
@ -1809,7 +1809,7 @@ S: Maintained
|
||||||
|
|
||||||
FTRACE
|
FTRACE
|
||||||
P: Steven Rostedt
|
P: Steven Rostedt
|
||||||
M: srostedt@redhat.com
|
M: rostedt@goodmis.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
FUJITSU FR-V (FRV) PORT
|
FUJITSU FR-V (FRV) PORT
|
||||||
|
@ -2216,6 +2216,13 @@ M: adaplas@gmail.com
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||||
S: Maintained
|
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
|
INTEL IA32 MICROCODE UPDATE SUPPORT
|
||||||
P: Tigran Aivazian
|
P: Tigran Aivazian
|
||||||
M: tigran@aivazian.fsnet.co.uk
|
M: tigran@aivazian.fsnet.co.uk
|
||||||
|
@ -2696,6 +2703,11 @@ P: Arnaldo Carvalho de Melo
|
||||||
M: acme@ghostprotocols.net
|
M: acme@ghostprotocols.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
LIS3LV02D ACCELEROMETER DRIVER
|
||||||
|
P: Eric Piel
|
||||||
|
M: eric.piel@tremplin-utc.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
LM83 HARDWARE MONITOR DRIVER
|
LM83 HARDWARE MONITOR DRIVER
|
||||||
P: Jean Delvare
|
P: Jean Delvare
|
||||||
M: khali@linux-fr.org
|
M: khali@linux-fr.org
|
||||||
|
@ -3377,7 +3389,9 @@ S: Maintained
|
||||||
|
|
||||||
PNP SUPPORT
|
PNP SUPPORT
|
||||||
P: Adam Belay
|
P: Adam Belay
|
||||||
M: ambx1@neo.rr.com
|
M: abelay@mit.edu
|
||||||
|
P: Bjorn Helgaas
|
||||||
|
M: bjorn.helgaas@hp.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
PNXxxxx I2C DRIVER
|
PNXxxxx I2C DRIVER
|
||||||
|
@ -3914,8 +3928,6 @@ M: bootc@bootc.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||||
P: Ingo Molnar
|
|
||||||
M: mingo@redhat.com
|
|
||||||
P: Neil Brown
|
P: Neil Brown
|
||||||
M: neilb@suse.de
|
M: neilb@suse.de
|
||||||
L: linux-raid@vger.kernel.org
|
L: linux-raid@vger.kernel.org
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1,8 +1,8 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 28
|
SUBLEVEL = 28
|
||||||
EXTRAVERSION = -rc4
|
EXTRAVERSION = -rc7
|
||||||
NAME = Killer Bat of Doom
|
NAME = Erotic Pickled Herring
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# 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
|
# task_pt_regs() in asm/processor.h or asm/ptrace.h
|
||||||
# arch_has_single_step() if there is hardware single-step support
|
# arch_has_single_step() if there is hardware single-step support
|
||||||
# arch_has_block_step() if there is hardware block-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
|
# asm/syscall.h supplying asm-generic/syscall.h interface
|
||||||
# linux/regset.h user_regset interfaces
|
# linux/regset.h user_regset interfaces
|
||||||
# CORE_DUMP_USE_REGSET #define'd in linux/elf.h
|
# 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);
|
return PCI_SLOT(dev->devfn);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __devinit
|
void
|
||||||
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
||||||
struct resource *res)
|
struct resource *res)
|
||||||
{
|
{
|
||||||
|
|
|
@ -121,7 +121,7 @@ wait_boot_cpu_to_stop(int cpuid)
|
||||||
/*
|
/*
|
||||||
* Where secondaries begin a life of C.
|
* Where secondaries begin a life of C.
|
||||||
*/
|
*/
|
||||||
void __init
|
void __cpuinit
|
||||||
smp_callin(void)
|
smp_callin(void)
|
||||||
{
|
{
|
||||||
int cpuid = hard_smp_processor_id();
|
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
|
* Send a message to a secondary's console. "START" is one such
|
||||||
* interesting message. ;-)
|
* interesting message. ;-)
|
||||||
*/
|
*/
|
||||||
static void __init
|
static void __cpuinit
|
||||||
send_secondary_console_msg(char *str, int cpuid)
|
send_secondary_console_msg(char *str, int cpuid)
|
||||||
{
|
{
|
||||||
struct percpu_struct *cpu;
|
struct percpu_struct *cpu;
|
||||||
|
@ -289,7 +289,7 @@ recv_secondary_console_msg(void)
|
||||||
/*
|
/*
|
||||||
* Convince the console to have a secondary cpu begin execution.
|
* 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)
|
secondary_cpu_start(int cpuid, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
struct percpu_struct *cpu;
|
struct percpu_struct *cpu;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
static int opDEC_fix;
|
static int opDEC_fix;
|
||||||
|
|
||||||
static void __init
|
static void __cpuinit
|
||||||
opDEC_check(void)
|
opDEC_check(void)
|
||||||
{
|
{
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
|
@ -1072,7 +1072,7 @@ do_entUnaUser(void __user * va, unsigned long opcode,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init
|
void __cpuinit
|
||||||
trap_init(void)
|
trap_init(void)
|
||||||
{
|
{
|
||||||
/* Tell PAL-code what global pointer we want in the kernel. */
|
/* 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_AKITA is not set
|
||||||
# CONFIG_MACH_SPITZ is not set
|
# CONFIG_MACH_SPITZ is not set
|
||||||
# CONFIG_MACH_BORZOI 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_VIPER is not set
|
||||||
# CONFIG_ARCH_PXA_ESERIES is not set
|
# CONFIG_ARCH_PXA_ESERIES is not set
|
||||||
# CONFIG_TRIZEPS_PXA 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,
|
int dmabounce_sync_for_device(struct device *, dma_addr_t, unsigned long,
|
||||||
size_t, enum dma_data_direction);
|
size_t, enum dma_data_direction);
|
||||||
#else
|
#else
|
||||||
#define dmabounce_sync_for_cpu(dev,dma,off,sz,dir) (1)
|
static inline int dmabounce_sync_for_cpu(struct device *d, dma_addr_t addr,
|
||||||
#define dmabounce_sync_for_device(dev,dma,off,sz,dir) (1)
|
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 */
|
/* hw_desc->next_desc is the same location for all channels */
|
||||||
union iop3xx_desc hw_desc = { .ptr = desc->hw_desc, };
|
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;
|
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_desc_aau *hw_desc = desc->hw_desc;
|
||||||
struct iop3xx_aau_desc_ctrl desc_ctrl = hw_desc->desc_ctrl_field;
|
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;
|
return desc_ctrl.zero_result_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,12 @@
|
||||||
|
|
||||||
#define IOP_ADMA_SLOT_SIZE 32
|
#define IOP_ADMA_SLOT_SIZE 32
|
||||||
#define IOP_ADMA_THRESHOLD 4
|
#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
|
* 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 */
|
/* types 0-3 are defined in asm/io.h */
|
||||||
#define MT_CACHECLEAN 4
|
#define MT_UNCACHED 4
|
||||||
#define MT_MINICLEAN 5
|
#define MT_CACHECLEAN 5
|
||||||
#define MT_LOW_VECTORS 6
|
#define MT_MINICLEAN 6
|
||||||
#define MT_HIGH_VECTORS 7
|
#define MT_LOW_VECTORS 7
|
||||||
#define MT_MEMORY 8
|
#define MT_HIGH_VECTORS 8
|
||||||
#define MT_ROM 9
|
#define MT_MEMORY 9
|
||||||
|
#define MT_ROM 10
|
||||||
|
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
extern void iotable_init(struct map_desc *, int);
|
extern void iotable_init(struct map_desc *, int);
|
||||||
|
|
|
@ -94,20 +94,6 @@
|
||||||
#include <asm/hardware/ep7212.h>
|
#include <asm/hardware/ep7212.h>
|
||||||
#include <asm/hardware/cs89712.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 */
|
/* static cdb89712_map_io() areas */
|
||||||
#define REGISTER_START 0x80000000
|
#define REGISTER_START 0x80000000
|
||||||
#define REGISTER_SIZE 0x4000
|
#define REGISTER_SIZE 0x4000
|
||||||
|
@ -198,14 +184,6 @@
|
||||||
#define CEIVA_FLASH_SIZE 0x100000
|
#define CEIVA_FLASH_SIZE 0x100000
|
||||||
#define CEIVA_FLASH_WIDTH 2
|
#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
|
* SED1355 LCD controller
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -275,9 +275,9 @@ static struct map_desc cl7500_io_desc[] __initdata = {
|
||||||
.length = ISA_SIZE,
|
.length = ISA_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}, { /* Flash */
|
}, { /* Flash */
|
||||||
.virtual = FLASH_BASE,
|
.virtual = CLPS7500_FLASH_BASE,
|
||||||
.pfn = __phys_to_pfn(FLASH_START),
|
.pfn = __phys_to_pfn(CLPS7500_FLASH_START),
|
||||||
.length = FLASH_SIZE,
|
.length = CLPS7500_FLASH_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}, { /* LED */
|
}, { /* LED */
|
||||||
.virtual = LED_BASE,
|
.virtual = LED_BASE,
|
||||||
|
|
|
@ -39,9 +39,9 @@
|
||||||
#define ISA_SIZE 0x00010000
|
#define ISA_SIZE 0x00010000
|
||||||
#define ISA_BASE 0xe1000000
|
#define ISA_BASE 0xe1000000
|
||||||
|
|
||||||
#define FLASH_START 0x01000000 /* XXX */
|
#define CLPS7500_FLASH_START 0x01000000 /* XXX */
|
||||||
#define FLASH_SIZE 0x01000000
|
#define CLPS7500_FLASH_SIZE 0x01000000
|
||||||
#define FLASH_BASE 0xe2000000
|
#define CLPS7500_FLASH_BASE 0xe2000000
|
||||||
|
|
||||||
#define LED_START 0x0302B000
|
#define LED_START 0x0302B000
|
||||||
#define LED_SIZE 0x00001000
|
#define LED_SIZE 0x00001000
|
||||||
|
|
|
@ -19,9 +19,9 @@
|
||||||
#ifdef CONFIG_ARCH_H7202
|
#ifdef CONFIG_ARCH_H7202
|
||||||
|
|
||||||
/* FLASH */
|
/* FLASH */
|
||||||
#define FLASH_VIRT 0xd0000000
|
#define H720X_FLASH_VIRT 0xd0000000
|
||||||
#define FLASH_PHYS 0x00000000
|
#define H720X_FLASH_PHYS 0x00000000
|
||||||
#define FLASH_SIZE 0x02000000
|
#define H720X_FLASH_SIZE 0x02000000
|
||||||
|
|
||||||
/* onboard LAN controller */
|
/* onboard LAN controller */
|
||||||
# define ETH0_PHYS 0x08000000
|
# define ETH0_PHYS 0x08000000
|
||||||
|
|
|
@ -407,28 +407,11 @@
|
||||||
*/
|
*/
|
||||||
#define uHAL_MEMORY_SIZE INTEGRATOR_SSRAM_SIZE
|
#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
|
* Clean base - dummy
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define CLEAN_BASE EPROM_BASE
|
#define CLEAN_BASE INTEGRATOR_BOOT_ROM_HI
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timer definitions
|
* Timer definitions
|
||||||
|
|
|
@ -404,7 +404,8 @@ static inline void iop_desc_set_next_desc(struct iop_adma_desc_slot *desc,
|
||||||
u32 next_desc_addr)
|
u32 next_desc_addr)
|
||||||
{
|
{
|
||||||
struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc;
|
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;
|
hw_desc->next_desc = next_desc_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#define LCD_CONN_TYPE(_x) ((_x) & 0x0f)
|
#define LCD_CONN_TYPE(_x) ((_x) & 0x0f)
|
||||||
#define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f)
|
#define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f)
|
||||||
|
|
||||||
|
#define LCD_TYPE_MASK 0xf
|
||||||
#define LCD_TYPE_UNKNOWN 0
|
#define LCD_TYPE_UNKNOWN 0
|
||||||
#define LCD_TYPE_MONO_STN 1
|
#define LCD_TYPE_MONO_STN 1
|
||||||
#define LCD_TYPE_MONO_DSTN 2
|
#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);
|
u32 *mem_resume_unknown = phys_to_virt(RESUME_UNKNOWN_ADDR);
|
||||||
|
|
||||||
/* Devices prepare suspend */
|
/* 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,
|
pxa2xx_mfp_set_lpm(GPIO83_BT_ON,
|
||||||
is_bt_on ? MFP_LPM_DRIVE_HIGH : MFP_LPM_DRIVE_LOW);
|
is_bt_on ? MFP_LPM_DRIVE_HIGH : MFP_LPM_DRIVE_LOW);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ ENTRY(mioa701_jumpaddr)
|
||||||
1:
|
1:
|
||||||
mov r0, #0xa0000000 @ Don't suppose memory access works
|
mov r0, #0xa0000000 @ Don't suppose memory access works
|
||||||
orr r0, r0, #0x00200000 @ even if it's supposed to
|
orr r0, r0, #0x00200000 @ even if it's supposed to
|
||||||
|
orr r0, r0, #0x0000b000
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
str r1, [r0] @ Early disable resume for next boot
|
str r1, [r0] @ Early disable resume for next boot
|
||||||
ldr r0, mioa701_jumpaddr @ (Murphy's Law)
|
ldr r0, mioa701_jumpaddr @ (Murphy's Law)
|
||||||
|
|
|
@ -56,6 +56,9 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
||||||
GPIO110_MMC_DAT_2,
|
GPIO110_MMC_DAT_2,
|
||||||
GPIO111_MMC_DAT_3,
|
GPIO111_MMC_DAT_3,
|
||||||
GPIO112_MMC_CMD,
|
GPIO112_MMC_CMD,
|
||||||
|
GPIO14_GPIO, /* SD detect */
|
||||||
|
GPIO114_GPIO, /* SD power */
|
||||||
|
GPIO115_GPIO, /* SD r/o switch */
|
||||||
|
|
||||||
/* AC97 */
|
/* AC97 */
|
||||||
GPIO28_AC97_BITCLK,
|
GPIO28_AC97_BITCLK,
|
||||||
|
@ -64,6 +67,7 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
||||||
GPIO31_AC97_SYNC,
|
GPIO31_AC97_SYNC,
|
||||||
|
|
||||||
/* IrDA */
|
/* IrDA */
|
||||||
|
GPIO40_GPIO, /* ir disable */
|
||||||
GPIO46_FICP_RXD,
|
GPIO46_FICP_RXD,
|
||||||
GPIO47_FICP_TXD,
|
GPIO47_FICP_TXD,
|
||||||
|
|
||||||
|
@ -71,7 +75,8 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
||||||
GPIO16_PWM0_OUT,
|
GPIO16_PWM0_OUT,
|
||||||
|
|
||||||
/* USB */
|
/* USB */
|
||||||
GPIO13_GPIO,
|
GPIO13_GPIO, /* usb detect */
|
||||||
|
GPIO95_GPIO, /* usb power */
|
||||||
|
|
||||||
/* PCMCIA */
|
/* PCMCIA */
|
||||||
GPIO48_nPOE,
|
GPIO48_nPOE,
|
||||||
|
@ -84,6 +89,45 @@ static unsigned long palmtx_pin_config[] __initdata = {
|
||||||
GPIO55_nPREG,
|
GPIO55_nPREG,
|
||||||
GPIO56_nPWAIT,
|
GPIO56_nPWAIT,
|
||||||
GPIO57_nIOIS16,
|
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;
|
int err = 0;
|
||||||
|
|
||||||
/* Setup an interrupt for detecting card insert/remove events */
|
/* Setup an interrupt for detecting card insert/remove events */
|
||||||
err = request_irq(IRQ_GPIO_PALMTX_SD_DETECT_N, palmtx_detect_int,
|
err = gpio_request(GPIO_NR_PALMTX_SD_DETECT_N, "SD IRQ");
|
||||||
IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
|
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,
|
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||||
"SD/MMC card detect", data);
|
"SD/MMC card detect", data);
|
||||||
if (err) {
|
if (err) {
|
||||||
printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
|
printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
|
||||||
__func__);
|
__func__);
|
||||||
return err;
|
goto err2;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = gpio_request(GPIO_NR_PALMTX_SD_POWER, "SD_POWER");
|
err = gpio_request(GPIO_NR_PALMTX_SD_POWER, "SD_POWER");
|
||||||
if (err)
|
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");
|
err = gpio_request(GPIO_NR_PALMTX_SD_READONLY, "SD_READONLY");
|
||||||
if (err)
|
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__);
|
printk(KERN_DEBUG "%s: irq registered\n", __func__);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ro_err:
|
err5:
|
||||||
|
gpio_free(GPIO_NR_PALMTX_SD_READONLY);
|
||||||
|
err4:
|
||||||
gpio_free(GPIO_NR_PALMTX_SD_POWER);
|
gpio_free(GPIO_NR_PALMTX_SD_POWER);
|
||||||
pwr_err:
|
err3:
|
||||||
free_irq(IRQ_GPIO_PALMTX_SD_DETECT_N, data);
|
free_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N), data);
|
||||||
|
err2:
|
||||||
|
gpio_free(GPIO_NR_PALMTX_SD_DETECT_N);
|
||||||
|
err:
|
||||||
return 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_READONLY);
|
||||||
gpio_free(GPIO_NR_PALMTX_SD_POWER);
|
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)
|
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, 0, KEY_RIGHT),
|
||||||
KEY(3, 2, KEY_LEFT),
|
KEY(3, 2, KEY_LEFT),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct pxa27x_keypad_platform_data palmtx_keypad_platform_data = {
|
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");
|
ret = gpio_request(GPIO_NR_PALMTX_BL_POWER, "BL POWER");
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
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");
|
ret = gpio_request(GPIO_NR_PALMTX_LCD_POWER, "LCD POWER");
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err2;
|
goto err2;
|
||||||
|
ret = gpio_direction_output(GPIO_NR_PALMTX_LCD_POWER, 0);
|
||||||
|
if (ret)
|
||||||
|
goto err3;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
err3:
|
||||||
|
gpio_free(GPIO_NR_PALMTX_LCD_POWER);
|
||||||
err2:
|
err2:
|
||||||
gpio_free(GPIO_NR_PALMTX_BL_POWER);
|
gpio_free(GPIO_NR_PALMTX_BL_POWER);
|
||||||
err:
|
err:
|
||||||
|
@ -254,6 +323,24 @@ static struct platform_device palmtx_backlight = {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* IrDA
|
* 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)
|
static void palmtx_irda_transceiver_mode(struct device *dev, int mode)
|
||||||
{
|
{
|
||||||
gpio_set_value(GPIO_NR_PALMTX_IR_DISABLE, mode & IR_OFF);
|
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 = {
|
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_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
|
||||||
.transceiver_mode = palmtx_irda_transceiver_mode,
|
.transceiver_mode = palmtx_irda_transceiver_mode,
|
||||||
};
|
};
|
||||||
|
@ -268,17 +357,11 @@ static struct pxaficp_platform_data palmtx_ficp_platform_data = {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* UDC
|
* 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 = {
|
static struct pxa2xx_udc_mach_info palmtx_udc_info __initdata = {
|
||||||
.gpio_vbus = GPIO_NR_PALMTX_USB_DETECT_N,
|
.gpio_vbus = GPIO_NR_PALMTX_USB_DETECT_N,
|
||||||
.gpio_vbus_inverted = 1,
|
.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");
|
ret = gpio_request(GPIO_NR_PALMTX_POWER_DETECT, "CABLE_STATE_AC");
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_cs_ac;
|
goto err1;
|
||||||
|
ret = gpio_direction_input(GPIO_NR_PALMTX_POWER_DETECT);
|
||||||
ret = gpio_request(GPIO_NR_PALMTX_USB_DETECT_N, "CABLE_STATE_USB");
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_cs_usb;
|
goto err2;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_cs_usb:
|
err2:
|
||||||
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
||||||
err_cs_ac:
|
err1:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,14 +391,8 @@ static int palmtx_is_ac_online(void)
|
||||||
return gpio_get_value(GPIO_NR_PALMTX_POWER_DETECT);
|
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)
|
static void power_supply_exit(struct device *dev)
|
||||||
{
|
{
|
||||||
gpio_free(GPIO_NR_PALMTX_USB_DETECT_N);
|
|
||||||
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
gpio_free(GPIO_NR_PALMTX_POWER_DETECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +403,6 @@ static char *palmtx_supplicants[] = {
|
||||||
static struct pda_power_pdata power_supply_info = {
|
static struct pda_power_pdata power_supply_info = {
|
||||||
.init = power_supply_init,
|
.init = power_supply_init,
|
||||||
.is_ac_online = palmtx_is_ac_online,
|
.is_ac_online = palmtx_is_ac_online,
|
||||||
.is_usb_online = palmtx_is_usb_online,
|
|
||||||
.exit = power_supply_exit,
|
.exit = power_supply_exit,
|
||||||
.supplied_to = palmtx_supplicants,
|
.supplied_to = palmtx_supplicants,
|
||||||
.num_supplicants = ARRAY_SIZE(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));
|
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)
|
static void __init palmtx_init(void)
|
||||||
{
|
{
|
||||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
|
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
|
||||||
|
|
||||||
set_pxa_fb_info(&palmtx_lcd_screen);
|
set_pxa_fb_info(&palmtx_lcd_screen);
|
||||||
pxa_set_mci_info(&palmtx_mci_platform_data);
|
pxa_set_mci_info(&palmtx_mci_platform_data);
|
||||||
|
palmtx_udc_init();
|
||||||
pxa_set_udc_info(&palmtx_udc_info);
|
pxa_set_udc_info(&palmtx_udc_info);
|
||||||
pxa_set_ac97_info(NULL);
|
pxa_set_ac97_info(NULL);
|
||||||
pxa_set_ficp_info(&palmtx_ficp_platform_data);
|
pxa_set_ficp_info(&palmtx_ficp_platform_data);
|
||||||
|
|
|
@ -385,6 +385,7 @@ static struct soc_camera_link iclink[] = {
|
||||||
.gpio = NR_BUILTIN_GPIO + 1,
|
.gpio = NR_BUILTIN_GPIO + 1,
|
||||||
}, {
|
}, {
|
||||||
.bus_id = 0, /* Must match with the camera ID above */
|
.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 */
|
/* Jump into ROM at address 0 */
|
||||||
cpu_reset(0);
|
cpu_reset(0);
|
||||||
break;
|
break;
|
||||||
case 'h':
|
|
||||||
do_hw_reset();
|
|
||||||
break;
|
|
||||||
case 'g':
|
case 'g':
|
||||||
do_gpio_reset();
|
do_gpio_reset();
|
||||||
break;
|
break;
|
||||||
|
case 'h':
|
||||||
|
default:
|
||||||
|
do_hw_reset();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
static unsigned long spitz_pin_config[] __initdata = {
|
static unsigned long spitz_pin_config[] __initdata = {
|
||||||
/* Chip Selects */
|
/* Chip Selects */
|
||||||
GPIO78_nCS_2, /* SCOOP #2 */
|
GPIO78_nCS_2, /* SCOOP #2 */
|
||||||
|
GPIO79_nCS_3, /* NAND */
|
||||||
GPIO80_nCS_4, /* SCOOP #1 */
|
GPIO80_nCS_4, /* SCOOP #1 */
|
||||||
|
|
||||||
/* LCD - 16bpp Active TFT */
|
/* LCD - 16bpp Active TFT */
|
||||||
|
@ -97,10 +98,10 @@ static unsigned long spitz_pin_config[] __initdata = {
|
||||||
GPIO51_nPIOW,
|
GPIO51_nPIOW,
|
||||||
GPIO85_nPCE_1,
|
GPIO85_nPCE_1,
|
||||||
GPIO54_nPCE_2,
|
GPIO54_nPCE_2,
|
||||||
GPIO79_PSKTSEL,
|
|
||||||
GPIO55_nPREG,
|
GPIO55_nPREG,
|
||||||
GPIO56_nPWAIT,
|
GPIO56_nPWAIT,
|
||||||
GPIO57_nIOIS16,
|
GPIO57_nIOIS16,
|
||||||
|
GPIO104_PSKTSEL,
|
||||||
|
|
||||||
/* MMC */
|
/* MMC */
|
||||||
GPIO32_MMC_CLK,
|
GPIO32_MMC_CLK,
|
||||||
|
@ -686,7 +687,6 @@ static void __init akita_init(void)
|
||||||
spitz_pcmcia_config.num_devs = 1;
|
spitz_pcmcia_config.num_devs = 1;
|
||||||
platform_scoop_config = &spitz_pcmcia_config;
|
platform_scoop_config = &spitz_pcmcia_config;
|
||||||
|
|
||||||
pxa_set_i2c_info(NULL);
|
|
||||||
i2c_register_board_info(0, ARRAY_AND_SIZE(akita_i2c_board_info));
|
i2c_register_board_info(0, ARRAY_AND_SIZE(akita_i2c_board_info));
|
||||||
|
|
||||||
common_init();
|
common_init();
|
||||||
|
|
|
@ -104,7 +104,7 @@ static struct clk uart_clk = {
|
||||||
|
|
||||||
static struct clk mmci_clk = {
|
static struct clk mmci_clk = {
|
||||||
.name = "MCLK",
|
.name = "MCLK",
|
||||||
.rate = 33000000,
|
.rate = 24000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
int clk_register(struct clk *clk)
|
int clk_register(struct clk *clk)
|
||||||
|
|
|
@ -238,28 +238,11 @@
|
||||||
#define REALVIEW_INTREG_OFFSET 0x8 /* Interrupt control */
|
#define REALVIEW_INTREG_OFFSET 0x8 /* Interrupt control */
|
||||||
#define REALVIEW_DECODE_OFFSET 0xC /* Fitted logic modules */
|
#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
|
* Clean base - dummy
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define CLEAN_BASE EPROM_BASE
|
#define CLEAN_BASE REALVIEW_BOOT_ROM_HI
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* System controller bit assignment
|
* System controller bit assignment
|
||||||
|
|
|
@ -18,6 +18,7 @@ struct s3c2410_spigpio_info {
|
||||||
unsigned long pin_mosi;
|
unsigned long pin_mosi;
|
||||||
unsigned long pin_miso;
|
unsigned long pin_miso;
|
||||||
|
|
||||||
|
int num_chipselect;
|
||||||
int bus_num;
|
int bus_num;
|
||||||
|
|
||||||
void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs);
|
void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs);
|
||||||
|
|
|
@ -105,7 +105,7 @@ static struct clk uart_clk = {
|
||||||
|
|
||||||
static struct clk mmci_clk = {
|
static struct clk mmci_clk = {
|
||||||
.name = "MCLK",
|
.name = "MCLK",
|
||||||
.rate = 33000000,
|
.rate = 24000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
int clk_register(struct clk *clk)
|
int clk_register(struct clk *clk)
|
||||||
|
|
|
@ -436,28 +436,12 @@
|
||||||
#define SIC_INTMASK_PCI1 (1 << SIC_INT_PCI1)
|
#define SIC_INTMASK_PCI1 (1 << SIC_INT_PCI1)
|
||||||
#define SIC_INTMASK_PCI2 (1 << SIC_INT_PCI2)
|
#define SIC_INTMASK_PCI2 (1 << SIC_INT_PCI2)
|
||||||
#define SIC_INTMASK_PCI3 (1 << SIC_INT_PCI3)
|
#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
|
* Clean base - dummy
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define CLEAN_BASE EPROM_BASE
|
#define CLEAN_BASE VERSATILE_BOOT_ROM_HI
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* System controller bit assignment
|
* 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.
|
* 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));
|
l2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1));
|
||||||
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'.
|
* Invalidate all full cache lines between 'start' and 'end'.
|
||||||
*/
|
*/
|
||||||
while (start != end) {
|
while (start < end) {
|
||||||
unsigned long range_end = calc_range_end(start, end);
|
unsigned long range_end = calc_range_end(start, end);
|
||||||
l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
|
l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
|
||||||
start = range_end;
|
start = range_end;
|
||||||
|
|
|
@ -208,6 +208,12 @@ static struct mem_type mem_types[] = {
|
||||||
.prot_sect = PROT_SECT_DEVICE,
|
.prot_sect = PROT_SECT_DEVICE,
|
||||||
.domain = DOMAIN_IO,
|
.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] = {
|
[MT_CACHECLEAN] = {
|
||||||
.prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
|
.prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
|
||||||
.domain = DOMAIN_KERNEL,
|
.domain = DOMAIN_KERNEL,
|
||||||
|
|
|
@ -16,14 +16,15 @@
|
||||||
#include <asm/hardware/iop3xx.h>
|
#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 = {
|
static struct map_desc iop3xx_std_desc[] __initdata = {
|
||||||
{ /* mem mapped registers */
|
{ /* mem mapped registers */
|
||||||
.virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
|
.virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
|
.pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
|
||||||
.length = IOP3XX_PERIPHERAL_SIZE,
|
.length = IOP3XX_PERIPHERAL_SIZE,
|
||||||
.type = MT_DEVICE,
|
.type = MT_UNCACHED,
|
||||||
}, { /* PCI IO space */
|
}, { /* PCI IO space */
|
||||||
.virtual = IOP3XX_PCI_LOWER_IO_VA,
|
.virtual = IOP3XX_PCI_LOWER_IO_VA,
|
||||||
.pfn = __phys_to_pfn(IOP3XX_PCI_LOWER_IO_PA),
|
.pfn = __phys_to_pfn(IOP3XX_PCI_LOWER_IO_PA),
|
||||||
|
|
|
@ -101,6 +101,7 @@
|
||||||
#define OMAP24XX_GPIO_IRQSTATUS2 0x0028
|
#define OMAP24XX_GPIO_IRQSTATUS2 0x0028
|
||||||
#define OMAP24XX_GPIO_IRQENABLE2 0x002c
|
#define OMAP24XX_GPIO_IRQENABLE2 0x002c
|
||||||
#define OMAP24XX_GPIO_IRQENABLE1 0x001c
|
#define OMAP24XX_GPIO_IRQENABLE1 0x001c
|
||||||
|
#define OMAP24XX_GPIO_WAKE_EN 0x0020
|
||||||
#define OMAP24XX_GPIO_CTRL 0x0030
|
#define OMAP24XX_GPIO_CTRL 0x0030
|
||||||
#define OMAP24XX_GPIO_OE 0x0034
|
#define OMAP24XX_GPIO_OE 0x0034
|
||||||
#define OMAP24XX_GPIO_DATAIN 0x0038
|
#define OMAP24XX_GPIO_DATAIN 0x0038
|
||||||
|
@ -1551,7 +1552,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
||||||
case METHOD_GPIO_24XX:
|
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_clear = bank->base + OMAP24XX_GPIO_CLEARWKUENA;
|
||||||
wake_set = bank->base + OMAP24XX_GPIO_SETWKUENA;
|
wake_set = bank->base + OMAP24XX_GPIO_SETWKUENA;
|
||||||
break;
|
break;
|
||||||
|
@ -1574,7 +1575,7 @@ static int omap_gpio_resume(struct sys_device *dev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!cpu_is_omap24xx() && !cpu_is_omap16xx())
|
if (!cpu_class_is_omap2() && !cpu_is_omap16xx())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = 0; i < gpio_bank_count; i++) {
|
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_allow_idle - Counters previous clk_deny_idle
|
||||||
* @clk: clock signal handle
|
* @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_idle(void);
|
||||||
extern void omap_pm_suspend(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 _ramstart, _ramend, _rambase;
|
||||||
extern unsigned long memory_start, memory_end, physical_mem_end;
|
extern unsigned long memory_start, memory_end, physical_mem_end;
|
||||||
extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[],
|
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[],
|
_stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], _sbss_l2[],
|
||||||
_ebss_l2[], _l2_lma_start[];
|
_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_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_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.
|
* 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
|
if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15
|
||||||
|| gpio == GPIO_PH14 || gpio == GPIO_PH15
|
|| gpio == GPIO_PH14 || gpio == GPIO_PH15
|
||||||
|| gpio == GPIO_PJ14 || gpio == GPIO_PJ15
|
|| gpio == GPIO_PJ14 || gpio == GPIO_PJ15
|
||||||
|| gpio > MAX_BLACKFIN_GPIOS)
|
|| gpio >= MAX_BLACKFIN_GPIOS)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,10 +188,11 @@ static struct cplb_desc cplb_data[] = {
|
||||||
|
|
||||||
static u16 __init lock_kernel_check(u32 start, u32 end)
|
static u16 __init lock_kernel_check(u32 start, u32 end)
|
||||||
{
|
{
|
||||||
if ((end <= (u32) _end && end >= (u32)_stext) ||
|
if (start >= (u32)_end || end <= (u32)_stext)
|
||||||
(start <= (u32) _end && start >= (u32)_stext))
|
return 0;
|
||||||
return IN_KERNEL;
|
|
||||||
return 0;
|
/* This cplb block overlapped with kernel area. */
|
||||||
|
return IN_KERNEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned short __init
|
static unsigned short __init
|
||||||
|
|
|
@ -351,9 +351,14 @@ int _access_ok(unsigned long addr, unsigned long size)
|
||||||
return 1;
|
return 1;
|
||||||
#endif
|
#endif
|
||||||
#if L1_DATA_B_LENGTH != 0
|
#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)
|
&& addr + size <= L1_DATA_B_START + L1_DATA_B_LENGTH)
|
||||||
return 1;
|
return 1;
|
||||||
|
#endif
|
||||||
|
#if L2_LENGTH != 0
|
||||||
|
if (addr >= L2_START + (_ebss_l2 - _stext_l2)
|
||||||
|
&& addr + size <= L2_START + L2_LENGTH)
|
||||||
|
return 1;
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,23 +119,23 @@ void __init bfin_relocate_l1_mem(void)
|
||||||
/* Copy _stext_l1 to _etext_l1 to L1 instruction SRAM */
|
/* Copy _stext_l1 to _etext_l1 to L1 instruction SRAM */
|
||||||
dma_memcpy(_stext_l1, _l1_lma_start, l1_code_length);
|
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)
|
if (l1_data_a_length > L1_DATA_A_LENGTH)
|
||||||
panic("L1 Data SRAM Bank A Overflow\n");
|
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);
|
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)
|
if (l1_data_b_length > L1_DATA_B_LENGTH)
|
||||||
panic("L1 Data SRAM Bank B Overflow\n");
|
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 +
|
dma_memcpy(_sdata_b_l1, _l1_lma_start + l1_code_length +
|
||||||
l1_data_a_length, l1_data_b_length);
|
l1_data_a_length, l1_data_b_length);
|
||||||
|
|
||||||
if (L2_LENGTH != 0) {
|
if (L2_LENGTH != 0) {
|
||||||
l2_length = _ebss_l2 - _stext_l2;
|
l2_length = _sbss_l2 - _stext_l2;
|
||||||
if (l2_length > L2_LENGTH)
|
if (l2_length > L2_LENGTH)
|
||||||
panic("L2 SRAM Overflow\n");
|
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",
|
printk(KERN_ERR "Warning: Compiled for Rev %d, but running on Rev %d\n",
|
||||||
bfin_compiled_revid(), bfin_revid());
|
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",
|
printk(KERN_ERR "Warning: Unsupported Chip Revision ADSP-%s Rev 0.%d detected\n",
|
||||||
CPU, bfin_revid());
|
CPU, bfin_revid());
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_VERBOSE_DEBUG
|
#ifdef CONFIG_DEBUG_VERBOSE
|
||||||
#define verbose_printk(fmt, arg...) \
|
#define verbose_printk(fmt, arg...) \
|
||||||
printk(fmt, ##arg)
|
printk(fmt, ##arg)
|
||||||
#else
|
#else
|
||||||
|
@ -147,9 +147,12 @@ static void decode_address(char *buf, unsigned long address)
|
||||||
char *name = p->comm;
|
char *name = p->comm;
|
||||||
struct file *file = vma->vm_file;
|
struct file *file = vma->vm_file;
|
||||||
|
|
||||||
if (file)
|
if (file) {
|
||||||
name = d_path(&file->f_path, _tmpbuf,
|
char *d_name = d_path(&file->f_path, _tmpbuf,
|
||||||
sizeof(_tmpbuf));
|
sizeof(_tmpbuf));
|
||||||
|
if (!IS_ERR(d_name))
|
||||||
|
name = d_name;
|
||||||
|
}
|
||||||
|
|
||||||
/* FLAT does not have its text aligned to the start of
|
/* FLAT does not have its text aligned to the start of
|
||||||
* the map while FDPIC ELF does ...
|
* the map while FDPIC ELF does ...
|
||||||
|
@ -571,7 +574,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||||
#endif
|
#endif
|
||||||
panic("Kernel exception");
|
panic("Kernel exception");
|
||||||
} else {
|
} else {
|
||||||
#ifdef CONFIG_VERBOSE_DEBUG
|
#ifdef CONFIG_DEBUG_VERBOSE
|
||||||
unsigned long *stack;
|
unsigned long *stack;
|
||||||
/* Dump the user space stack */
|
/* Dump the user space stack */
|
||||||
stack = (unsigned long *)rdusp();
|
stack = (unsigned long *)rdusp();
|
||||||
|
|
|
@ -25,9 +25,13 @@
|
||||||
*/
|
*/
|
||||||
.macro do_flush flushins:req optflushins optnopins label
|
.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; */
|
/* end = ((end - 1) & -L1_CACHE_BYTES) + L1_CACHE_BYTES; */
|
||||||
R1 += -1;
|
R1 += -1;
|
||||||
R2 = -L1_CACHE_BYTES;
|
|
||||||
R1 = R1 & R2;
|
R1 = R1 & R2;
|
||||||
R1 += L1_CACHE_BYTES;
|
R1 += L1_CACHE_BYTES;
|
||||||
|
|
||||||
|
@ -63,7 +67,7 @@ ENDPROC(_blackfin_icache_flush_range)
|
||||||
|
|
||||||
/* Flush all cache lines assocoiated with this area of memory. */
|
/* Flush all cache lines assocoiated with this area of memory. */
|
||||||
ENTRY(_blackfin_icache_dcache_flush_range)
|
ENTRY(_blackfin_icache_dcache_flush_range)
|
||||||
do_flush IFLUSH, FLUSH
|
do_flush FLUSH, IFLUSH
|
||||||
ENDPROC(_blackfin_icache_dcache_flush_range)
|
ENDPROC(_blackfin_icache_dcache_flush_range)
|
||||||
|
|
||||||
/* Throw away all D-cached data in specified region without any obligation to
|
/* 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 */
|
/* The driver only support single cpu */
|
||||||
if (cpu != 0)
|
if (cpu != 0)
|
||||||
return -1;
|
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;
|
cclk_hz = bfin_freq_table[index].frequency;
|
||||||
|
|
||||||
freqs.old = bfin_getfreq(0);
|
freqs.old = bfin_getfreq_khz(0);
|
||||||
freqs.new = cclk_hz;
|
freqs.new = cclk_hz;
|
||||||
freqs.cpu = 0;
|
freqs.cpu = 0;
|
||||||
|
|
||||||
|
@ -137,8 +137,8 @@ static int __init __bfin_cpu_init(struct cpufreq_policy *policy)
|
||||||
if (policy->cpu != 0)
|
if (policy->cpu != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
cclk = get_cclk();
|
cclk = get_cclk() / 1000;
|
||||||
sclk = get_sclk();
|
sclk = get_sclk() / 1000;
|
||||||
|
|
||||||
#if ANOMALY_05000273 || (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_DCACHE))
|
#if ANOMALY_05000273 || (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_DCACHE))
|
||||||
min_cclk = sclk * 2;
|
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].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
|
||||||
dpm_state_table[index].tscale = (TIME_SCALE / (1 << csel)) - 1;
|
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,
|
bfin_freq_table[index].frequency,
|
||||||
dpm_state_table[index].csel,
|
dpm_state_table[index].csel,
|
||||||
dpm_state_table[index].tscale);
|
dpm_state_table[index].tscale);
|
||||||
|
@ -173,7 +173,7 @@ static struct freq_attr *bfin_freq_attr[] = {
|
||||||
static struct cpufreq_driver bfin_driver = {
|
static struct cpufreq_driver bfin_driver = {
|
||||||
.verify = bfin_verify_speed,
|
.verify = bfin_verify_speed,
|
||||||
.target = bfin_target,
|
.target = bfin_target,
|
||||||
.get = bfin_getfreq,
|
.get = bfin_getfreq_khz,
|
||||||
.init = __bfin_cpu_init,
|
.init = __bfin_cpu_init,
|
||||||
.name = "bfin cpufreq",
|
.name = "bfin cpufreq",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
|
|
@ -277,7 +277,7 @@ ENTRY(_bfin_return_from_exception)
|
||||||
p5.h = hi(ILAT);
|
p5.h = hi(ILAT);
|
||||||
r6 = [p5];
|
r6 = [p5];
|
||||||
r7 = 0x20; /* Did I just cause anther HW error? */
|
r7 = 0x20; /* Did I just cause anther HW error? */
|
||||||
r7 = r7 & r1;
|
r6 = r7 & r6;
|
||||||
CC = R7 == R6;
|
CC = R7 == R6;
|
||||||
if CC JUMP _double_fault;
|
if CC JUMP _double_fault;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -183,10 +183,10 @@ static void __init l2_sram_init(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
free_l2_sram_head.next->paddr = (void *)L2_START +
|
free_l2_sram_head.next->paddr =
|
||||||
(_etext_l2 - _stext_l2) + (_edata_l2 - _sdata_l2);
|
(void *)L2_START + (_ebss_l2 - _stext_l2);
|
||||||
free_l2_sram_head.next->size = L2_LENGTH -
|
free_l2_sram_head.next->size =
|
||||||
(_etext_l2 - _stext_l2) + (_edata_l2 - _sdata_l2);
|
L2_LENGTH - (_ebss_l2 - _stext_l2);
|
||||||
free_l2_sram_head.next->pid = 0;
|
free_l2_sram_head.next->pid = 0;
|
||||||
free_l2_sram_head.next->next = NULL;
|
free_l2_sram_head.next->next = NULL;
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,15 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
|
||||||
int error = -EBADF;
|
int error = -EBADF;
|
||||||
struct file * file = NULL;
|
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);
|
flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
|
||||||
if (!(flags & MAP_ANONYMOUS)) {
|
if (!(flags & MAP_ANONYMOUS)) {
|
||||||
file = fget(fd);
|
file = fget(fd);
|
||||||
|
@ -42,16 +51,6 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
|
||||||
goto out;
|
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);
|
down_write(¤t->mm->mmap_sem);
|
||||||
error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
|
error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
|
||||||
up_write(¤t->mm->mmap_sem);
|
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_ssm IA64_INTRINSIC_MACRO(ssm)
|
||||||
#define ia64_rsm IA64_INTRINSIC_MACRO(rsm)
|
#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_setreg IA64_INTRINSIC_API(setreg)
|
||||||
#define ia64_set_rr IA64_INTRINSIC_API(set_rr)
|
#define ia64_set_rr IA64_INTRINSIC_API(set_rr)
|
||||||
#define ia64_get_rr IA64_INTRINSIC_API(get_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); \
|
ia64_native_rsm(mask); \
|
||||||
} while (0)
|
} 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.
|
* 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)
|
#define arch_has_block_step() (1)
|
||||||
extern void user_enable_block_step(struct task_struct *);
|
extern void user_enable_block_step(struct task_struct *);
|
||||||
|
|
||||||
#define __ARCH_WANT_COMPAT_SYS_PTRACE
|
|
||||||
|
|
||||||
#endif /* !__KERNEL__ */
|
#endif /* !__KERNEL__ */
|
||||||
|
|
||||||
/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
|
/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
|
||||||
|
|
|
@ -499,6 +499,7 @@ GLOBAL_ENTRY(prefetch_stack)
|
||||||
END(prefetch_stack)
|
END(prefetch_stack)
|
||||||
|
|
||||||
GLOBAL_ENTRY(kernel_execve)
|
GLOBAL_ENTRY(kernel_execve)
|
||||||
|
rum psr.ac
|
||||||
mov r15=__NR_execve // put syscall number in place
|
mov r15=__NR_execve // put syscall number in place
|
||||||
break __BREAK_SYSCALL
|
break __BREAK_SYSCALL
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
|
|
|
@ -260,7 +260,7 @@ start_ap:
|
||||||
* Switch into virtual mode:
|
* Switch into virtual mode:
|
||||||
*/
|
*/
|
||||||
movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH|IA64_PSR_BN \
|
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
|
mov cr.ipsr=r16
|
||||||
movl r17=1f
|
movl r17=1f
|
||||||
|
|
|
@ -1139,7 +1139,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
|
||||||
return previous_current;
|
return previous_current;
|
||||||
|
|
||||||
no_mod:
|
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);
|
smp_processor_id(), type, msg);
|
||||||
return previous_current;
|
return previous_current;
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,7 +130,7 @@ ia64_native_getreg_func(int regnum)
|
||||||
unsigned long res = -1;
|
unsigned long res = -1;
|
||||||
switch (regnum) {
|
switch (regnum) {
|
||||||
CASE_GET_REG(GP);
|
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(PSR);
|
||||||
CASE_GET_REG(TP);
|
CASE_GET_REG(TP);
|
||||||
CASE_GET_REG(SP);
|
CASE_GET_REG(SP);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue