mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Merge 3.14-rc3 into char-misc-next
We need the fixes here for future mei and other patches. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
						commit
						ba4b60e85d
					
				
					 733 changed files with 9388 additions and 4138 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| 
						 | 
					@ -92,3 +92,6 @@ extra_certificates
 | 
				
			||||||
signing_key.priv
 | 
					signing_key.priv
 | 
				
			||||||
signing_key.x509
 | 
					signing_key.x509
 | 
				
			||||||
x509.genkey
 | 
					x509.genkey
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Kconfig presets
 | 
				
			||||||
 | 
					all.config
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,8 @@ DMA-ISA-LPC.txt
 | 
				
			||||||
	- How to do DMA with ISA (and LPC) devices.
 | 
						- How to do DMA with ISA (and LPC) devices.
 | 
				
			||||||
DMA-attributes.txt
 | 
					DMA-attributes.txt
 | 
				
			||||||
	- listing of the various possible attributes a DMA region can have
 | 
						- listing of the various possible attributes a DMA region can have
 | 
				
			||||||
 | 
					dmatest.txt
 | 
				
			||||||
 | 
						- how to compile, configure and use the dmatest system.
 | 
				
			||||||
DocBook/
 | 
					DocBook/
 | 
				
			||||||
	- directory with DocBook templates etc. for kernel documentation.
 | 
						- directory with DocBook templates etc. for kernel documentation.
 | 
				
			||||||
EDID/
 | 
					EDID/
 | 
				
			||||||
| 
						 | 
					@ -77,6 +79,8 @@ arm/
 | 
				
			||||||
	- directory with info about Linux on the ARM architecture.
 | 
						- directory with info about Linux on the ARM architecture.
 | 
				
			||||||
arm64/
 | 
					arm64/
 | 
				
			||||||
	- directory with info about Linux on the 64 bit ARM architecture.
 | 
						- directory with info about Linux on the 64 bit ARM architecture.
 | 
				
			||||||
 | 
					assoc_array.txt
 | 
				
			||||||
 | 
						- generic associative array intro.
 | 
				
			||||||
atomic_ops.txt
 | 
					atomic_ops.txt
 | 
				
			||||||
	- semantics and behavior of atomic and bitmask operations.
 | 
						- semantics and behavior of atomic and bitmask operations.
 | 
				
			||||||
auxdisplay/
 | 
					auxdisplay/
 | 
				
			||||||
| 
						 | 
					@ -87,6 +91,8 @@ bad_memory.txt
 | 
				
			||||||
	- how to use kernel parameters to exclude bad RAM regions.
 | 
						- how to use kernel parameters to exclude bad RAM regions.
 | 
				
			||||||
basic_profiling.txt
 | 
					basic_profiling.txt
 | 
				
			||||||
	- basic instructions for those who wants to profile Linux kernel.
 | 
						- basic instructions for those who wants to profile Linux kernel.
 | 
				
			||||||
 | 
					bcache.txt
 | 
				
			||||||
 | 
						- Block-layer cache on fast SSDs to improve slow (raid) I/O performance.
 | 
				
			||||||
binfmt_misc.txt
 | 
					binfmt_misc.txt
 | 
				
			||||||
	- info on the kernel support for extra binary formats.
 | 
						- info on the kernel support for extra binary formats.
 | 
				
			||||||
blackfin/
 | 
					blackfin/
 | 
				
			||||||
| 
						 | 
					@ -171,6 +177,8 @@ early-userspace/
 | 
				
			||||||
	- info about initramfs, klibc, and userspace early during boot.
 | 
						- info about initramfs, klibc, and userspace early during boot.
 | 
				
			||||||
edac.txt
 | 
					edac.txt
 | 
				
			||||||
	- information on EDAC - Error Detection And Correction
 | 
						- information on EDAC - Error Detection And Correction
 | 
				
			||||||
 | 
					efi-stub.txt
 | 
				
			||||||
 | 
						- How to use the EFI boot stub to bypass GRUB or elilo on EFI systems.
 | 
				
			||||||
eisa.txt
 | 
					eisa.txt
 | 
				
			||||||
	- info on EISA bus support.
 | 
						- info on EISA bus support.
 | 
				
			||||||
email-clients.txt
 | 
					email-clients.txt
 | 
				
			||||||
| 
						 | 
					@ -195,8 +203,8 @@ futex-requeue-pi.txt
 | 
				
			||||||
	- info on requeueing of tasks from a non-PI futex to a PI futex
 | 
						- info on requeueing of tasks from a non-PI futex to a PI futex
 | 
				
			||||||
gcov.txt
 | 
					gcov.txt
 | 
				
			||||||
	- use of GCC's coverage testing tool "gcov" with the Linux kernel
 | 
						- use of GCC's coverage testing tool "gcov" with the Linux kernel
 | 
				
			||||||
gpio.txt
 | 
					gpio/
 | 
				
			||||||
	- overview of GPIO (General Purpose Input/Output) access conventions.
 | 
						- gpio related documentation
 | 
				
			||||||
hid/
 | 
					hid/
 | 
				
			||||||
	- directory with information on human interface devices
 | 
						- directory with information on human interface devices
 | 
				
			||||||
highuid.txt
 | 
					highuid.txt
 | 
				
			||||||
| 
						 | 
					@ -255,6 +263,8 @@ kernel-docs.txt
 | 
				
			||||||
	- listing of various WWW + books that document kernel internals.
 | 
						- listing of various WWW + books that document kernel internals.
 | 
				
			||||||
kernel-parameters.txt
 | 
					kernel-parameters.txt
 | 
				
			||||||
	- summary listing of command line / boot prompt args for the kernel.
 | 
						- summary listing of command line / boot prompt args for the kernel.
 | 
				
			||||||
 | 
					kernel-per-CPU-kthreads.txt
 | 
				
			||||||
 | 
						- List of all per-CPU kthreads and how they introduce jitter.
 | 
				
			||||||
kmemcheck.txt
 | 
					kmemcheck.txt
 | 
				
			||||||
	- info on dynamic checker that detects uses of uninitialized memory.
 | 
						- info on dynamic checker that detects uses of uninitialized memory.
 | 
				
			||||||
kmemleak.txt
 | 
					kmemleak.txt
 | 
				
			||||||
| 
						 | 
					@ -299,8 +309,6 @@ memory-devices/
 | 
				
			||||||
	- directory with info on parts like the Texas Instruments EMIF driver
 | 
						- directory with info on parts like the Texas Instruments EMIF driver
 | 
				
			||||||
memory-hotplug.txt
 | 
					memory-hotplug.txt
 | 
				
			||||||
	- Hotpluggable memory support, how to use and current status.
 | 
						- Hotpluggable memory support, how to use and current status.
 | 
				
			||||||
memory.txt
 | 
					 | 
				
			||||||
	- info on typical Linux memory problems.
 | 
					 | 
				
			||||||
metag/
 | 
					metag/
 | 
				
			||||||
	- directory with info about Linux on Meta architecture.
 | 
						- directory with info about Linux on Meta architecture.
 | 
				
			||||||
mips/
 | 
					mips/
 | 
				
			||||||
| 
						 | 
					@ -311,6 +319,8 @@ mmc/
 | 
				
			||||||
	- directory with info about the MMC subsystem
 | 
						- directory with info about the MMC subsystem
 | 
				
			||||||
mn10300/
 | 
					mn10300/
 | 
				
			||||||
	- directory with info about the mn10300 architecture port
 | 
						- directory with info about the mn10300 architecture port
 | 
				
			||||||
 | 
					module-signing.txt
 | 
				
			||||||
 | 
						- Kernel module signing for increased security when loading modules.
 | 
				
			||||||
mtd/
 | 
					mtd/
 | 
				
			||||||
	- directory with info about memory technology devices (flash)
 | 
						- directory with info about memory technology devices (flash)
 | 
				
			||||||
mono.txt
 | 
					mono.txt
 | 
				
			||||||
| 
						 | 
					@ -343,6 +353,8 @@ pcmcia/
 | 
				
			||||||
	- info on the Linux PCMCIA driver.
 | 
						- info on the Linux PCMCIA driver.
 | 
				
			||||||
percpu-rw-semaphore.txt
 | 
					percpu-rw-semaphore.txt
 | 
				
			||||||
	- RCU based read-write semaphore optimized for locking for reading
 | 
						- RCU based read-write semaphore optimized for locking for reading
 | 
				
			||||||
 | 
					phy.txt
 | 
				
			||||||
 | 
						- Description of the generic PHY framework.
 | 
				
			||||||
pi-futex.txt
 | 
					pi-futex.txt
 | 
				
			||||||
	- documentation on lightweight priority inheritance futexes.
 | 
						- documentation on lightweight priority inheritance futexes.
 | 
				
			||||||
pinctrl.txt
 | 
					pinctrl.txt
 | 
				
			||||||
| 
						 | 
					@ -431,6 +443,8 @@ sysrq.txt
 | 
				
			||||||
	- info on the magic SysRq key.
 | 
						- info on the magic SysRq key.
 | 
				
			||||||
target/
 | 
					target/
 | 
				
			||||||
	- directory with info on generating TCM v4 fabric .ko modules
 | 
						- directory with info on generating TCM v4 fabric .ko modules
 | 
				
			||||||
 | 
					this_cpu_ops.txt
 | 
				
			||||||
 | 
						- List rationale behind and the way to use this_cpu operations.
 | 
				
			||||||
thermal/
 | 
					thermal/
 | 
				
			||||||
	- directory with information on managing thermal issues (CPU/temp)
 | 
						- directory with information on managing thermal issues (CPU/temp)
 | 
				
			||||||
trace/
 | 
					trace/
 | 
				
			||||||
| 
						 | 
					@ -469,6 +483,8 @@ wimax/
 | 
				
			||||||
	- directory with info about Intel Wireless Wimax Connections
 | 
						- directory with info about Intel Wireless Wimax Connections
 | 
				
			||||||
workqueue.txt
 | 
					workqueue.txt
 | 
				
			||||||
	- information on the Concurrency Managed Workqueue implementation
 | 
						- information on the Concurrency Managed Workqueue implementation
 | 
				
			||||||
 | 
					ww-mutex-design.txt
 | 
				
			||||||
 | 
						- Intro to Mutex wait/would deadlock handling.s
 | 
				
			||||||
x86/x86_64/
 | 
					x86/x86_64/
 | 
				
			||||||
	- directory with info on Linux support for AMD x86-64 (Hammer) machines.
 | 
						- directory with info on Linux support for AMD x86-64 (Hammer) machines.
 | 
				
			||||||
xtensa/
 | 
					xtensa/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,8 @@ Date:		Nov 2010
 | 
				
			||||||
Contact:	Kay Sievers <kay.sievers@vrfy.org>
 | 
					Contact:	Kay Sievers <kay.sievers@vrfy.org>
 | 
				
			||||||
Description:
 | 
					Description:
 | 
				
			||||||
		 Shows the list of currently configured
 | 
							 Shows the list of currently configured
 | 
				
			||||||
		 console devices, like 'tty1 ttyS0'.
 | 
							 tty devices used for the console,
 | 
				
			||||||
 | 
							 like 'tty1 ttyS0'.
 | 
				
			||||||
		 The last entry in the file is the active
 | 
							 The last entry in the file is the active
 | 
				
			||||||
		 device connected to /dev/console.
 | 
							 device connected to /dev/console.
 | 
				
			||||||
		 The file supports poll() to detect virtual
 | 
							 The file supports poll() to detect virtual
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,8 @@ listRCU.txt
 | 
				
			||||||
	- Using RCU to Protect Read-Mostly Linked Lists
 | 
						- Using RCU to Protect Read-Mostly Linked Lists
 | 
				
			||||||
lockdep.txt
 | 
					lockdep.txt
 | 
				
			||||||
	- RCU and lockdep checking
 | 
						- RCU and lockdep checking
 | 
				
			||||||
 | 
					lockdep-splat.txt
 | 
				
			||||||
 | 
						- RCU Lockdep splats explained.
 | 
				
			||||||
NMI-RCU.txt
 | 
					NMI-RCU.txt
 | 
				
			||||||
	- Using RCU to Protect Dynamic NMI Handlers
 | 
						- Using RCU to Protect Dynamic NMI Handlers
 | 
				
			||||||
rcubarrier.txt
 | 
					rcubarrier.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,8 @@ Booting
 | 
				
			||||||
	- requirements for booting
 | 
						- requirements for booting
 | 
				
			||||||
Interrupts
 | 
					Interrupts
 | 
				
			||||||
	- ARM Interrupt subsystem documentation
 | 
						- ARM Interrupt subsystem documentation
 | 
				
			||||||
 | 
					IXP4xx
 | 
				
			||||||
 | 
						- Intel IXP4xx Network processor.
 | 
				
			||||||
msm
 | 
					msm
 | 
				
			||||||
	- MSM specific documentation
 | 
						- MSM specific documentation
 | 
				
			||||||
Netwinder
 | 
					Netwinder
 | 
				
			||||||
| 
						 | 
					@ -24,8 +26,16 @@ SPEAr
 | 
				
			||||||
	- ST SPEAr platform Linux Overview
 | 
						- ST SPEAr platform Linux Overview
 | 
				
			||||||
VFP/
 | 
					VFP/
 | 
				
			||||||
	- Release notes for Linux Kernel Vector Floating Point support code
 | 
						- Release notes for Linux Kernel Vector Floating Point support code
 | 
				
			||||||
 | 
					cluster-pm-race-avoidance.txt
 | 
				
			||||||
 | 
						- Algorithm for CPU and Cluster setup/teardown
 | 
				
			||||||
empeg/
 | 
					empeg/
 | 
				
			||||||
	- Ltd's Empeg MP3 Car Audio Player
 | 
						- Ltd's Empeg MP3 Car Audio Player
 | 
				
			||||||
 | 
					firmware.txt
 | 
				
			||||||
 | 
						- Secure firmware registration and calling.
 | 
				
			||||||
 | 
					kernel_mode_neon.txt
 | 
				
			||||||
 | 
						- How to use NEON instructions in kernel mode
 | 
				
			||||||
 | 
					kernel_user_helpers.txt
 | 
				
			||||||
 | 
						- Helper functions in kernel space made available for userspace.
 | 
				
			||||||
mem_alignment
 | 
					mem_alignment
 | 
				
			||||||
	- alignment abort handler documentation
 | 
						- alignment abort handler documentation
 | 
				
			||||||
memory.txt
 | 
					memory.txt
 | 
				
			||||||
| 
						 | 
					@ -34,3 +44,7 @@ nwfpe/
 | 
				
			||||||
	- NWFPE floating point emulator documentation
 | 
						- NWFPE floating point emulator documentation
 | 
				
			||||||
swp_emulation
 | 
					swp_emulation
 | 
				
			||||||
	- SWP/SWPB emulation handler/logging description
 | 
						- SWP/SWPB emulation handler/logging description
 | 
				
			||||||
 | 
					tcm.txt
 | 
				
			||||||
 | 
						- ARM Tightly Coupled Memory
 | 
				
			||||||
 | 
					vlocks.txt
 | 
				
			||||||
 | 
						- Voting locks, low-level mechanism relying on memory system atomic writes.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,10 @@
 | 
				
			||||||
00-INDEX
 | 
					00-INDEX
 | 
				
			||||||
	- This file
 | 
						- This file
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
						- Makefile for gptimers example file.
 | 
				
			||||||
bfin-gpio-notes.txt
 | 
					bfin-gpio-notes.txt
 | 
				
			||||||
	- Notes in developing/using bfin-gpio driver.
 | 
						- Notes in developing/using bfin-gpio driver.
 | 
				
			||||||
 | 
					 | 
				
			||||||
bfin-spi-notes.txt
 | 
					bfin-spi-notes.txt
 | 
				
			||||||
	- Notes for using bfin spi bus driver.
 | 
						- Notes for using bfin spi bus driver.
 | 
				
			||||||
 | 
					gptimers-example.c
 | 
				
			||||||
 | 
						- gptimers example
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,8 @@ deadline-iosched.txt
 | 
				
			||||||
	- Deadline IO scheduler tunables
 | 
						- Deadline IO scheduler tunables
 | 
				
			||||||
ioprio.txt
 | 
					ioprio.txt
 | 
				
			||||||
	- Block io priorities (in CFQ scheduler)
 | 
						- Block io priorities (in CFQ scheduler)
 | 
				
			||||||
 | 
					null_blk.txt
 | 
				
			||||||
 | 
						- Null block for block-layer benchmarking.
 | 
				
			||||||
queue-sysfs.txt
 | 
					queue-sysfs.txt
 | 
				
			||||||
	- Queue's sysfs entries
 | 
						- Queue's sysfs entries
 | 
				
			||||||
request.txt
 | 
					request.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,3 +8,5 @@ https://lists.ozlabs.org/listinfo/devicetree-discuss
 | 
				
			||||||
	- this file
 | 
						- this file
 | 
				
			||||||
booting-without-of.txt
 | 
					booting-without-of.txt
 | 
				
			||||||
	- Booting Linux without Open Firmware, describes history and format of device trees.
 | 
						- Booting Linux without Open Firmware, describes history and format of device trees.
 | 
				
			||||||
 | 
					usage-model.txt
 | 
				
			||||||
 | 
						- How Linux uses DT and what DT aims to solve.
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					TI-NSPIRE interrupt controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Required properties:
 | 
				
			||||||
 | 
					- compatible: Compatible property value should be "lsi,zevio-intc".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- reg: Physical base address of the controller and length of memory mapped
 | 
				
			||||||
 | 
						region.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- interrupt-controller : Identifies the node as an interrupt controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interrupt-controller {
 | 
				
			||||||
 | 
						compatible = "lsi,zevio-intc";
 | 
				
			||||||
 | 
						interrupt-controller;
 | 
				
			||||||
 | 
						reg = <0xDC000000 0x1000>;
 | 
				
			||||||
 | 
						#interrupt-cells = <1>;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,9 @@ Required properties:
 | 
				
			||||||
- #address-cells: should be one. The cell is the slot id.
 | 
					- #address-cells: should be one. The cell is the slot id.
 | 
				
			||||||
- #size-cells: should be zero.
 | 
					- #size-cells: should be zero.
 | 
				
			||||||
- at least one slot node
 | 
					- at least one slot node
 | 
				
			||||||
 | 
					- clock-names: tuple listing input clock names.
 | 
				
			||||||
 | 
						Required elements: "mci_clk"
 | 
				
			||||||
 | 
					- clocks: phandles to input clocks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The node contains child nodes for each slot that the platform uses
 | 
					The node contains child nodes for each slot that the platform uses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +27,8 @@ mmc0: mmc@f0008000 {
 | 
				
			||||||
	interrupts = <12 4>;
 | 
						interrupts = <12 4>;
 | 
				
			||||||
	#address-cells = <1>;
 | 
						#address-cells = <1>;
 | 
				
			||||||
	#size-cells = <0>;
 | 
						#size-cells = <0>;
 | 
				
			||||||
 | 
						clock-names = "mci_clk";
 | 
				
			||||||
 | 
						clocks = <&mci0_clk>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[ child node definitions...]
 | 
						[ child node definitions...]
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
* Allwinner EMAC ethernet controller
 | 
					* Allwinner EMAC ethernet controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
- compatible: should be "allwinner,sun4i-emac".
 | 
					- compatible: should be "allwinner,sun4i-a10-emac" (Deprecated:
 | 
				
			||||||
 | 
					              "allwinner,sun4i-emac")
 | 
				
			||||||
- reg: address and length of the register set for the device.
 | 
					- reg: address and length of the register set for the device.
 | 
				
			||||||
- interrupts: interrupt for the device
 | 
					- interrupts: interrupt for the device
 | 
				
			||||||
- phy: A phandle to a phy node defining the PHY address (as the reg
 | 
					- phy: A phandle to a phy node defining the PHY address (as the reg
 | 
				
			||||||
| 
						 | 
					@ -14,7 +15,7 @@ Optional properties:
 | 
				
			||||||
Example:
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
emac: ethernet@01c0b000 {
 | 
					emac: ethernet@01c0b000 {
 | 
				
			||||||
       compatible = "allwinner,sun4i-emac";
 | 
					       compatible = "allwinner,sun4i-a10-emac";
 | 
				
			||||||
       reg = <0x01c0b000 0x1000>;
 | 
					       reg = <0x01c0b000 0x1000>;
 | 
				
			||||||
       interrupts = <55>;
 | 
					       interrupts = <55>;
 | 
				
			||||||
       clocks = <&ahb_gates 17>;
 | 
					       clocks = <&ahb_gates 17>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
* Allwinner A10 MDIO Ethernet Controller interface
 | 
					* Allwinner A10 MDIO Ethernet Controller interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
- compatible: should be "allwinner,sun4i-mdio".
 | 
					- compatible: should be "allwinner,sun4i-a10-mdio"
 | 
				
			||||||
 | 
					              (Deprecated: "allwinner,sun4i-mdio").
 | 
				
			||||||
- reg: address and length of the register set for the device.
 | 
					- reg: address and length of the register set for the device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Optional properties:
 | 
					Optional properties:
 | 
				
			||||||
| 
						 | 
					@ -9,7 +10,7 @@ Optional properties:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example at the SoC level:
 | 
					Example at the SoC level:
 | 
				
			||||||
mdio@01c0b080 {
 | 
					mdio@01c0b080 {
 | 
				
			||||||
	compatible = "allwinner,sun4i-mdio";
 | 
						compatible = "allwinner,sun4i-a10-mdio";
 | 
				
			||||||
	reg = <0x01c0b080 0x14>;
 | 
						reg = <0x01c0b080 0x14>;
 | 
				
			||||||
	#address-cells = <1>;
 | 
						#address-cells = <1>;
 | 
				
			||||||
	#size-cells = <0>;
 | 
						#size-cells = <0>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										47
									
								
								Documentation/devicetree/bindings/power/bq2415x.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Documentation/devicetree/bindings/power/bq2415x.txt
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					Binding for TI bq2415x Li-Ion Charger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Required properties:
 | 
				
			||||||
 | 
					- compatible: Should contain one of the following:
 | 
				
			||||||
 | 
					 * "ti,bq24150"
 | 
				
			||||||
 | 
					 * "ti,bq24150"
 | 
				
			||||||
 | 
					 * "ti,bq24150a"
 | 
				
			||||||
 | 
					 * "ti,bq24151"
 | 
				
			||||||
 | 
					 * "ti,bq24151a"
 | 
				
			||||||
 | 
					 * "ti,bq24152"
 | 
				
			||||||
 | 
					 * "ti,bq24153"
 | 
				
			||||||
 | 
					 * "ti,bq24153a"
 | 
				
			||||||
 | 
					 * "ti,bq24155"
 | 
				
			||||||
 | 
					 * "ti,bq24156"
 | 
				
			||||||
 | 
					 * "ti,bq24156a"
 | 
				
			||||||
 | 
					 * "ti,bq24158"
 | 
				
			||||||
 | 
					- reg:			   integer, i2c address of the device.
 | 
				
			||||||
 | 
					- ti,current-limit:	   integer, initial maximum current charger can pull
 | 
				
			||||||
 | 
								   from power supply in mA.
 | 
				
			||||||
 | 
					- ti,weak-battery-voltage: integer, weak battery voltage threshold in mV.
 | 
				
			||||||
 | 
								   The chip will use slow precharge if battery voltage
 | 
				
			||||||
 | 
								   is below this value.
 | 
				
			||||||
 | 
					- ti,battery-regulation-voltage: integer, maximum charging voltage in mV.
 | 
				
			||||||
 | 
					- ti,charge-current:	   integer, maximum charging current in mA.
 | 
				
			||||||
 | 
					- ti,termination-current:  integer, charge will be terminated when current in
 | 
				
			||||||
 | 
								   constant-voltage phase drops below this value (in mA).
 | 
				
			||||||
 | 
					- ti,resistor-sense:	   integer, value of sensing resistor in milliohm.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Optional properties:
 | 
				
			||||||
 | 
					- ti,usb-charger-detection: phandle to usb charger detection device.
 | 
				
			||||||
 | 
								    (required for auto mode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example from Nokia N900:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bq24150a {
 | 
				
			||||||
 | 
						compatible = "ti,bq24150a";
 | 
				
			||||||
 | 
						reg = <0x6b>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ti,current-limit = <100>;
 | 
				
			||||||
 | 
						ti,weak-battery-voltage = <3400>;
 | 
				
			||||||
 | 
						ti,battery-regulation-voltage = <4200>;
 | 
				
			||||||
 | 
						ti,charge-current = <650>;
 | 
				
			||||||
 | 
						ti,termination-current = <100>;
 | 
				
			||||||
 | 
						ti,resistor-sense = <68>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ti,usb-charger-detection = <&isp1704>;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,9 @@ Required properties:
 | 
				
			||||||
- reg: Address and length of the register set for the device
 | 
					- reg: Address and length of the register set for the device
 | 
				
			||||||
- interrupts: Should contain spi interrupt
 | 
					- interrupts: Should contain spi interrupt
 | 
				
			||||||
- cs-gpios: chipselects
 | 
					- cs-gpios: chipselects
 | 
				
			||||||
 | 
					- clock-names: tuple listing input clock names.
 | 
				
			||||||
 | 
						Required elements: "spi_clk"
 | 
				
			||||||
 | 
					- clocks: phandles to input clocks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example:
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +17,8 @@ spi1: spi@fffcc000 {
 | 
				
			||||||
	interrupts = <13 4 5>;
 | 
						interrupts = <13 4 5>;
 | 
				
			||||||
	#address-cells = <1>;
 | 
						#address-cells = <1>;
 | 
				
			||||||
	#size-cells = <0>;
 | 
						#size-cells = <0>;
 | 
				
			||||||
 | 
						clocks = <&spi1_clk>;
 | 
				
			||||||
 | 
						clock-names = "spi_clk";
 | 
				
			||||||
	cs-gpios = <&pioB 3 0>;
 | 
						cs-gpios = <&pioB 3 0>;
 | 
				
			||||||
	status = "okay";
 | 
						status = "okay";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@ ad	Avionic Design GmbH
 | 
				
			||||||
adi	Analog Devices, Inc.
 | 
					adi	Analog Devices, Inc.
 | 
				
			||||||
aeroflexgaisler	Aeroflex Gaisler AB
 | 
					aeroflexgaisler	Aeroflex Gaisler AB
 | 
				
			||||||
ak	Asahi Kasei Corp.
 | 
					ak	Asahi Kasei Corp.
 | 
				
			||||||
 | 
					allwinner	Allwinner Technology Co., Ltd.
 | 
				
			||||||
altr	Altera Corp.
 | 
					altr	Altera Corp.
 | 
				
			||||||
amcc	Applied Micro Circuits Corporation (APM, formally AMCC)
 | 
					amcc	Applied Micro Circuits Corporation (APM, formally AMCC)
 | 
				
			||||||
amstaos	AMS-Taos Inc.
 | 
					amstaos	AMS-Taos Inc.
 | 
				
			||||||
| 
						 | 
					@ -40,6 +41,7 @@ gmt	Global Mixed-mode Technology, Inc.
 | 
				
			||||||
gumstix	Gumstix, Inc.
 | 
					gumstix	Gumstix, Inc.
 | 
				
			||||||
haoyu	Haoyu Microelectronic Co. Ltd.
 | 
					haoyu	Haoyu Microelectronic Co. Ltd.
 | 
				
			||||||
hisilicon	Hisilicon Limited.
 | 
					hisilicon	Hisilicon Limited.
 | 
				
			||||||
 | 
					honeywell	Honeywell
 | 
				
			||||||
hp	Hewlett Packard
 | 
					hp	Hewlett Packard
 | 
				
			||||||
ibm	International Business Machines (IBM)
 | 
					ibm	International Business Machines (IBM)
 | 
				
			||||||
idt	Integrated Device Technologies, Inc.
 | 
					idt	Integrated Device Technologies, Inc.
 | 
				
			||||||
| 
						 | 
					@ -55,6 +57,7 @@ maxim	Maxim Integrated Products
 | 
				
			||||||
microchip	Microchip Technology Inc.
 | 
					microchip	Microchip Technology Inc.
 | 
				
			||||||
mosaixtech	Mosaix Technologies, Inc.
 | 
					mosaixtech	Mosaix Technologies, Inc.
 | 
				
			||||||
national	National Semiconductor
 | 
					national	National Semiconductor
 | 
				
			||||||
 | 
					neonode		Neonode Inc.
 | 
				
			||||||
nintendo	Nintendo
 | 
					nintendo	Nintendo
 | 
				
			||||||
nvidia	NVIDIA
 | 
					nvidia	NVIDIA
 | 
				
			||||||
nxp	NXP Semiconductors
 | 
					nxp	NXP Semiconductors
 | 
				
			||||||
| 
						 | 
					@ -64,7 +67,7 @@ phytec	PHYTEC Messtechnik GmbH
 | 
				
			||||||
picochip	Picochip Ltd
 | 
					picochip	Picochip Ltd
 | 
				
			||||||
powervr	PowerVR (deprecated, use img)
 | 
					powervr	PowerVR (deprecated, use img)
 | 
				
			||||||
qca	Qualcomm Atheros, Inc.
 | 
					qca	Qualcomm Atheros, Inc.
 | 
				
			||||||
qcom	Qualcomm, Inc.
 | 
					qcom	Qualcomm Technologies, Inc
 | 
				
			||||||
ralink	Mediatek/Ralink Technology Corp.
 | 
					ralink	Mediatek/Ralink Technology Corp.
 | 
				
			||||||
ramtron	Ramtron International
 | 
					ramtron	Ramtron International
 | 
				
			||||||
realtek Realtek Semiconductor Corp.
 | 
					realtek Realtek Semiconductor Corp.
 | 
				
			||||||
| 
						 | 
					@ -78,6 +81,7 @@ silabs	Silicon Laboratories
 | 
				
			||||||
simtek
 | 
					simtek
 | 
				
			||||||
sirf	SiRF Technology, Inc.
 | 
					sirf	SiRF Technology, Inc.
 | 
				
			||||||
snps 	Synopsys, Inc.
 | 
					snps 	Synopsys, Inc.
 | 
				
			||||||
 | 
					spansion	Spansion Inc.
 | 
				
			||||||
st	STMicroelectronics
 | 
					st	STMicroelectronics
 | 
				
			||||||
ste	ST-Ericsson
 | 
					ste	ST-Ericsson
 | 
				
			||||||
stericsson	ST-Ericsson
 | 
					stericsson	ST-Ericsson
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,7 @@ Peter Beutner <p.beutner@gmx.net>
 | 
				
			||||||
Wilson Michaels <wilsonmichaels@earthlink.net>
 | 
					Wilson Michaels <wilsonmichaels@earthlink.net>
 | 
				
			||||||
  for the lgdt330x frontend driver, and various bugfixes
 | 
					  for the lgdt330x frontend driver, and various bugfixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Michael Krufky <mkrufky@m1k.net>
 | 
					Michael Krufky <mkrufky@linuxtv.org>
 | 
				
			||||||
  for maintaining v4l/dvb inter-tree dependencies
 | 
					  for maintaining v4l/dvb inter-tree dependencies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Taylor Jacob <rtjacob@earthlink.net>
 | 
					Taylor Jacob <rtjacob@earthlink.net>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,8 @@ please mail me.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
00-INDEX
 | 
					00-INDEX
 | 
				
			||||||
	- this file.
 | 
						- this file.
 | 
				
			||||||
 | 
					api.txt
 | 
				
			||||||
 | 
						- The frame buffer API between applications and buffer devices.
 | 
				
			||||||
arkfb.txt
 | 
					arkfb.txt
 | 
				
			||||||
	- info on the fbdev driver for ARK Logic chips.
 | 
						- info on the fbdev driver for ARK Logic chips.
 | 
				
			||||||
aty128fb.txt
 | 
					aty128fb.txt
 | 
				
			||||||
| 
						 | 
					@ -51,12 +53,16 @@ sh7760fb.txt
 | 
				
			||||||
	- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
 | 
						- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
 | 
				
			||||||
sisfb.txt
 | 
					sisfb.txt
 | 
				
			||||||
	- info on the framebuffer device driver for various SiS chips.
 | 
						- info on the framebuffer device driver for various SiS chips.
 | 
				
			||||||
 | 
					sm501.txt
 | 
				
			||||||
 | 
						- info on the framebuffer device driver for sm501 videoframebuffer.
 | 
				
			||||||
sstfb.txt
 | 
					sstfb.txt
 | 
				
			||||||
	- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
 | 
						- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
 | 
				
			||||||
tgafb.txt
 | 
					tgafb.txt
 | 
				
			||||||
	- info on the TGA (DECChip 21030) frame buffer driver.
 | 
						- info on the TGA (DECChip 21030) frame buffer driver.
 | 
				
			||||||
tridentfb.txt
 | 
					tridentfb.txt
 | 
				
			||||||
	info on the framebuffer driver for some Trident chip based cards.
 | 
						info on the framebuffer driver for some Trident chip based cards.
 | 
				
			||||||
 | 
					udlfb.txt
 | 
				
			||||||
 | 
						- Driver for DisplayLink USB 2.0 chips.
 | 
				
			||||||
uvesafb.txt
 | 
					uvesafb.txt
 | 
				
			||||||
	- info on the userspace VESA (VBE2+ compliant) frame buffer device.
 | 
						- info on the userspace VESA (VBE2+ compliant) frame buffer device.
 | 
				
			||||||
vesafb.txt
 | 
					vesafb.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,8 @@
 | 
				
			||||||
	- this file (info on some of the filesystems supported by linux).
 | 
						- this file (info on some of the filesystems supported by linux).
 | 
				
			||||||
Locking
 | 
					Locking
 | 
				
			||||||
	- info on locking rules as they pertain to Linux VFS.
 | 
						- info on locking rules as they pertain to Linux VFS.
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
						- Makefile for building the filsystems-part of DocBook.
 | 
				
			||||||
9p.txt
 | 
					9p.txt
 | 
				
			||||||
	- 9p (v9fs) is an implementation of the Plan 9 remote fs protocol.
 | 
						- 9p (v9fs) is an implementation of the Plan 9 remote fs protocol.
 | 
				
			||||||
adfs.txt
 | 
					adfs.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,8 @@ nfs41-server.txt
 | 
				
			||||||
	- info on the Linux server implementation of NFSv4 minor version 1.
 | 
						- info on the Linux server implementation of NFSv4 minor version 1.
 | 
				
			||||||
nfs-rdma.txt
 | 
					nfs-rdma.txt
 | 
				
			||||||
	- how to install and setup the Linux NFS/RDMA client and server software
 | 
						- how to install and setup the Linux NFS/RDMA client and server software
 | 
				
			||||||
 | 
					nfsd-admin-interfaces.txt
 | 
				
			||||||
 | 
						- Administrative interfaces for nfsd.
 | 
				
			||||||
nfsroot.txt
 | 
					nfsroot.txt
 | 
				
			||||||
	- short guide on setting up a diskless box with NFS root filesystem.
 | 
						- short guide on setting up a diskless box with NFS root filesystem.
 | 
				
			||||||
pnfs.txt
 | 
					pnfs.txt
 | 
				
			||||||
| 
						 | 
					@ -20,5 +22,5 @@ rpc-cache.txt
 | 
				
			||||||
	- introduction to the caching mechanisms in the sunrpc layer.
 | 
						- introduction to the caching mechanisms in the sunrpc layer.
 | 
				
			||||||
idmapper.txt
 | 
					idmapper.txt
 | 
				
			||||||
	- information for configuring request-keys to be used by idmapper
 | 
						- information for configuring request-keys to be used by idmapper
 | 
				
			||||||
knfsd-rpcgss.txt
 | 
					rpc-server-gss.txt
 | 
				
			||||||
	- Information on GSS authentication support in the NFS Server
 | 
						- Information on GSS authentication support in the NFS Server
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,8 @@ reason, the kernel code must instantiate I2C devices explicitly. There are
 | 
				
			||||||
several ways to achieve this, depending on the context and requirements.
 | 
					several ways to achieve this, depending on the context and requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Method 1: Declare the I2C devices by bus number
 | 
					Method 1a: Declare the I2C devices by bus number
 | 
				
			||||||
-----------------------------------------------
 | 
					------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This method is appropriate when the I2C bus is a system bus as is the case
 | 
					This method is appropriate when the I2C bus is a system bus as is the case
 | 
				
			||||||
for many embedded systems. On such systems, each I2C bus has a number
 | 
					for many embedded systems. On such systems, each I2C bus has a number
 | 
				
			||||||
| 
						 | 
					@ -51,6 +51,43 @@ The devices will be automatically unbound and destroyed when the I2C bus
 | 
				
			||||||
they sit on goes away (if ever.)
 | 
					they sit on goes away (if ever.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Method 1b: Declare the I2C devices via devicetree
 | 
				
			||||||
 | 
					-------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This method has the same implications as method 1a. The declaration of I2C
 | 
				
			||||||
 | 
					devices is here done via devicetree as subnodes of the master controller.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						i2c1: i2c@400a0000 {
 | 
				
			||||||
 | 
							/* ... master properties skipped ... */
 | 
				
			||||||
 | 
							clock-frequency = <100000>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							flash@50 {
 | 
				
			||||||
 | 
								compatible = "atmel,24c256";
 | 
				
			||||||
 | 
								reg = <0x50>;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pca9532: gpio@60 {
 | 
				
			||||||
 | 
								compatible = "nxp,pca9532";
 | 
				
			||||||
 | 
								gpio-controller;
 | 
				
			||||||
 | 
								#gpio-cells = <2>;
 | 
				
			||||||
 | 
								reg = <0x60>;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Here, two devices are attached to the bus using a speed of 100kHz. For
 | 
				
			||||||
 | 
					additional properties which might be needed to set up the device, please refer
 | 
				
			||||||
 | 
					to its devicetree documentation in Documentation/devicetree/bindings/.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Method 1c: Declare the I2C devices via ACPI
 | 
				
			||||||
 | 
					-------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ACPI can also describe I2C devices. There is special documentation for this
 | 
				
			||||||
 | 
					which is currently located at Documentation/acpi/enumeration.txt.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Method 2: Instantiate the devices explicitly
 | 
					Method 2: Instantiate the devices explicitly
 | 
				
			||||||
--------------------------------------------
 | 
					--------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,3 +10,5 @@ ide-tape.txt
 | 
				
			||||||
	- info on the IDE ATAPI streaming tape driver
 | 
						- info on the IDE ATAPI streaming tape driver
 | 
				
			||||||
ide.txt
 | 
					ide.txt
 | 
				
			||||||
	- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
 | 
						- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
 | 
				
			||||||
 | 
					warm-plug-howto.txt
 | 
				
			||||||
 | 
						- using sysfs to remove and add IDE devices.
 | 
				
			||||||
| 
						 | 
					@ -1726,16 +1726,16 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 | 
				
			||||||
			option description.
 | 
								option description.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memmap=nn[KMG]@ss[KMG]
 | 
						memmap=nn[KMG]@ss[KMG]
 | 
				
			||||||
			[KNL] Force usage of a specific region of memory
 | 
								[KNL] Force usage of a specific region of memory.
 | 
				
			||||||
			Region of memory to be used, from ss to ss+nn.
 | 
								Region of memory to be used is from ss to ss+nn.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memmap=nn[KMG]#ss[KMG]
 | 
						memmap=nn[KMG]#ss[KMG]
 | 
				
			||||||
			[KNL,ACPI] Mark specific memory as ACPI data.
 | 
								[KNL,ACPI] Mark specific memory as ACPI data.
 | 
				
			||||||
			Region of memory to be used, from ss to ss+nn.
 | 
								Region of memory to be marked is from ss to ss+nn.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memmap=nn[KMG]$ss[KMG]
 | 
						memmap=nn[KMG]$ss[KMG]
 | 
				
			||||||
			[KNL,ACPI] Mark specific memory as reserved.
 | 
								[KNL,ACPI] Mark specific memory as reserved.
 | 
				
			||||||
			Region of memory to be used, from ss to ss+nn.
 | 
								Region of memory to be reserved is from ss to ss+nn.
 | 
				
			||||||
			Example: Exclude memory from 0x18690000-0x1869ffff
 | 
								Example: Exclude memory from 0x18690000-0x1869ffff
 | 
				
			||||||
			         memmap=64K$0x18690000
 | 
								         memmap=64K$0x18690000
 | 
				
			||||||
			         or
 | 
								         or
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,15 @@
 | 
				
			||||||
00-INDEX
 | 
					00-INDEX
 | 
				
			||||||
	- This file
 | 
						- This file
 | 
				
			||||||
acer-wmi.txt
 | 
					Makefile
 | 
				
			||||||
	- information on the Acer Laptop WMI Extras driver.
 | 
						- Makefile for building dslm example program.
 | 
				
			||||||
asus-laptop.txt
 | 
					asus-laptop.txt
 | 
				
			||||||
	- information on the Asus Laptop Extras driver.
 | 
						- information on the Asus Laptop Extras driver.
 | 
				
			||||||
disk-shock-protection.txt
 | 
					disk-shock-protection.txt
 | 
				
			||||||
	- information on hard disk shock protection.
 | 
						- information on hard disk shock protection.
 | 
				
			||||||
dslm.c
 | 
					dslm.c
 | 
				
			||||||
	- Simple Disk Sleep Monitor program
 | 
						- Simple Disk Sleep Monitor program
 | 
				
			||||||
 | 
					hpfall.c
 | 
				
			||||||
 | 
						- (HP) laptop accelerometer program for disk protection.
 | 
				
			||||||
laptop-mode.txt
 | 
					laptop-mode.txt
 | 
				
			||||||
	- how to conserve battery power using laptop-mode.
 | 
						- how to conserve battery power using laptop-mode.
 | 
				
			||||||
sony-laptop.txt
 | 
					sony-laptop.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,7 @@
 | 
				
			||||||
 | 
					00-INDEX
 | 
				
			||||||
 | 
						- This file
 | 
				
			||||||
 | 
					leds-blinkm.txt
 | 
				
			||||||
 | 
						- Driver for BlinkM LED-devices.
 | 
				
			||||||
leds-class.txt
 | 
					leds-class.txt
 | 
				
			||||||
	- documents LED handling under Linux.
 | 
						- documents LED handling under Linux.
 | 
				
			||||||
leds-lp3944.txt
 | 
					leds-lp3944.txt
 | 
				
			||||||
| 
						 | 
					@ -12,3 +16,7 @@ leds-lp55xx.txt
 | 
				
			||||||
	- description about lp55xx common driver.
 | 
						- description about lp55xx common driver.
 | 
				
			||||||
leds-lm3556.txt
 | 
					leds-lm3556.txt
 | 
				
			||||||
	- notes on how to use the leds-lm3556 driver.
 | 
						- notes on how to use the leds-lm3556 driver.
 | 
				
			||||||
 | 
					ledtrig-oneshot.txt
 | 
				
			||||||
 | 
						- One-shot LED trigger for both sporadic and dense events.
 | 
				
			||||||
 | 
					ledtrig-transient.txt
 | 
				
			||||||
 | 
						- LED Transient Trigger, one shot timer activation.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
00-INDEX
 | 
					00-INDEX
 | 
				
			||||||
	- this file
 | 
						- this file
 | 
				
			||||||
 | 
					README.buddha
 | 
				
			||||||
 | 
						- Amiga Buddha and Catweasel IDE Driver
 | 
				
			||||||
kernel-options.txt
 | 
					kernel-options.txt
 | 
				
			||||||
	- command line options for Linux/m68k
 | 
						- command line options for Linux/m68k
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,14 @@
 | 
				
			||||||
	- information on the 3Com Etherlink III Series Ethernet cards.
 | 
						- information on the 3Com Etherlink III Series Ethernet cards.
 | 
				
			||||||
6pack.txt
 | 
					6pack.txt
 | 
				
			||||||
	- info on the 6pack protocol, an alternative to KISS for AX.25
 | 
						- info on the 6pack protocol, an alternative to KISS for AX.25
 | 
				
			||||||
DLINK.txt
 | 
					LICENSE.qla3xxx
 | 
				
			||||||
	- info on the D-Link DE-600/DE-620 parallel port pocket adapters
 | 
						- GPLv2 for QLogic Linux Networking HBA Driver
 | 
				
			||||||
 | 
					LICENSE.qlge
 | 
				
			||||||
 | 
						- GPLv2 for QLogic Linux qlge NIC Driver
 | 
				
			||||||
 | 
					LICENSE.qlcnic
 | 
				
			||||||
 | 
						- GPLv2 for QLogic Linux qlcnic NIC Driver
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
						- Makefile for docsrc.
 | 
				
			||||||
PLIP.txt
 | 
					PLIP.txt
 | 
				
			||||||
	- PLIP: The Parallel Line Internet Protocol device driver
 | 
						- PLIP: The Parallel Line Internet Protocol device driver
 | 
				
			||||||
README.ipw2100
 | 
					README.ipw2100
 | 
				
			||||||
| 
						 | 
					@ -17,7 +23,7 @@ README.ipw2200
 | 
				
			||||||
README.sb1000
 | 
					README.sb1000
 | 
				
			||||||
	- info on General Instrument/NextLevel SURFboard1000 cable modem.
 | 
						- info on General Instrument/NextLevel SURFboard1000 cable modem.
 | 
				
			||||||
alias.txt
 | 
					alias.txt
 | 
				
			||||||
	- info on using alias network devices 
 | 
						- info on using alias network devices.
 | 
				
			||||||
arcnet-hardware.txt
 | 
					arcnet-hardware.txt
 | 
				
			||||||
	- tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
 | 
						- tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
 | 
				
			||||||
arcnet.txt
 | 
					arcnet.txt
 | 
				
			||||||
| 
						 | 
					@ -80,7 +86,7 @@ framerelay.txt
 | 
				
			||||||
	- info on using Frame Relay/Data Link Connection Identifier (DLCI).
 | 
						- info on using Frame Relay/Data Link Connection Identifier (DLCI).
 | 
				
			||||||
gen_stats.txt
 | 
					gen_stats.txt
 | 
				
			||||||
	- Generic networking statistics for netlink users.
 | 
						- Generic networking statistics for netlink users.
 | 
				
			||||||
generic_hdlc.txt
 | 
					generic-hdlc.txt
 | 
				
			||||||
	- The generic High Level Data Link Control (HDLC) layer.
 | 
						- The generic High Level Data Link Control (HDLC) layer.
 | 
				
			||||||
generic_netlink.txt
 | 
					generic_netlink.txt
 | 
				
			||||||
	- info on Generic Netlink
 | 
						- info on Generic Netlink
 | 
				
			||||||
| 
						 | 
					@ -88,6 +94,8 @@ gianfar.txt
 | 
				
			||||||
	- Gianfar Ethernet Driver.
 | 
						- Gianfar Ethernet Driver.
 | 
				
			||||||
i40e.txt
 | 
					i40e.txt
 | 
				
			||||||
	- README for the Intel Ethernet Controller XL710 Driver (i40e).
 | 
						- README for the Intel Ethernet Controller XL710 Driver (i40e).
 | 
				
			||||||
 | 
					i40evf.txt
 | 
				
			||||||
 | 
						- Short note on the Driver for the Intel(R) XL710 X710 Virtual Function
 | 
				
			||||||
ieee802154.txt
 | 
					ieee802154.txt
 | 
				
			||||||
	- Linux IEEE 802.15.4 implementation, API and drivers
 | 
						- Linux IEEE 802.15.4 implementation, API and drivers
 | 
				
			||||||
igb.txt
 | 
					igb.txt
 | 
				
			||||||
| 
						 | 
					@ -102,6 +110,8 @@ ipddp.txt
 | 
				
			||||||
	- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
 | 
						- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
 | 
				
			||||||
iphase.txt
 | 
					iphase.txt
 | 
				
			||||||
	- Interphase PCI ATM (i)Chip IA Linux driver info.
 | 
						- Interphase PCI ATM (i)Chip IA Linux driver info.
 | 
				
			||||||
 | 
					ipsec.txt
 | 
				
			||||||
 | 
						- Note on not compressing IPSec payload and resulting failed policy check.
 | 
				
			||||||
ipv6.txt
 | 
					ipv6.txt
 | 
				
			||||||
	- Options to the ipv6 kernel module.
 | 
						- Options to the ipv6 kernel module.
 | 
				
			||||||
ipvs-sysctl.txt
 | 
					ipvs-sysctl.txt
 | 
				
			||||||
| 
						 | 
					@ -120,6 +130,8 @@ lapb-module.txt
 | 
				
			||||||
	- programming information of the LAPB module.
 | 
						- programming information of the LAPB module.
 | 
				
			||||||
ltpc.txt
 | 
					ltpc.txt
 | 
				
			||||||
	- the Apple or Farallon LocalTalk PC card driver
 | 
						- the Apple or Farallon LocalTalk PC card driver
 | 
				
			||||||
 | 
					mac80211-auth-assoc-deauth.txt
 | 
				
			||||||
 | 
						- authentication and association / deauth-disassoc with max80211
 | 
				
			||||||
mac80211-injection.txt
 | 
					mac80211-injection.txt
 | 
				
			||||||
	- HOWTO use packet injection with mac80211
 | 
						- HOWTO use packet injection with mac80211
 | 
				
			||||||
multiqueue.txt
 | 
					multiqueue.txt
 | 
				
			||||||
| 
						 | 
					@ -134,6 +146,10 @@ netdevices.txt
 | 
				
			||||||
	- info on network device driver functions exported to the kernel.
 | 
						- info on network device driver functions exported to the kernel.
 | 
				
			||||||
netif-msg.txt
 | 
					netif-msg.txt
 | 
				
			||||||
	- Design of the network interface message level setting (NETIF_MSG_*).
 | 
						- Design of the network interface message level setting (NETIF_MSG_*).
 | 
				
			||||||
 | 
					netlink_mmap.txt
 | 
				
			||||||
 | 
						- memory mapped I/O with netlink
 | 
				
			||||||
 | 
					nf_conntrack-sysctl.txt
 | 
				
			||||||
 | 
						- list of netfilter-sysctl knobs.
 | 
				
			||||||
nfc.txt
 | 
					nfc.txt
 | 
				
			||||||
	- The Linux Near Field Communication (NFS) subsystem.
 | 
						- The Linux Near Field Communication (NFS) subsystem.
 | 
				
			||||||
openvswitch.txt
 | 
					openvswitch.txt
 | 
				
			||||||
| 
						 | 
					@ -176,7 +192,7 @@ skfp.txt
 | 
				
			||||||
	- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
 | 
						- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
 | 
				
			||||||
smc9.txt
 | 
					smc9.txt
 | 
				
			||||||
	- the driver for SMC's 9000 series of Ethernet cards
 | 
						- the driver for SMC's 9000 series of Ethernet cards
 | 
				
			||||||
spider-net.txt
 | 
					spider_net.txt
 | 
				
			||||||
	- README for the Spidernet Driver (as found in PS3 / Cell BE).
 | 
						- README for the Spidernet Driver (as found in PS3 / Cell BE).
 | 
				
			||||||
stmmac.txt
 | 
					stmmac.txt
 | 
				
			||||||
	- README for the STMicro Synopsys Ethernet driver.
 | 
						- README for the STMicro Synopsys Ethernet driver.
 | 
				
			||||||
| 
						 | 
					@ -188,6 +204,8 @@ tcp.txt
 | 
				
			||||||
	- short blurb on how TCP output takes place.
 | 
						- short blurb on how TCP output takes place.
 | 
				
			||||||
tcp-thin.txt
 | 
					tcp-thin.txt
 | 
				
			||||||
	- kernel tuning options for low rate 'thin' TCP streams.
 | 
						- kernel tuning options for low rate 'thin' TCP streams.
 | 
				
			||||||
 | 
					team.txt
 | 
				
			||||||
 | 
						- pointer to information for ethernet teaming devices.
 | 
				
			||||||
tlan.txt
 | 
					tlan.txt
 | 
				
			||||||
	- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
 | 
						- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
 | 
				
			||||||
tproxy.txt
 | 
					tproxy.txt
 | 
				
			||||||
| 
						 | 
					@ -200,6 +218,8 @@ vortex.txt
 | 
				
			||||||
	- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
 | 
						- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
 | 
				
			||||||
vxge.txt
 | 
					vxge.txt
 | 
				
			||||||
	- README for the Neterion X3100 PCIe Server Adapter.
 | 
						- README for the Neterion X3100 PCIe Server Adapter.
 | 
				
			||||||
 | 
					vxlan.txt
 | 
				
			||||||
 | 
						- Virtual extensible LAN overview
 | 
				
			||||||
x25.txt
 | 
					x25.txt
 | 
				
			||||||
	- general info on X.25 development.
 | 
						- general info on X.25 development.
 | 
				
			||||||
x25-iface.txt
 | 
					x25-iface.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -75,14 +75,26 @@ Before the controller can make use of the PHY, it has to get a reference to
 | 
				
			||||||
it. This framework provides the following APIs to get a reference to the PHY.
 | 
					it. This framework provides the following APIs to get a reference to the PHY.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct phy *phy_get(struct device *dev, const char *string);
 | 
					struct phy *phy_get(struct device *dev, const char *string);
 | 
				
			||||||
 | 
					struct phy *phy_optional_get(struct device *dev, const char *string);
 | 
				
			||||||
struct phy *devm_phy_get(struct device *dev, const char *string);
 | 
					struct phy *devm_phy_get(struct device *dev, const char *string);
 | 
				
			||||||
 | 
					struct phy *devm_phy_optional_get(struct device *dev, const char *string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
phy_get and devm_phy_get can be used to get the PHY. In the case of dt boot,
 | 
					phy_get, phy_optional_get, devm_phy_get and devm_phy_optional_get can
 | 
				
			||||||
the string arguments should contain the phy name as given in the dt data and
 | 
					be used to get the PHY. In the case of dt boot, the string arguments
 | 
				
			||||||
in the case of non-dt boot, it should contain the label of the PHY.
 | 
					should contain the phy name as given in the dt data and in the case of
 | 
				
			||||||
The only difference between the two APIs is that devm_phy_get associates the
 | 
					non-dt boot, it should contain the label of the PHY.  The two
 | 
				
			||||||
device with the PHY using devres on successful PHY get. On driver detach,
 | 
					devm_phy_get associates the device with the PHY using devres on
 | 
				
			||||||
release function is invoked on the the devres data and devres data is freed.
 | 
					successful PHY get. On driver detach, release function is invoked on
 | 
				
			||||||
 | 
					the the devres data and devres data is freed. phy_optional_get and
 | 
				
			||||||
 | 
					devm_phy_optional_get should be used when the phy is optional. These
 | 
				
			||||||
 | 
					two functions will never return -ENODEV, but instead returns NULL when
 | 
				
			||||||
 | 
					the phy cannot be found.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It should be noted that NULL is a valid phy reference. All phy
 | 
				
			||||||
 | 
					consumer calls on the NULL phy become NOPs. That is the release calls,
 | 
				
			||||||
 | 
					the phy_init() and phy_exit() calls, and phy_power_on() and
 | 
				
			||||||
 | 
					phy_power_off() calls are all NOP when applied to a NULL phy. The NULL
 | 
				
			||||||
 | 
					phy is useful in devices for handling optional phy devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
5. Releasing a reference to the PHY
 | 
					5. Releasing a reference to the PHY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,8 @@ apm-acpi.txt
 | 
				
			||||||
	- basic info about the APM and ACPI support.
 | 
						- basic info about the APM and ACPI support.
 | 
				
			||||||
basic-pm-debugging.txt
 | 
					basic-pm-debugging.txt
 | 
				
			||||||
	- Debugging suspend and resume
 | 
						- Debugging suspend and resume
 | 
				
			||||||
 | 
					charger-manager.txt
 | 
				
			||||||
 | 
						- Battery charger management.
 | 
				
			||||||
devices.txt
 | 
					devices.txt
 | 
				
			||||||
	- How drivers interact with system-wide power management
 | 
						- How drivers interact with system-wide power management
 | 
				
			||||||
drivers-testing.txt
 | 
					drivers-testing.txt
 | 
				
			||||||
| 
						 | 
					@ -22,6 +24,8 @@ pm_qos_interface.txt
 | 
				
			||||||
	- info on Linux PM Quality of Service interface
 | 
						- info on Linux PM Quality of Service interface
 | 
				
			||||||
power_supply_class.txt
 | 
					power_supply_class.txt
 | 
				
			||||||
	- Tells userspace about battery, UPS, AC or DC power supply properties
 | 
						- Tells userspace about battery, UPS, AC or DC power supply properties
 | 
				
			||||||
 | 
					runtime_pm.txt
 | 
				
			||||||
 | 
						- Power management framework for I/O devices.
 | 
				
			||||||
s2ram.txt
 | 
					s2ram.txt
 | 
				
			||||||
	- How to get suspend to ram working (and debug it when it isn't)
 | 
						- How to get suspend to ram working (and debug it when it isn't)
 | 
				
			||||||
states.txt
 | 
					states.txt
 | 
				
			||||||
| 
						 | 
					@ -38,7 +42,5 @@ tricks.txt
 | 
				
			||||||
	- How to trick software suspend (to disk) into working when it isn't
 | 
						- How to trick software suspend (to disk) into working when it isn't
 | 
				
			||||||
userland-swsusp.txt
 | 
					userland-swsusp.txt
 | 
				
			||||||
	- Experimental implementation of software suspend in userspace
 | 
						- Experimental implementation of software suspend in userspace
 | 
				
			||||||
video_extension.txt
 | 
					 | 
				
			||||||
	- ACPI video extensions
 | 
					 | 
				
			||||||
video.txt
 | 
					video.txt
 | 
				
			||||||
	- Video issues during resume from suspend
 | 
						- Video issues during resume from suspend
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -117,6 +117,7 @@ static void usage(char *progname)
 | 
				
			||||||
		" -f val     adjust the ptp clock frequency by 'val' ppb\n"
 | 
							" -f val     adjust the ptp clock frequency by 'val' ppb\n"
 | 
				
			||||||
		" -g         get the ptp clock time\n"
 | 
							" -g         get the ptp clock time\n"
 | 
				
			||||||
		" -h         prints this message\n"
 | 
							" -h         prints this message\n"
 | 
				
			||||||
 | 
							" -i val     index for event/trigger\n"
 | 
				
			||||||
		" -k val     measure the time offset between system and phc clock\n"
 | 
							" -k val     measure the time offset between system and phc clock\n"
 | 
				
			||||||
		"            for 'val' times (Maximum 25)\n"
 | 
							"            for 'val' times (Maximum 25)\n"
 | 
				
			||||||
		" -p val     enable output with a period of 'val' nanoseconds\n"
 | 
							" -p val     enable output with a period of 'val' nanoseconds\n"
 | 
				
			||||||
| 
						 | 
					@ -154,6 +155,7 @@ int main(int argc, char *argv[])
 | 
				
			||||||
	int capabilities = 0;
 | 
						int capabilities = 0;
 | 
				
			||||||
	int extts = 0;
 | 
						int extts = 0;
 | 
				
			||||||
	int gettime = 0;
 | 
						int gettime = 0;
 | 
				
			||||||
 | 
						int index = 0;
 | 
				
			||||||
	int oneshot = 0;
 | 
						int oneshot = 0;
 | 
				
			||||||
	int pct_offset = 0;
 | 
						int pct_offset = 0;
 | 
				
			||||||
	int n_samples = 0;
 | 
						int n_samples = 0;
 | 
				
			||||||
| 
						 | 
					@ -167,7 +169,7 @@ int main(int argc, char *argv[])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	progname = strrchr(argv[0], '/');
 | 
						progname = strrchr(argv[0], '/');
 | 
				
			||||||
	progname = progname ? 1+progname : argv[0];
 | 
						progname = progname ? 1+progname : argv[0];
 | 
				
			||||||
	while (EOF != (c = getopt(argc, argv, "a:A:cd:e:f:ghk:p:P:sSt:v"))) {
 | 
						while (EOF != (c = getopt(argc, argv, "a:A:cd:e:f:ghi:k:p:P:sSt:v"))) {
 | 
				
			||||||
		switch (c) {
 | 
							switch (c) {
 | 
				
			||||||
		case 'a':
 | 
							case 'a':
 | 
				
			||||||
			oneshot = atoi(optarg);
 | 
								oneshot = atoi(optarg);
 | 
				
			||||||
| 
						 | 
					@ -190,6 +192,9 @@ int main(int argc, char *argv[])
 | 
				
			||||||
		case 'g':
 | 
							case 'g':
 | 
				
			||||||
			gettime = 1;
 | 
								gettime = 1;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
							case 'i':
 | 
				
			||||||
 | 
								index = atoi(optarg);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
		case 'k':
 | 
							case 'k':
 | 
				
			||||||
			pct_offset = 1;
 | 
								pct_offset = 1;
 | 
				
			||||||
			n_samples = atoi(optarg);
 | 
								n_samples = atoi(optarg);
 | 
				
			||||||
| 
						 | 
					@ -301,7 +306,7 @@ int main(int argc, char *argv[])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (extts) {
 | 
						if (extts) {
 | 
				
			||||||
		memset(&extts_request, 0, sizeof(extts_request));
 | 
							memset(&extts_request, 0, sizeof(extts_request));
 | 
				
			||||||
		extts_request.index = 0;
 | 
							extts_request.index = index;
 | 
				
			||||||
		extts_request.flags = PTP_ENABLE_FEATURE;
 | 
							extts_request.flags = PTP_ENABLE_FEATURE;
 | 
				
			||||||
		if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) {
 | 
							if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) {
 | 
				
			||||||
			perror("PTP_EXTTS_REQUEST");
 | 
								perror("PTP_EXTTS_REQUEST");
 | 
				
			||||||
| 
						 | 
					@ -375,7 +380,7 @@ int main(int argc, char *argv[])
 | 
				
			||||||
			return -1;
 | 
								return -1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		memset(&perout_request, 0, sizeof(perout_request));
 | 
							memset(&perout_request, 0, sizeof(perout_request));
 | 
				
			||||||
		perout_request.index = 0;
 | 
							perout_request.index = index;
 | 
				
			||||||
		perout_request.start.sec = ts.tv_sec + 2;
 | 
							perout_request.start.sec = ts.tv_sec + 2;
 | 
				
			||||||
		perout_request.start.nsec = 0;
 | 
							perout_request.start.nsec = 0;
 | 
				
			||||||
		perout_request.period.sec = 0;
 | 
							perout_request.period.sec = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,11 +16,13 @@ Debugging390.txt
 | 
				
			||||||
	- hints for debugging on s390 systems.
 | 
						- hints for debugging on s390 systems.
 | 
				
			||||||
driver-model.txt
 | 
					driver-model.txt
 | 
				
			||||||
	- information on s390 devices and the driver model.
 | 
						- information on s390 devices and the driver model.
 | 
				
			||||||
 | 
					kvm.txt
 | 
				
			||||||
 | 
						- ioctl calls to /dev/kvm on s390.
 | 
				
			||||||
monreader.txt
 | 
					monreader.txt
 | 
				
			||||||
	- information on accessing the z/VM monitor stream from Linux.
 | 
						- information on accessing the z/VM monitor stream from Linux.
 | 
				
			||||||
 | 
					qeth.txt
 | 
				
			||||||
 | 
						- HiperSockets Bridge Port Support.
 | 
				
			||||||
s390dbf.txt
 | 
					s390dbf.txt
 | 
				
			||||||
	- information on using the s390 debug feature.
 | 
						- information on using the s390 debug feature.
 | 
				
			||||||
TAPE
 | 
					zfcpdump.txt
 | 
				
			||||||
	- information on the driver for channel-attached tapes.
 | 
					 | 
				
			||||||
zfcpdump
 | 
					 | 
				
			||||||
	- information on the s390 SCSI dump tool.
 | 
						- information on the s390 SCSI dump tool.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,8 @@
 | 
				
			||||||
	- this file.
 | 
						- this file.
 | 
				
			||||||
sched-arch.txt
 | 
					sched-arch.txt
 | 
				
			||||||
	- CPU Scheduler implementation hints for architecture specific code.
 | 
						- CPU Scheduler implementation hints for architecture specific code.
 | 
				
			||||||
 | 
					sched-bwc.txt
 | 
				
			||||||
 | 
						- CFS bandwidth control overview.
 | 
				
			||||||
sched-design-CFS.txt
 | 
					sched-design-CFS.txt
 | 
				
			||||||
	- goals, design and implementation of the Completely Fair Scheduler.
 | 
						- goals, design and implementation of the Completely Fair Scheduler.
 | 
				
			||||||
sched-domains.txt
 | 
					sched-domains.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,8 @@ NinjaSCSI.txt
 | 
				
			||||||
	- info on WorkBiT NinjaSCSI-32/32Bi driver
 | 
						- info on WorkBiT NinjaSCSI-32/32Bi driver
 | 
				
			||||||
aacraid.txt
 | 
					aacraid.txt
 | 
				
			||||||
	- Driver supporting Adaptec RAID controllers
 | 
						- Driver supporting Adaptec RAID controllers
 | 
				
			||||||
 | 
					advansys.txt
 | 
				
			||||||
 | 
						- List of Advansys Host Adapters
 | 
				
			||||||
aha152x.txt
 | 
					aha152x.txt
 | 
				
			||||||
	- info on driver for Adaptec AHA152x based adapters
 | 
						- info on driver for Adaptec AHA152x based adapters
 | 
				
			||||||
aic79xx.txt
 | 
					aic79xx.txt
 | 
				
			||||||
| 
						 | 
					@ -44,6 +46,12 @@ aic7xxx.txt
 | 
				
			||||||
	- info on driver for Adaptec controllers
 | 
						- info on driver for Adaptec controllers
 | 
				
			||||||
arcmsr_spec.txt
 | 
					arcmsr_spec.txt
 | 
				
			||||||
	- ARECA FIRMWARE SPEC (for IOP331 adapter)
 | 
						- ARECA FIRMWARE SPEC (for IOP331 adapter)
 | 
				
			||||||
 | 
					bfa.txt
 | 
				
			||||||
 | 
						- Brocade FC/FCOE adapter driver.
 | 
				
			||||||
 | 
					bnx2fc.txt
 | 
				
			||||||
 | 
						- FCoE hardware offload for Broadcom network interfaces.
 | 
				
			||||||
 | 
					cxgb3i.txt
 | 
				
			||||||
 | 
						- Chelsio iSCSI Linux Driver
 | 
				
			||||||
dc395x.txt
 | 
					dc395x.txt
 | 
				
			||||||
	- README file for the dc395x SCSI driver
 | 
						- README file for the dc395x SCSI driver
 | 
				
			||||||
dpti.txt
 | 
					dpti.txt
 | 
				
			||||||
| 
						 | 
					@ -52,18 +60,24 @@ dtc3x80.txt
 | 
				
			||||||
	- info on driver for DTC 2x80 based adapters
 | 
						- info on driver for DTC 2x80 based adapters
 | 
				
			||||||
g_NCR5380.txt
 | 
					g_NCR5380.txt
 | 
				
			||||||
	- info on driver for NCR5380 and NCR53c400 based adapters
 | 
						- info on driver for NCR5380 and NCR53c400 based adapters
 | 
				
			||||||
 | 
					hpsa.txt
 | 
				
			||||||
 | 
						- HP Smart Array Controller SCSI driver.
 | 
				
			||||||
hptiop.txt
 | 
					hptiop.txt
 | 
				
			||||||
	- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
 | 
						- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
 | 
				
			||||||
in2000.txt
 | 
					in2000.txt
 | 
				
			||||||
	- info on in2000 driver
 | 
						- info on in2000 driver
 | 
				
			||||||
libsas.txt
 | 
					libsas.txt
 | 
				
			||||||
	- Serial Attached SCSI management layer.
 | 
						- Serial Attached SCSI management layer.
 | 
				
			||||||
 | 
					link_power_management_policy.txt
 | 
				
			||||||
 | 
						- Link power management options.
 | 
				
			||||||
lpfc.txt
 | 
					lpfc.txt
 | 
				
			||||||
	- LPFC driver release notes
 | 
						- LPFC driver release notes
 | 
				
			||||||
megaraid.txt
 | 
					megaraid.txt
 | 
				
			||||||
	- Common Management Module, shared code handling ioctls for LSI drivers
 | 
						- Common Management Module, shared code handling ioctls for LSI drivers
 | 
				
			||||||
ncr53c8xx.txt
 | 
					ncr53c8xx.txt
 | 
				
			||||||
	- info on driver for NCR53c8xx based adapters
 | 
						- info on driver for NCR53c8xx based adapters
 | 
				
			||||||
 | 
					osd.txt
 | 
				
			||||||
 | 
						Object-Based Storage Device, command set introduction.
 | 
				
			||||||
osst.txt
 | 
					osst.txt
 | 
				
			||||||
	- info on driver for OnStream SC-x0 SCSI tape
 | 
						- info on driver for OnStream SC-x0 SCSI tape
 | 
				
			||||||
ppa.txt
 | 
					ppa.txt
 | 
				
			||||||
| 
						 | 
					@ -74,6 +88,8 @@ scsi-changer.txt
 | 
				
			||||||
	- README for the SCSI media changer driver
 | 
						- README for the SCSI media changer driver
 | 
				
			||||||
scsi-generic.txt
 | 
					scsi-generic.txt
 | 
				
			||||||
	- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
 | 
						- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
 | 
				
			||||||
 | 
					scsi-parameters.txt
 | 
				
			||||||
 | 
						- List of SCSI-parameters to pass to the kernel at module load-time.
 | 
				
			||||||
scsi.txt
 | 
					scsi.txt
 | 
				
			||||||
	- short blurb on using SCSI support as a module.
 | 
						- short blurb on using SCSI support as a module.
 | 
				
			||||||
scsi_mid_low_api.txt
 | 
					scsi_mid_low_api.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,10 +4,12 @@ README.cycladesZ
 | 
				
			||||||
	- info on Cyclades-Z firmware loading.
 | 
						- info on Cyclades-Z firmware loading.
 | 
				
			||||||
digiepca.txt
 | 
					digiepca.txt
 | 
				
			||||||
	- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
 | 
						- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
 | 
				
			||||||
hayes-esp.txt
 | 
					driver
 | 
				
			||||||
	- info on using the Hayes ESP serial driver.
 | 
						- intro to the low level serial driver.
 | 
				
			||||||
moxa-smartio
 | 
					moxa-smartio
 | 
				
			||||||
	- file with info on installing/using Moxa multiport serial driver.
 | 
						- file with info on installing/using Moxa multiport serial driver.
 | 
				
			||||||
 | 
					n_gsm.txt
 | 
				
			||||||
 | 
						- GSM 0710 tty multiplexer howto.
 | 
				
			||||||
riscom8.txt
 | 
					riscom8.txt
 | 
				
			||||||
	- notes on using the RISCom/8 multi-port serial driver.
 | 
						- notes on using the RISCom/8 multi-port serial driver.
 | 
				
			||||||
rocket.txt
 | 
					rocket.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								Documentation/spi/00-INDEX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Documentation/spi/00-INDEX
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					00-INDEX
 | 
				
			||||||
 | 
						- this file.
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
						- Makefile for the example sourcefiles.
 | 
				
			||||||
 | 
					butterfly
 | 
				
			||||||
 | 
						- AVR Butterfly SPI driver overview and pin configuration.
 | 
				
			||||||
 | 
					ep93xx_spi
 | 
				
			||||||
 | 
						- Basic EP93xx SPI driver configuration.
 | 
				
			||||||
 | 
					pxa2xx
 | 
				
			||||||
 | 
						- PXA2xx SPI master controller build by spi_message fifo wq
 | 
				
			||||||
 | 
					spidev
 | 
				
			||||||
 | 
						- Intro to the userspace API for spi devices
 | 
				
			||||||
 | 
					spidev_fdx.c
 | 
				
			||||||
 | 
						- spidev example file
 | 
				
			||||||
 | 
					spi-lm70llp
 | 
				
			||||||
 | 
						- Connecting an LM70-LLP sensor to the kernel via the SPI subsys.
 | 
				
			||||||
 | 
					spi-sc18is602
 | 
				
			||||||
 | 
						- NXP SC18IS602/603 I2C-bus to SPI bridge
 | 
				
			||||||
 | 
					spi-summary
 | 
				
			||||||
 | 
						- (Linux) SPI overview. If unsure about SPI or SPI in Linux, start here.
 | 
				
			||||||
 | 
					spidev_test.c
 | 
				
			||||||
 | 
						- SPI testing utility.
 | 
				
			||||||
| 
						 | 
					@ -543,7 +543,22 @@ SPI MASTER METHODS
 | 
				
			||||||
	queuing transfers that arrive in the meantime. When the driver is
 | 
						queuing transfers that arrive in the meantime. When the driver is
 | 
				
			||||||
	finished with this message, it must call
 | 
						finished with this message, it must call
 | 
				
			||||||
	spi_finalize_current_message() so the subsystem can issue the next
 | 
						spi_finalize_current_message() so the subsystem can issue the next
 | 
				
			||||||
	transfer. This may sleep.
 | 
						message. This may sleep.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    master->transfer_one(struct spi_master *master, struct spi_device *spi,
 | 
				
			||||||
 | 
								 struct spi_transfer *transfer)
 | 
				
			||||||
 | 
						The subsystem calls the driver to transfer a single transfer while
 | 
				
			||||||
 | 
						queuing transfers that arrive in the meantime. When the driver is
 | 
				
			||||||
 | 
						finished with this transfer, it must call
 | 
				
			||||||
 | 
						spi_finalize_current_transfer() so the subsystem can issue the next
 | 
				
			||||||
 | 
						transfer. This may sleep. Note: transfer_one and transfer_one_message
 | 
				
			||||||
 | 
						are mutually exclusive; when both are set, the generic subsystem does
 | 
				
			||||||
 | 
						not call your transfer_one callback.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Return values:
 | 
				
			||||||
 | 
						negative errno: error
 | 
				
			||||||
 | 
						0: transfer is finished
 | 
				
			||||||
 | 
						1: transfer is still in progress
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEPRECATED METHODS
 | 
					    DEPRECATED METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,8 @@ hpet_example.c
 | 
				
			||||||
	- sample hpet timer test program
 | 
						- sample hpet timer test program
 | 
				
			||||||
hrtimers.txt
 | 
					hrtimers.txt
 | 
				
			||||||
	- subsystem for high-resolution kernel timers
 | 
						- subsystem for high-resolution kernel timers
 | 
				
			||||||
 | 
					Makefile
 | 
				
			||||||
 | 
						- Build and link hpet_example
 | 
				
			||||||
NO_HZ.txt
 | 
					NO_HZ.txt
 | 
				
			||||||
	- Summary of the different methods for the scheduler clock-interrupts management.
 | 
						- Summary of the different methods for the scheduler clock-interrupts management.
 | 
				
			||||||
timers-howto.txt
 | 
					timers-howto.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,5 +20,7 @@ ppc-pv.txt
 | 
				
			||||||
	- the paravirtualization interface on PowerPC.
 | 
						- the paravirtualization interface on PowerPC.
 | 
				
			||||||
review-checklist.txt
 | 
					review-checklist.txt
 | 
				
			||||||
	- review checklist for KVM patches.
 | 
						- review checklist for KVM patches.
 | 
				
			||||||
 | 
					s390-diag.txt
 | 
				
			||||||
 | 
						- Diagnose hypercall description (for IBM S/390)
 | 
				
			||||||
timekeeping.txt
 | 
					timekeeping.txt
 | 
				
			||||||
	- timekeeping virtualization for x86-based architectures.
 | 
						- timekeeping virtualization for x86-based architectures.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,8 +16,6 @@ hwpoison.txt
 | 
				
			||||||
	- explains what hwpoison is
 | 
						- explains what hwpoison is
 | 
				
			||||||
ksm.txt
 | 
					ksm.txt
 | 
				
			||||||
	- how to use the Kernel Samepage Merging feature.
 | 
						- how to use the Kernel Samepage Merging feature.
 | 
				
			||||||
locking
 | 
					 | 
				
			||||||
	- info on how locking and synchronization is done in the Linux vm code.
 | 
					 | 
				
			||||||
numa
 | 
					numa
 | 
				
			||||||
	- information about NUMA specific code in the Linux vm.
 | 
						- information about NUMA specific code in the Linux vm.
 | 
				
			||||||
numa_memory_policy.txt
 | 
					numa_memory_policy.txt
 | 
				
			||||||
| 
						 | 
					@ -32,6 +30,8 @@ slub.txt
 | 
				
			||||||
	- a short users guide for SLUB.
 | 
						- a short users guide for SLUB.
 | 
				
			||||||
soft-dirty.txt
 | 
					soft-dirty.txt
 | 
				
			||||||
	- short explanation for soft-dirty PTEs
 | 
						- short explanation for soft-dirty PTEs
 | 
				
			||||||
 | 
					split_page_table_lock
 | 
				
			||||||
 | 
						- Separate per-table lock to improve scalability of the old page_table_lock.
 | 
				
			||||||
transhuge.txt
 | 
					transhuge.txt
 | 
				
			||||||
	- Transparent Hugepage Support, alternative way of using hugepages.
 | 
						- Transparent Hugepage Support, alternative way of using hugepages.
 | 
				
			||||||
unevictable-lru.txt
 | 
					unevictable-lru.txt
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,9 @@ ds2482
 | 
				
			||||||
	- The Maxim/Dallas Semiconductor DS2482 provides 1-wire busses.
 | 
						- The Maxim/Dallas Semiconductor DS2482 provides 1-wire busses.
 | 
				
			||||||
ds2490
 | 
					ds2490
 | 
				
			||||||
	- The Maxim/Dallas Semiconductor DS2490 builds USB <-> W1 bridges.
 | 
						- The Maxim/Dallas Semiconductor DS2490 builds USB <-> W1 bridges.
 | 
				
			||||||
mxc_w1
 | 
					mxc-w1
 | 
				
			||||||
	- W1 master controller driver found on Freescale MX2/MX3 SoCs
 | 
						- W1 master controller driver found on Freescale MX2/MX3 SoCs
 | 
				
			||||||
 | 
					omap-hdq
 | 
				
			||||||
 | 
						- HDQ/1-wire module of TI OMAP 2430/3430.
 | 
				
			||||||
w1-gpio
 | 
					w1-gpio
 | 
				
			||||||
	- GPIO 1-wire bus master driver.
 | 
						- GPIO 1-wire bus master driver.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,3 +4,5 @@ w1_therm
 | 
				
			||||||
	- The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
 | 
						- The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
 | 
				
			||||||
w1_ds2423
 | 
					w1_ds2423
 | 
				
			||||||
	- The Maxim/Dallas Semiconductor ds2423 counter device.
 | 
						- The Maxim/Dallas Semiconductor ds2423 counter device.
 | 
				
			||||||
 | 
					w1_ds28e04
 | 
				
			||||||
 | 
						- The Maxim/Dallas Semiconductor ds28e04 eeprom.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,20 @@
 | 
				
			||||||
00-INDEX
 | 
					00-INDEX
 | 
				
			||||||
	- this file
 | 
						- this file
 | 
				
			||||||
mtrr.txt
 | 
					boot.txt
 | 
				
			||||||
	- how to use x86 Memory Type Range Registers to increase performance
 | 
						- List of boot protocol versions
 | 
				
			||||||
 | 
					early-microcode.txt
 | 
				
			||||||
 | 
						- How to load microcode from an initrd-CPIO archive early to fix CPU issues.
 | 
				
			||||||
 | 
					earlyprintk.txt
 | 
				
			||||||
 | 
						- Using earlyprintk with a USB2 debug port key.
 | 
				
			||||||
 | 
					entry_64.txt
 | 
				
			||||||
 | 
						- Describe (some of the) kernel entry points for x86.
 | 
				
			||||||
exception-tables.txt
 | 
					exception-tables.txt
 | 
				
			||||||
	- why and how Linux kernel uses exception tables on x86
 | 
						- why and how Linux kernel uses exception tables on x86
 | 
				
			||||||
 | 
					mtrr.txt
 | 
				
			||||||
 | 
						- how to use x86 Memory Type Range Registers to increase performance
 | 
				
			||||||
 | 
					pat.txt
 | 
				
			||||||
 | 
						- Page Attribute Table intro and API
 | 
				
			||||||
 | 
					usb-legacy-support.txt
 | 
				
			||||||
 | 
						- how to fix/avoid quirks when using emulated PS/2 mouse/keyboard.
 | 
				
			||||||
 | 
					zero-page.txt
 | 
				
			||||||
 | 
						- layout of the first page of memory.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ help.  Contact the Chinese maintainer if this translation is outdated
 | 
				
			||||||
or if there is a problem with the translation.
 | 
					or if there is a problem with the translation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Maintainer: Will Deacon <will.deacon@arm.com>
 | 
					Maintainer: Will Deacon <will.deacon@arm.com>
 | 
				
			||||||
Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
 | 
					Chinese maintainer: Fu Wei <wefu@redhat.com>
 | 
				
			||||||
---------------------------------------------------------------------
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
Documentation/arm64/booting.txt 的中文翻译
 | 
					Documentation/arm64/booting.txt 的中文翻译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,9 +16,9 @@ Documentation/arm64/booting.txt 的中文翻译
 | 
				
			||||||
译存在问题,请联系中文版维护者。
 | 
					译存在问题,请联系中文版维护者。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
英文版维护者: Will Deacon <will.deacon@arm.com>
 | 
					英文版维护者: Will Deacon <will.deacon@arm.com>
 | 
				
			||||||
中文版维护者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版维护者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
中文版翻译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版翻译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
中文版校译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版校译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
以下为正文
 | 
					以下为正文
 | 
				
			||||||
---------------------------------------------------------------------
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -64,8 +64,8 @@ RAM,或可能使用对这个设备已知的 RAM 信息,还可能使用任何
 | 
				
			||||||
 | 
					
 | 
				
			||||||
必要性: 强制
 | 
					必要性: 强制
 | 
				
			||||||
 | 
					
 | 
				
			||||||
设备树数据块(dtb)大小必须不大于 2 MB,且位于从内核映像起始算起第一个
 | 
					设备树数据块(dtb)必须 8 字节对齐,并位于从内核映像起始算起第一个 512MB
 | 
				
			||||||
512MB 内的 2MB 边界上。这使得内核可以通过初始页表中的单个节描述符来
 | 
					内,且不得跨越 2MB 对齐边界。这使得内核可以通过初始页表中的单个节描述符来
 | 
				
			||||||
映射此数据块。
 | 
					映射此数据块。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -84,13 +84,23 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
 | 
				
			||||||
 | 
					
 | 
				
			||||||
必要性: 强制
 | 
					必要性: 强制
 | 
				
			||||||
 | 
					
 | 
				
			||||||
已解压的内核映像包含一个 32 字节的头,内容如下:
 | 
					已解压的内核映像包含一个 64 字节的头,内容如下:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  u32 magic	= 0x14000008;	/* 跳转到 stext, 小端 */
 | 
					  u32 code0;			/* 可执行代码 */
 | 
				
			||||||
  u32 res0	= 0;		/* 保留 */
 | 
					  u32 code1;			/* 可执行代码 */
 | 
				
			||||||
  u64 text_offset;		/* 映像装载偏移 */
 | 
					  u64 text_offset;		/* 映像装载偏移 */
 | 
				
			||||||
 | 
					  u64 res0	= 0;		/* 保留 */
 | 
				
			||||||
  u64 res1	= 0;		/* 保留 */
 | 
					  u64 res1	= 0;		/* 保留 */
 | 
				
			||||||
  u64 res2	= 0;		/* 保留 */
 | 
					  u64 res2	= 0;		/* 保留 */
 | 
				
			||||||
 | 
					  u64 res3	= 0;		/* 保留 */
 | 
				
			||||||
 | 
					  u64 res4	= 0;		/* 保留 */
 | 
				
			||||||
 | 
					  u32 magic	= 0x644d5241;	/* 魔数, 小端, "ARM\x64" */
 | 
				
			||||||
 | 
					  u32 res5 = 0;      		/* 保留 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					映像头注释:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- code0/code1 负责跳转到 stext.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
映像必须位于系统 RAM 起始处的特定偏移(当前是 0x80000)。系统 RAM
 | 
					映像必须位于系统 RAM 起始处的特定偏移(当前是 0x80000)。系统 RAM
 | 
				
			||||||
的起始地址必须是以 2MB 对齐的。
 | 
					的起始地址必须是以 2MB 对齐的。
 | 
				
			||||||
| 
						 | 
					@ -118,9 +128,9 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
 | 
				
			||||||
  外部高速缓存(如果存在)必须配置并禁用。
 | 
					  外部高速缓存(如果存在)必须配置并禁用。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 架构计时器
 | 
					- 架构计时器
 | 
				
			||||||
  CNTFRQ 必须设定为计时器的频率。
 | 
					  CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU
 | 
				
			||||||
  如果在 EL1 模式下进入内核,则 CNTHCTL_EL2 中的 EL1PCTEN (bit 0)
 | 
					  都一致的值。如果在 EL1 模式下进入内核,则 CNTHCTL_EL2 中的
 | 
				
			||||||
  必须置位。
 | 
					  EL1PCTEN (bit 0) 必须置位。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 一致性
 | 
					- 一致性
 | 
				
			||||||
  通过内核启动的所有 CPU 在内核入口地址上必须处于相同的一致性域中。
 | 
					  通过内核启动的所有 CPU 在内核入口地址上必须处于相同的一致性域中。
 | 
				
			||||||
| 
						 | 
					@ -131,23 +141,40 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
 | 
				
			||||||
  在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件
 | 
					  在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件
 | 
				
			||||||
  在一个更高的异常级别下初始化,以防止在 未知 状态下运行。
 | 
					  在一个更高的异常级别下初始化,以防止在 未知 状态下运行。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的
 | 
				
			||||||
 | 
					必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
引导装载程序必须在每个 CPU 处于以下状态时跳入内核入口:
 | 
					引导装载程序必须在每个 CPU 处于以下状态时跳入内核入口:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 主 CPU 必须直接跳入内核映像的第一条指令。通过此 CPU 传递的设备树
 | 
					- 主 CPU 必须直接跳入内核映像的第一条指令。通过此 CPU 传递的设备树
 | 
				
			||||||
  数据块必须在每个 CPU 节点中包含以下内容:
 | 
					  数据块必须在每个 CPU 节点中包含一个 ‘enable-method’ 属性,所
 | 
				
			||||||
 | 
					  支持的 enable-method 请见下文。
 | 
				
			||||||
    1、‘enable-method’属性。目前,此字段支持的值仅为字符串“spin-table”。
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    2、‘cpu-release-addr’标识一个 64-bit、初始化为零的内存位置。
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  引导装载程序必须生成这些设备树属性,并在跳入内核入口之前将其插入
 | 
					  引导装载程序必须生成这些设备树属性,并在跳入内核入口之前将其插入
 | 
				
			||||||
  数据块。
 | 
					  数据块。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 任何辅助 CPU 必须在内存保留区(通过设备树中的 /memreserve/ 域传递
 | 
					- enable-method 为 “spin-table” 的 CPU 必须在它们的 CPU
 | 
				
			||||||
 | 
					  节点中包含一个 ‘cpu-release-addr’ 属性。这个属性标识了一个
 | 
				
			||||||
 | 
					  64 位自然对齐且初始化为零的内存位置。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  这些 CPU 必须在内存保留区(通过设备树中的 /memreserve/ 域传递
 | 
				
			||||||
  给内核)中自旋于内核之外,轮询它们的 cpu-release-addr 位置(必须
 | 
					  给内核)中自旋于内核之外,轮询它们的 cpu-release-addr 位置(必须
 | 
				
			||||||
  包含在保留区中)。可通过插入 wfe 指令来降低忙循环开销,而主 CPU 将
 | 
					  包含在保留区中)。可通过插入 wfe 指令来降低忙循环开销,而主 CPU 将
 | 
				
			||||||
  发出 sev 指令。当对 cpu-release-addr 所指位置的读取操作返回非零值
 | 
					  发出 sev 指令。当对 cpu-release-addr 所指位置的读取操作返回非零值
 | 
				
			||||||
  时,CPU 必须直接跳入此值所指向的地址。
 | 
					  时,CPU 必须跳入此值所指向的地址。此值为一个单独的 64 位小端值,
 | 
				
			||||||
 | 
					  因此 CPU 须在跳转前将所读取的值转换为其本身的端模式。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- enable-method 为 “psci” 的 CPU 保持在内核外(比如,在
 | 
				
			||||||
 | 
					  memory 节点中描述为内核空间的内存区外,或在通过设备树 /memreserve/
 | 
				
			||||||
 | 
					  域中描述为内核保留区的空间中)。内核将会发起在 ARM 文档(编号
 | 
				
			||||||
 | 
					  ARM DEN 0022A:用于 ARM 上的电源状态协调接口系统软件)中描述的
 | 
				
			||||||
 | 
					  CPU_ON 调用来将 CPU 带入内核。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *译者注:到文档翻译时,此文档已更新为 ARM DEN 0022B。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  设备树必须包含一个 ‘psci’ 节点,请参考以下文档:
 | 
				
			||||||
 | 
					  Documentation/devicetree/bindings/arm/psci.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 辅助 CPU 通用寄存器设置
 | 
					- 辅助 CPU 通用寄存器设置
 | 
				
			||||||
  x0 = 0 (保留,将来可能使用)
 | 
					  x0 = 0 (保留,将来可能使用)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ help.  Contact the Chinese maintainer if this translation is outdated
 | 
				
			||||||
or if there is a problem with the translation.
 | 
					or if there is a problem with the translation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Maintainer: Catalin Marinas <catalin.marinas@arm.com>
 | 
					Maintainer: Catalin Marinas <catalin.marinas@arm.com>
 | 
				
			||||||
Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
 | 
					Chinese maintainer: Fu Wei <wefu@redhat.com>
 | 
				
			||||||
---------------------------------------------------------------------
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
Documentation/arm64/memory.txt 的中文翻译
 | 
					Documentation/arm64/memory.txt 的中文翻译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,9 +16,9 @@ Documentation/arm64/memory.txt 的中文翻译
 | 
				
			||||||
译存在问题,请联系中文版维护者。
 | 
					译存在问题,请联系中文版维护者。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
英文版维护者: Catalin Marinas <catalin.marinas@arm.com>
 | 
					英文版维护者: Catalin Marinas <catalin.marinas@arm.com>
 | 
				
			||||||
中文版维护者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版维护者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
中文版翻译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版翻译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
中文版校译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
 | 
					中文版校译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
以下为正文
 | 
					以下为正文
 | 
				
			||||||
---------------------------------------------------------------------
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ AArch64 Linux 使用页大小为 4KB 的 3 级转换表配置,对于用户和
 | 
				
			||||||
TTBR1 中,且从不写入 TTBR0。
 | 
					TTBR1 中,且从不写入 TTBR0。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AArch64 Linux 内存布局:
 | 
					AArch64 Linux 在页大小为 4KB 时的内存布局:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
起始地址			结束地址			大小		用途
 | 
					起始地址			结束地址			大小		用途
 | 
				
			||||||
-----------------------------------------------------------------------
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -55,15 +55,42 @@ ffffffbc00000000	ffffffbdffffffff	   8GB		vmemmap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffffffbe00000000	ffffffbffbbfffff	  ~8GB		[防护页,未来用于 vmmemap]
 | 
					ffffffbe00000000	ffffffbffbbfffff	  ~8GB		[防护页,未来用于 vmmemap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ffffffbffbc00000	ffffffbffbdfffff	   2MB		earlyprintk 设备
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffffffbffbe00000	ffffffbffbe0ffff	  64KB		PCI I/O 空间
 | 
					ffffffbffbe00000	ffffffbffbe0ffff	  64KB		PCI I/O 空间
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffffffbbffff0000	ffffffbcffffffff	  ~2MB		[防护页]
 | 
					ffffffbffbe10000	ffffffbcffffffff	  ~2MB		[防护页]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffffffbffc000000	ffffffbfffffffff	  64MB		模块
 | 
					ffffffbffc000000	ffffffbfffffffff	  64MB		模块
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffffffc000000000	ffffffffffffffff	 256GB		内核逻辑内存映射
 | 
					ffffffc000000000	ffffffffffffffff	 256GB		内核逻辑内存映射
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AArch64 Linux 在页大小为 64KB 时的内存布局:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					起始地址			结束地址			大小		用途
 | 
				
			||||||
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
 | 
					0000000000000000	000003ffffffffff	   4TB		用户空间
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffc0000000000	fffffdfbfffeffff	  ~2TB		vmalloc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfbffff0000	fffffdfbffffffff	  64KB		[防护页]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfc00000000	fffffdfdffffffff	   8GB		vmemmap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfe00000000	fffffdfffbbfffff	  ~8GB		[防护页,未来用于 vmmemap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfffbc00000	fffffdfffbdfffff	   2MB		earlyprintk 设备
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfffbe00000	fffffdfffbe0ffff	  64KB		PCI I/O 空间
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfffbe10000	fffffdfffbffffff	  ~2MB		[防护页]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffdfffc000000	fffffdffffffffff	  64MB		模块
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fffffe0000000000	ffffffffffffffff	   2TB		内核逻辑内存映射
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
4KB 页大小的转换表查找:
 | 
					4KB 页大小的转换表查找:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
+--------+--------+--------+--------+--------+--------+--------+--------+
 | 
					+--------+--------+--------+--------+--------+--------+--------+--------+
 | 
				
			||||||
| 
						 | 
					@ -91,3 +118,10 @@ ffffffc000000000	ffffffffffffffff	 256GB		内核逻辑内存映射
 | 
				
			||||||
 |                 |    +--------------------------> [41:29] L2 索引 (仅使用 38:29 )
 | 
					 |                 |    +--------------------------> [41:29] L2 索引 (仅使用 38:29 )
 | 
				
			||||||
 |                 +-------------------------------> [47:42] L1 索引 (未使用)
 | 
					 |                 +-------------------------------> [47:42] L1 索引 (未使用)
 | 
				
			||||||
 +-------------------------------------------------> [63] TTBR0/1
 | 
					 +-------------------------------------------------> [63] TTBR0/1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					当使用 KVM 时, 管理程序(hypervisor)在 EL2 中通过相对内核虚拟地址的
 | 
				
			||||||
 | 
					一个固定偏移来映射内核页(内核虚拟地址的高 24 位设为零):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					起始地址			结束地址			大小		用途
 | 
				
			||||||
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
 | 
					0000004000000000	0000007fffffffff	 256GB		在 HYP 中映射的内核对象
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										52
									
								
								Documentation/zh_CN/arm64/tagged-pointers.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Documentation/zh_CN/arm64/tagged-pointers.txt
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					Chinese translated version of Documentation/arm64/tagged-pointers.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you have any comment or update to the content, please contact the
 | 
				
			||||||
 | 
					original document maintainer directly.  However, if you have a problem
 | 
				
			||||||
 | 
					communicating in English you can also ask the Chinese maintainer for
 | 
				
			||||||
 | 
					help.  Contact the Chinese maintainer if this translation is outdated
 | 
				
			||||||
 | 
					or if there is a problem with the translation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Maintainer: Will Deacon <will.deacon@arm.com>
 | 
				
			||||||
 | 
					Chinese maintainer: Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
 | 
					Documentation/arm64/tagged-pointers.txt 的中文翻译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
 | 
				
			||||||
 | 
					交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
 | 
				
			||||||
 | 
					译存在问题,请联系中文版维护者。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					英文版维护者: Will Deacon <will.deacon@arm.com>
 | 
				
			||||||
 | 
					中文版维护者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					中文版翻译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					中文版校译者: 傅炜  Fu Wei <wefu@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					以下为正文
 | 
				
			||||||
 | 
					---------------------------------------------------------------------
 | 
				
			||||||
 | 
							Linux 在 AArch64 中带标记的虚拟地址
 | 
				
			||||||
 | 
							=================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					作者: Will Deacon <will.deacon@arm.com>
 | 
				
			||||||
 | 
					日期: 2013 年 06 月 12 日
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					本文档简述了在 AArch64 地址转换系统中提供的带标记的虚拟地址及其在
 | 
				
			||||||
 | 
					AArch64 Linux 中的潜在用途。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					内核提供的地址转换表配置使通过 TTBR0 完成的虚拟地址转换(即用户空间
 | 
				
			||||||
 | 
					映射),其虚拟地址的最高 8 位(63:56)会被转换硬件所忽略。这种机制
 | 
				
			||||||
 | 
					让这些位可供应用程序自由使用,其注意事项如下:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						(1) 内核要求所有传递到 EL1 的用户空间地址带有 0x00 标记。
 | 
				
			||||||
 | 
						    这意味着任何携带用户空间虚拟地址的系统调用(syscall)
 | 
				
			||||||
 | 
						    参数 *必须* 在陷入内核前使它们的最高字节被清零。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						(2) 非零标记在传递信号时不被保存。这意味着在应用程序中利用了
 | 
				
			||||||
 | 
						    标记的信号处理函数无法依赖 siginfo_t 的用户空间虚拟
 | 
				
			||||||
 | 
						    地址所携带的包含其内部域信息的标记。此规则的一个例外是
 | 
				
			||||||
 | 
						    当信号是在调试观察点的异常处理程序中产生的,此时标记的
 | 
				
			||||||
 | 
						    信息将被保存。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						(3) 当使用带标记的指针时需特别留心,因为仅对两个虚拟地址
 | 
				
			||||||
 | 
						    的高字节,C 编译器很可能无法判断它们是不同的。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					此构架会阻止对带标记的 PC 指针的利用,因此在异常返回时,其高字节
 | 
				
			||||||
 | 
					将被设置成一个为 “55” 的扩展符。
 | 
				
			||||||
| 
						 | 
					@ -2367,7 +2367,7 @@ F:	include/linux/cpufreq.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CPU FREQUENCY DRIVERS - ARM BIG LITTLE
 | 
					CPU FREQUENCY DRIVERS - ARM BIG LITTLE
 | 
				
			||||||
M:	Viresh Kumar <viresh.kumar@linaro.org>
 | 
					M:	Viresh Kumar <viresh.kumar@linaro.org>
 | 
				
			||||||
M:	Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
 | 
					M:	Sudeep Holla <sudeep.holla@arm.com>
 | 
				
			||||||
L:	cpufreq@vger.kernel.org
 | 
					L:	cpufreq@vger.kernel.org
 | 
				
			||||||
L:	linux-pm@vger.kernel.org
 | 
					L:	linux-pm@vger.kernel.org
 | 
				
			||||||
W:	http://www.arm.com/products/processors/technologies/biglittleprocessing.php
 | 
					W:	http://www.arm.com/products/processors/technologies/biglittleprocessing.php
 | 
				
			||||||
| 
						 | 
					@ -2857,7 +2857,7 @@ M:	Jani Nikula <jani.nikula@linux.intel.com>
 | 
				
			||||||
L:	intel-gfx@lists.freedesktop.org
 | 
					L:	intel-gfx@lists.freedesktop.org
 | 
				
			||||||
L:	dri-devel@lists.freedesktop.org
 | 
					L:	dri-devel@lists.freedesktop.org
 | 
				
			||||||
Q:	http://patchwork.freedesktop.org/project/intel-gfx/
 | 
					Q:	http://patchwork.freedesktop.org/project/intel-gfx/
 | 
				
			||||||
T:	git git://people.freedesktop.org/~danvet/drm-intel
 | 
					T:	git git://anongit.freedesktop.org/drm-intel
 | 
				
			||||||
S:	Supported
 | 
					S:	Supported
 | 
				
			||||||
F:	drivers/gpu/drm/i915/
 | 
					F:	drivers/gpu/drm/i915/
 | 
				
			||||||
F:	include/drm/i915*
 | 
					F:	include/drm/i915*
 | 
				
			||||||
| 
						 | 
					@ -7196,7 +7196,7 @@ S:	Maintained
 | 
				
			||||||
F:	drivers/net/ethernet/rdc/r6040.c
 | 
					F:	drivers/net/ethernet/rdc/r6040.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RDS - RELIABLE DATAGRAM SOCKETS
 | 
					RDS - RELIABLE DATAGRAM SOCKETS
 | 
				
			||||||
M:	Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
 | 
					M:	Chien Yen <chien.yen@oracle.com>
 | 
				
			||||||
L:	rds-devel@oss.oracle.com (moderated for non-subscribers)
 | 
					L:	rds-devel@oss.oracle.com (moderated for non-subscribers)
 | 
				
			||||||
S:	Supported
 | 
					S:	Supported
 | 
				
			||||||
F:	net/rds/
 | 
					F:	net/rds/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
VERSION = 3
 | 
					VERSION = 3
 | 
				
			||||||
PATCHLEVEL = 14
 | 
					PATCHLEVEL = 14
 | 
				
			||||||
SUBLEVEL = 0
 | 
					SUBLEVEL = 0
 | 
				
			||||||
EXTRAVERSION = -rc1
 | 
					EXTRAVERSION = -rc3
 | 
				
			||||||
NAME = Shuffling Zombie Juror
 | 
					NAME = Shuffling Zombie Juror
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# *DOCUMENTATION*
 | 
					# *DOCUMENTATION*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb
 | 
				
			||||||
dtb-$(CONFIG_ARCH_AT91) += at91sam9x25ek.dtb
 | 
					dtb-$(CONFIG_ARCH_AT91) += at91sam9x25ek.dtb
 | 
				
			||||||
dtb-$(CONFIG_ARCH_AT91) += at91sam9x35ek.dtb
 | 
					dtb-$(CONFIG_ARCH_AT91) += at91sam9x35ek.dtb
 | 
				
			||||||
# sama5d3
 | 
					# sama5d3
 | 
				
			||||||
 | 
					dtb-$(CONFIG_ARCH_AT91)	+= at91-sama5d3_xplained.dtb
 | 
				
			||||||
dtb-$(CONFIG_ARCH_AT91)	+= sama5d31ek.dtb
 | 
					dtb-$(CONFIG_ARCH_AT91)	+= sama5d31ek.dtb
 | 
				
			||||||
dtb-$(CONFIG_ARCH_AT91)	+= sama5d33ek.dtb
 | 
					dtb-$(CONFIG_ARCH_AT91)	+= sama5d33ek.dtb
 | 
				
			||||||
dtb-$(CONFIG_ARCH_AT91)	+= sama5d34ek.dtb
 | 
					dtb-$(CONFIG_ARCH_AT91)	+= sama5d34ek.dtb
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										229
									
								
								arch/arm/boot/dts/at91-sama5d3_xplained.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								arch/arm/boot/dts/at91-sama5d3_xplained.dts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,229 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * at91-sama5d3_xplained.dts - Device Tree file for the SAMA5D3 Xplained board
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Copyright (C) 2014 Atmel,
 | 
				
			||||||
 | 
					 *		  2014 Nicolas Ferre <nicolas.ferre@atmel.com>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under GPLv2 or later.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/dts-v1/;
 | 
				
			||||||
 | 
					#include "sama5d36.dtsi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/ {
 | 
				
			||||||
 | 
						model = "SAMA5D3 Xplained";
 | 
				
			||||||
 | 
						compatible = "atmel,sama5d3-xplained", "atmel,sama5d3", "atmel,sama5";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						chosen {
 | 
				
			||||||
 | 
							bootargs = "console=ttyS0,115200";
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memory {
 | 
				
			||||||
 | 
							reg = <0x20000000 0x10000000>;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ahb {
 | 
				
			||||||
 | 
							apb {
 | 
				
			||||||
 | 
								mmc0: mmc@f0000000 {
 | 
				
			||||||
 | 
									pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
									slot@0 {
 | 
				
			||||||
 | 
										reg = <0>;
 | 
				
			||||||
 | 
										bus-width = <8>;
 | 
				
			||||||
 | 
										cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								spi0: spi@f0004000 {
 | 
				
			||||||
 | 
									cs-gpios = <&pioD 13 0>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								can0: can@f000c000 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								i2c0: i2c@f0014000 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								i2c1: i2c@f0018000 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								macb0: ethernet@f0028000 {
 | 
				
			||||||
 | 
									phy-mode = "rgmii";
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								usart0: serial@f001c000 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								usart1: serial@f0020000 {
 | 
				
			||||||
 | 
									pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								uart0: serial@f0024000 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mmc1: mmc@f8000000 {
 | 
				
			||||||
 | 
									pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
									slot@0 {
 | 
				
			||||||
 | 
										reg = <0>;
 | 
				
			||||||
 | 
										bus-width = <4>;
 | 
				
			||||||
 | 
										cd-gpios = <&pioE 1 GPIO_ACTIVE_HIGH>;
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								spi1: spi@f8008000 {
 | 
				
			||||||
 | 
									cs-gpios = <&pioC 25 0>, <0>, <0>, <&pioD 16 0>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								adc0: adc@f8018000 {
 | 
				
			||||||
 | 
									pinctrl-0 = <
 | 
				
			||||||
 | 
										&pinctrl_adc0_adtrg
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad0
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad1
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad2
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad3
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad4
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad5
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad6
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad7
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad8
 | 
				
			||||||
 | 
										&pinctrl_adc0_ad9
 | 
				
			||||||
 | 
										>;
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								i2c2: i2c@f801c000 {
 | 
				
			||||||
 | 
									dmas = <0>, <0>;	/* Do not use DMA for i2c2 */
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								macb1: ethernet@f802c000 {
 | 
				
			||||||
 | 
									phy-mode = "rmii";
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								dbgu: serial@ffffee00 {
 | 
				
			||||||
 | 
									status = "okay";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pinctrl@fffff200 {
 | 
				
			||||||
 | 
									board {
 | 
				
			||||||
 | 
										pinctrl_mmc0_cd: mmc0_cd {
 | 
				
			||||||
 | 
											atmel,pins =
 | 
				
			||||||
 | 
												<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
 | 
				
			||||||
 | 
										};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										pinctrl_mmc1_cd: mmc1_cd {
 | 
				
			||||||
 | 
											atmel,pins =
 | 
				
			||||||
 | 
												<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
 | 
				
			||||||
 | 
										};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										pinctrl_usba_vbus: usba_vbus {
 | 
				
			||||||
 | 
											atmel,pins =
 | 
				
			||||||
 | 
												<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PE9, conflicts with A9 */
 | 
				
			||||||
 | 
										};
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pmc: pmc@fffffc00 {
 | 
				
			||||||
 | 
									main: mainck {
 | 
				
			||||||
 | 
										clock-frequency = <12000000>;
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							nand0: nand@60000000 {
 | 
				
			||||||
 | 
								nand-bus-width = <8>;
 | 
				
			||||||
 | 
								nand-ecc-mode = "hw";
 | 
				
			||||||
 | 
								atmel,has-pmecc;
 | 
				
			||||||
 | 
								atmel,pmecc-cap = <4>;
 | 
				
			||||||
 | 
								atmel,pmecc-sector-size = <512>;
 | 
				
			||||||
 | 
								nand-on-flash-bbt;
 | 
				
			||||||
 | 
								status = "okay";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								at91bootstrap@0 {
 | 
				
			||||||
 | 
									label = "at91bootstrap";
 | 
				
			||||||
 | 
									reg = <0x0 0x40000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								bootloader@40000 {
 | 
				
			||||||
 | 
									label = "bootloader";
 | 
				
			||||||
 | 
									reg = <0x40000 0x80000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								bootloaderenv@c0000 {
 | 
				
			||||||
 | 
									label = "bootloader env";
 | 
				
			||||||
 | 
									reg = <0xc0000 0xc0000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								dtb@180000 {
 | 
				
			||||||
 | 
									label = "device tree";
 | 
				
			||||||
 | 
									reg = <0x180000 0x80000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								kernel@200000 {
 | 
				
			||||||
 | 
									label = "kernel";
 | 
				
			||||||
 | 
									reg = <0x200000 0x600000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								rootfs@800000 {
 | 
				
			||||||
 | 
									label = "rootfs";
 | 
				
			||||||
 | 
									reg = <0x800000 0x0f800000>;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							usb0: gadget@00500000 {
 | 
				
			||||||
 | 
								atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;	/* PE9, conflicts with A9 */
 | 
				
			||||||
 | 
								pinctrl-names = "default";
 | 
				
			||||||
 | 
								pinctrl-0 = <&pinctrl_usba_vbus>;
 | 
				
			||||||
 | 
								status = "okay";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							usb1: ohci@00600000 {
 | 
				
			||||||
 | 
								num-ports = <3>;
 | 
				
			||||||
 | 
								atmel,vbus-gpio = <0
 | 
				
			||||||
 | 
										   &pioE 3 GPIO_ACTIVE_LOW
 | 
				
			||||||
 | 
										   &pioE 4 GPIO_ACTIVE_LOW
 | 
				
			||||||
 | 
										  >;
 | 
				
			||||||
 | 
								status = "okay";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							usb2: ehci@00700000 {
 | 
				
			||||||
 | 
								status = "okay";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gpio_keys {
 | 
				
			||||||
 | 
							compatible = "gpio-keys";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bp3 {
 | 
				
			||||||
 | 
								label = "PB_USER";
 | 
				
			||||||
 | 
								gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
 | 
				
			||||||
 | 
								linux,code = <0x104>;
 | 
				
			||||||
 | 
								gpio-key,wakeup;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						leds {
 | 
				
			||||||
 | 
							compatible = "gpio-leds";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d2 {
 | 
				
			||||||
 | 
								label = "d2";
 | 
				
			||||||
 | 
								gpios = <&pioE 23 GPIO_ACTIVE_LOW>;	/* PE23, conflicts with A23, CTS2 */
 | 
				
			||||||
 | 
								linux,default-trigger = "heartbeat";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d3 {
 | 
				
			||||||
 | 
								label = "d3";
 | 
				
			||||||
 | 
								gpios = <&pioE 24 GPIO_ACTIVE_HIGH>;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -523,7 +523,7 @@ usb1: gadget@fff78000 {
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			i2c0: i2c@fff88000 {
 | 
								i2c0: i2c@fff88000 {
 | 
				
			||||||
				compatible = "atmel,at91sam9263-i2c";
 | 
									compatible = "atmel,at91sam9260-i2c";
 | 
				
			||||||
				reg = <0xfff88000 0x100>;
 | 
									reg = <0xfff88000 0x100>;
 | 
				
			||||||
				interrupts = <13 IRQ_TYPE_LEVEL_HIGH 6>;
 | 
									interrupts = <13 IRQ_TYPE_LEVEL_HIGH 6>;
 | 
				
			||||||
				#address-cells = <1>;
 | 
									#address-cells = <1>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,6 +124,10 @@ nand0: nand@40000000 {
 | 
				
			||||||
			nand-on-flash-bbt;
 | 
								nand-on-flash-bbt;
 | 
				
			||||||
			status = "okay";
 | 
								status = "okay";
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							usb0: ohci@00500000 {
 | 
				
			||||||
 | 
								status = "okay";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	leds {
 | 
						leds {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1228,7 +1228,7 @@ usb1: ohci@00600000 {
 | 
				
			||||||
			compatible = "atmel,at91rm9200-ohci", "usb-ohci";
 | 
								compatible = "atmel,at91rm9200-ohci", "usb-ohci";
 | 
				
			||||||
			reg = <0x00600000 0x100000>;
 | 
								reg = <0x00600000 0x100000>;
 | 
				
			||||||
			interrupts = <32 IRQ_TYPE_LEVEL_HIGH 2>;
 | 
								interrupts = <32 IRQ_TYPE_LEVEL_HIGH 2>;
 | 
				
			||||||
			clocks = <&usb>, <&uhphs_clk>, <&udphs_clk>,
 | 
								clocks = <&usb>, <&uhphs_clk>, <&uhphs_clk>,
 | 
				
			||||||
				 <&uhpck>;
 | 
									 <&uhpck>;
 | 
				
			||||||
			clock-names = "usb_clk", "ohci_clk", "hclk", "uhpck";
 | 
								clock-names = "usb_clk", "ohci_clk", "hclk", "uhpck";
 | 
				
			||||||
			status = "disabled";
 | 
								status = "disabled";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,7 +188,6 @@ msp1: msp@80124000 {
 | 
				
			||||||
		msp2: msp@80117000 {
 | 
							msp2: msp@80117000 {
 | 
				
			||||||
			pinctrl-names = "default";
 | 
								pinctrl-names = "default";
 | 
				
			||||||
			pinctrl-0 = <&msp2_default_mode>;
 | 
								pinctrl-0 = <&msp2_default_mode>;
 | 
				
			||||||
			status = "okay";
 | 
					 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		msp3: msp@80125000 {
 | 
							msp3: msp@80125000 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -315,7 +315,7 @@ soc@01c00000 {
 | 
				
			||||||
		ranges;
 | 
							ranges;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		emac: ethernet@01c0b000 {
 | 
							emac: ethernet@01c0b000 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-emac";
 | 
								compatible = "allwinner,sun4i-a10-emac";
 | 
				
			||||||
			reg = <0x01c0b000 0x1000>;
 | 
								reg = <0x01c0b000 0x1000>;
 | 
				
			||||||
			interrupts = <55>;
 | 
								interrupts = <55>;
 | 
				
			||||||
			clocks = <&ahb_gates 17>;
 | 
								clocks = <&ahb_gates 17>;
 | 
				
			||||||
| 
						 | 
					@ -323,7 +323,7 @@ emac: ethernet@01c0b000 {
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mdio@01c0b080 {
 | 
							mdio@01c0b080 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-mdio";
 | 
								compatible = "allwinner,sun4i-a10-mdio";
 | 
				
			||||||
			reg = <0x01c0b080 0x14>;
 | 
								reg = <0x01c0b080 0x14>;
 | 
				
			||||||
			status = "disabled";
 | 
								status = "disabled";
 | 
				
			||||||
			#address-cells = <1>;
 | 
								#address-cells = <1>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -278,7 +278,7 @@ soc@01c00000 {
 | 
				
			||||||
		ranges;
 | 
							ranges;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		emac: ethernet@01c0b000 {
 | 
							emac: ethernet@01c0b000 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-emac";
 | 
								compatible = "allwinner,sun4i-a10-emac";
 | 
				
			||||||
			reg = <0x01c0b000 0x1000>;
 | 
								reg = <0x01c0b000 0x1000>;
 | 
				
			||||||
			interrupts = <55>;
 | 
								interrupts = <55>;
 | 
				
			||||||
			clocks = <&ahb_gates 17>;
 | 
								clocks = <&ahb_gates 17>;
 | 
				
			||||||
| 
						 | 
					@ -286,7 +286,7 @@ emac: ethernet@01c0b000 {
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mdio@01c0b080 {
 | 
							mdio@01c0b080 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-mdio";
 | 
								compatible = "allwinner,sun4i-a10-mdio";
 | 
				
			||||||
			reg = <0x01c0b080 0x14>;
 | 
								reg = <0x01c0b080 0x14>;
 | 
				
			||||||
			status = "disabled";
 | 
								status = "disabled";
 | 
				
			||||||
			#address-cells = <1>;
 | 
								#address-cells = <1>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -340,7 +340,7 @@ soc@01c00000 {
 | 
				
			||||||
		ranges;
 | 
							ranges;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		emac: ethernet@01c0b000 {
 | 
							emac: ethernet@01c0b000 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-emac";
 | 
								compatible = "allwinner,sun4i-a10-emac";
 | 
				
			||||||
			reg = <0x01c0b000 0x1000>;
 | 
								reg = <0x01c0b000 0x1000>;
 | 
				
			||||||
			interrupts = <0 55 4>;
 | 
								interrupts = <0 55 4>;
 | 
				
			||||||
			clocks = <&ahb_gates 17>;
 | 
								clocks = <&ahb_gates 17>;
 | 
				
			||||||
| 
						 | 
					@ -348,7 +348,7 @@ emac: ethernet@01c0b000 {
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mdio@01c0b080 {
 | 
							mdio@01c0b080 {
 | 
				
			||||||
			compatible = "allwinner,sun4i-mdio";
 | 
								compatible = "allwinner,sun4i-a10-mdio";
 | 
				
			||||||
			reg = <0x01c0b080 0x14>;
 | 
								reg = <0x01c0b080 0x14>;
 | 
				
			||||||
			status = "disabled";
 | 
								status = "disabled";
 | 
				
			||||||
			#address-cells = <1>;
 | 
								#address-cells = <1>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@ CONFIG_ARCH_OMAP3=y
 | 
				
			||||||
CONFIG_ARCH_OMAP4=y
 | 
					CONFIG_ARCH_OMAP4=y
 | 
				
			||||||
CONFIG_SOC_OMAP5=y
 | 
					CONFIG_SOC_OMAP5=y
 | 
				
			||||||
CONFIG_SOC_AM33XX=y
 | 
					CONFIG_SOC_AM33XX=y
 | 
				
			||||||
 | 
					CONFIG_SOC_DRA7XX=y
 | 
				
			||||||
CONFIG_SOC_AM43XX=y
 | 
					CONFIG_SOC_AM43XX=y
 | 
				
			||||||
CONFIG_ARCH_ROCKCHIP=y
 | 
					CONFIG_ARCH_ROCKCHIP=y
 | 
				
			||||||
CONFIG_ARCH_SOCFPGA=y
 | 
					CONFIG_ARCH_SOCFPGA=y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ config ARCH_HI3xxx
 | 
				
			||||||
	select CLKSRC_OF
 | 
						select CLKSRC_OF
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select HAVE_ARM_SCU
 | 
						select HAVE_ARM_SCU
 | 
				
			||||||
	select HAVE_ARM_TWD
 | 
						select HAVE_ARM_TWD if SMP
 | 
				
			||||||
	select HAVE_SMP
 | 
						select HAVE_SMP
 | 
				
			||||||
	select PINCTRL
 | 
						select PINCTRL
 | 
				
			||||||
	select PINCTRL_SINGLE
 | 
						select PINCTRL_SINGLE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -482,6 +482,9 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 | 
				
			||||||
	if (IS_ENABLED(CONFIG_PCI_IMX6))
 | 
						if (IS_ENABLED(CONFIG_PCI_IMX6))
 | 
				
			||||||
		clk_set_parent(clk[lvds1_sel], clk[sata_ref]);
 | 
							clk_set_parent(clk[lvds1_sel], clk[sata_ref]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Set initial power mode */
 | 
				
			||||||
 | 
						imx6q_set_lpm(WAIT_CLOCKED);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt");
 | 
						np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt");
 | 
				
			||||||
	base = of_iomap(np, 0);
 | 
						base = of_iomap(np, 0);
 | 
				
			||||||
	WARN_ON(!base);
 | 
						WARN_ON(!base);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -266,6 +266,9 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
 | 
				
			||||||
	/* Audio-related clocks configuration */
 | 
						/* Audio-related clocks configuration */
 | 
				
			||||||
	clk_set_parent(clks[IMX6SL_CLK_SPDIF0_SEL], clks[IMX6SL_CLK_PLL3_PFD3]);
 | 
						clk_set_parent(clks[IMX6SL_CLK_SPDIF0_SEL], clks[IMX6SL_CLK_PLL3_PFD3]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Set initial power mode */
 | 
				
			||||||
 | 
						imx6q_set_lpm(WAIT_CLOCKED);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	np = of_find_compatible_node(NULL, NULL, "fsl,imx6sl-gpt");
 | 
						np = of_find_compatible_node(NULL, NULL, "fsl,imx6sl-gpt");
 | 
				
			||||||
	base = of_iomap(np, 0);
 | 
						base = of_iomap(np, 0);
 | 
				
			||||||
	WARN_ON(!base);
 | 
						WARN_ON(!base);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -236,8 +236,6 @@ void __init imx6q_pm_init(void)
 | 
				
			||||||
		regmap_update_bits(gpr, IOMUXC_GPR1, IMX6Q_GPR1_GINT,
 | 
							regmap_update_bits(gpr, IOMUXC_GPR1, IMX6Q_GPR1_GINT,
 | 
				
			||||||
				   IMX6Q_GPR1_GINT);
 | 
									   IMX6Q_GPR1_GINT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Set initial power mode */
 | 
					 | 
				
			||||||
	imx6q_set_lpm(WAIT_CLOCKED);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suspend_set_ops(&imx6q_pm_ops);
 | 
						suspend_set_ops(&imx6q_pm_ops);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,6 @@ config ARCH_MOXART
 | 
				
			||||||
	bool "MOXA ART SoC" if ARCH_MULTI_V4T
 | 
						bool "MOXA ART SoC" if ARCH_MULTI_V4T
 | 
				
			||||||
	select CPU_FA526
 | 
						select CPU_FA526
 | 
				
			||||||
	select ARM_DMA_MEM_BUFFERABLE
 | 
						select ARM_DMA_MEM_BUFFERABLE
 | 
				
			||||||
	select DMA_OF
 | 
					 | 
				
			||||||
	select USE_OF
 | 
						select USE_OF
 | 
				
			||||||
	select CLKSRC_OF
 | 
						select CLKSRC_OF
 | 
				
			||||||
	select CLKSRC_MMIO
 | 
						select CLKSRC_MMIO
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ config SOC_OMAP5
 | 
				
			||||||
	select ARM_GIC
 | 
						select ARM_GIC
 | 
				
			||||||
	select CPU_V7
 | 
						select CPU_V7
 | 
				
			||||||
	select HAVE_ARM_SCU if SMP
 | 
						select HAVE_ARM_SCU if SMP
 | 
				
			||||||
	select HAVE_ARM_TWD if LOCAL_TIMERS
 | 
						select HAVE_ARM_TWD if SMP
 | 
				
			||||||
	select HAVE_SMP
 | 
						select HAVE_SMP
 | 
				
			||||||
	select HAVE_ARM_ARCH_TIMER
 | 
						select HAVE_ARM_ARCH_TIMER
 | 
				
			||||||
	select ARM_ERRATA_798181 if SMP
 | 
						select ARM_ERRATA_798181 if SMP
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <mach/gumstix.h>
 | 
					#include <mach/gumstix.h>
 | 
				
			||||||
#include <mach/mfp-pxa25x.h>
 | 
					#include <mach/mfp-pxa25x.h>
 | 
				
			||||||
 | 
					#include <mach/irqs.h>
 | 
				
			||||||
#include <linux/platform_data/video-pxafb.h>
 | 
					#include <linux/platform_data/video-pxafb.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "generic.h"
 | 
					#include "generic.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,8 @@
 | 
				
			||||||
#ifndef ASM_ARCH_BALLOON3_H
 | 
					#ifndef ASM_ARCH_BALLOON3_H
 | 
				
			||||||
#define ASM_ARCH_BALLOON3_H
 | 
					#define ASM_ARCH_BALLOON3_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum balloon3_features {
 | 
					enum balloon3_features {
 | 
				
			||||||
	BALLOON3_FEATURE_OHCI,
 | 
						BALLOON3_FEATURE_OHCI,
 | 
				
			||||||
	BALLOON3_FEATURE_MMC,
 | 
						BALLOON3_FEATURE_MMC,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
#ifndef __ASM_ARCH_CORGI_H
 | 
					#ifndef __ASM_ARCH_CORGI_H
 | 
				
			||||||
#define __ASM_ARCH_CORGI_H  1
 | 
					#define __ASM_ARCH_CORGI_H  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Corgi (Non Standard) GPIO Definitions
 | 
					 * Corgi (Non Standard) GPIO Definitions
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,8 @@
 | 
				
			||||||
#ifndef CSB726_H
 | 
					#ifndef CSB726_H
 | 
				
			||||||
#define CSB726_H
 | 
					#define CSB726_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CSB726_GPIO_IRQ_LAN	52
 | 
					#define CSB726_GPIO_IRQ_LAN	52
 | 
				
			||||||
#define CSB726_GPIO_IRQ_SM501	53
 | 
					#define CSB726_GPIO_IRQ_SM501	53
 | 
				
			||||||
#define CSB726_GPIO_MMC_DETECT	100
 | 
					#define CSB726_GPIO_MMC_DETECT	100
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
 * published by the Free Software Foundation.
 | 
					 * published by the Free Software Foundation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* BTRESET - Reset line to Bluetooth module, active low signal. */
 | 
					/* BTRESET - Reset line to Bluetooth module, active low signal. */
 | 
				
			||||||
#define GPIO_GUMSTIX_BTRESET          7
 | 
					#define GPIO_GUMSTIX_BTRESET          7
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
 * IDP hardware.
 | 
					 * IDP hardware.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define IDP_FLASH_PHYS		(PXA_CS0_PHYS)
 | 
					#define IDP_FLASH_PHYS		(PXA_CS0_PHYS)
 | 
				
			||||||
#define IDP_ALT_FLASH_PHYS	(PXA_CS1_PHYS)
 | 
					#define IDP_ALT_FLASH_PHYS	(PXA_CS1_PHYS)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,8 @@
 | 
				
			||||||
#ifndef _INCLUDE_PALMLD_H_
 | 
					#ifndef _INCLUDE_PALMLD_H_
 | 
				
			||||||
#define _INCLUDE_PALMLD_H_
 | 
					#define _INCLUDE_PALMLD_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** HERE ARE GPIOs **/
 | 
					/** HERE ARE GPIOs **/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* GPIOs */
 | 
					/* GPIOs */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@
 | 
				
			||||||
#ifndef _INCLUDE_PALMT5_H_
 | 
					#ifndef _INCLUDE_PALMT5_H_
 | 
				
			||||||
#define _INCLUDE_PALMT5_H_
 | 
					#define _INCLUDE_PALMT5_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** HERE ARE GPIOs **/
 | 
					/** HERE ARE GPIOs **/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* GPIOs */
 | 
					/* GPIOs */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,8 @@
 | 
				
			||||||
#ifndef _INCLUDE_PALMTC_H_
 | 
					#ifndef _INCLUDE_PALMTC_H_
 | 
				
			||||||
#define _INCLUDE_PALMTC_H_
 | 
					#define _INCLUDE_PALMTC_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** HERE ARE GPIOs **/
 | 
					/** HERE ARE GPIOs **/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* GPIOs */
 | 
					/* GPIOs */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,8 @@
 | 
				
			||||||
#ifndef _INCLUDE_PALMTX_H_
 | 
					#ifndef _INCLUDE_PALMTX_H_
 | 
				
			||||||
#define _INCLUDE_PALMTX_H_
 | 
					#define _INCLUDE_PALMTX_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** HERE ARE GPIOs **/
 | 
					/** HERE ARE GPIOs **/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* GPIOs */
 | 
					/* GPIOs */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,8 @@
 | 
				
			||||||
 * Definitions of CPU card resources only
 | 
					 * Definitions of CPU card resources only
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* phyCORE-PXA270 (PCM027) Interrupts */
 | 
					/* phyCORE-PXA270 (PCM027) Interrupts */
 | 
				
			||||||
#define PCM027_IRQ(x)          (IRQ_BOARD_START + (x))
 | 
					#define PCM027_IRQ(x)          (IRQ_BOARD_START + (x))
 | 
				
			||||||
#define PCM027_BTDET_IRQ       PCM027_IRQ(0)
 | 
					#define PCM027_BTDET_IRQ       PCM027_IRQ(0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <mach/pcm027.h>
 | 
					#include <mach/pcm027.h>
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * definitions relevant only when the PCM-990
 | 
					 * definitions relevant only when the PCM-990
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@
 | 
				
			||||||
#ifndef __ASM_ARCH_POODLE_H
 | 
					#ifndef __ASM_ARCH_POODLE_H
 | 
				
			||||||
#define __ASM_ARCH_POODLE_H  1
 | 
					#define __ASM_ARCH_POODLE_H  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * GPIOs
 | 
					 * GPIOs
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,8 +15,8 @@
 | 
				
			||||||
#define __ASM_ARCH_SPITZ_H  1
 | 
					#define __ASM_ARCH_SPITZ_H  1
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */
 | 
				
			||||||
#include <linux/fb.h>
 | 
					#include <linux/fb.h>
 | 
				
			||||||
#include <linux/gpio.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Spitz/Akita GPIOs */
 | 
					/* Spitz/Akita GPIOs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,8 @@
 | 
				
			||||||
#ifndef _ASM_ARCH_TOSA_H_
 | 
					#ifndef _ASM_ARCH_TOSA_H_
 | 
				
			||||||
#define _ASM_ARCH_TOSA_H_ 1
 | 
					#define _ASM_ARCH_TOSA_H_ 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*  TOSA Chip selects  */
 | 
					/*  TOSA Chip selects  */
 | 
				
			||||||
#define TOSA_LCDC_PHYS		PXA_CS4_PHYS
 | 
					#define TOSA_LCDC_PHYS		PXA_CS4_PHYS
 | 
				
			||||||
/* Internel Scoop */
 | 
					/* Internel Scoop */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,8 @@
 | 
				
			||||||
#ifndef _TRIPEPS4_H_
 | 
					#ifndef _TRIPEPS4_H_
 | 
				
			||||||
#define _TRIPEPS4_H_
 | 
					#define _TRIPEPS4_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* physical memory regions */
 | 
					/* physical memory regions */
 | 
				
			||||||
#define TRIZEPS4_FLASH_PHYS	(PXA_CS0_PHYS)  /* Flash region */
 | 
					#define TRIZEPS4_FLASH_PHYS	(PXA_CS0_PHYS)  /* Flash region */
 | 
				
			||||||
#define TRIZEPS4_DISK_PHYS	(PXA_CS1_PHYS)  /* Disk On Chip region */
 | 
					#define TRIZEPS4_DISK_PHYS	(PXA_CS1_PHYS)  /* Disk On Chip region */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ config ARCH_SHMOBILE_MULTI
 | 
				
			||||||
	select CPU_V7
 | 
						select CPU_V7
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select HAVE_ARM_SCU if SMP
 | 
						select HAVE_ARM_SCU if SMP
 | 
				
			||||||
	select HAVE_ARM_TWD if LOCAL_TIMERS
 | 
						select HAVE_ARM_TWD if SMP
 | 
				
			||||||
	select HAVE_SMP
 | 
						select HAVE_SMP
 | 
				
			||||||
	select ARM_GIC
 | 
						select ARM_GIC
 | 
				
			||||||
	select MIGHT_HAVE_CACHE_L2X0
 | 
						select MIGHT_HAVE_CACHE_L2X0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@
 | 
				
			||||||
#include <linux/of_irq.h>
 | 
					#include <linux/of_irq.h>
 | 
				
			||||||
#include <linux/of_platform.h>
 | 
					#include <linux/of_platform.h>
 | 
				
			||||||
#include <linux/of.h>
 | 
					#include <linux/of.h>
 | 
				
			||||||
 | 
					#include <linux/memblock.h>
 | 
				
			||||||
#include <linux/irqchip.h>
 | 
					#include <linux/irqchip.h>
 | 
				
			||||||
#include <linux/irqchip/arm-gic.h>
 | 
					#include <linux/irqchip/arm-gic.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +42,18 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __iomem *zynq_scu_base;
 | 
					void __iomem *zynq_scu_base;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * zynq_memory_init - Initialize special memory
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * We need to stop things allocating the low memory as DMA can't work in
 | 
				
			||||||
 | 
					 * the 1st 512K of memory.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static void __init zynq_memory_init(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (!__pa(PAGE_OFFSET))
 | 
				
			||||||
 | 
							memblock_reserve(__pa(PAGE_OFFSET), __pa(swapper_pg_dir));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct platform_device zynq_cpuidle_device = {
 | 
					static struct platform_device zynq_cpuidle_device = {
 | 
				
			||||||
	.name = "cpuidle-zynq",
 | 
						.name = "cpuidle-zynq",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -117,5 +130,6 @@ DT_MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")
 | 
				
			||||||
	.init_machine	= zynq_init_machine,
 | 
						.init_machine	= zynq_init_machine,
 | 
				
			||||||
	.init_time	= zynq_timer_init,
 | 
						.init_time	= zynq_timer_init,
 | 
				
			||||||
	.dt_compat	= zynq_dt_match,
 | 
						.dt_compat	= zynq_dt_match,
 | 
				
			||||||
 | 
						.reserve	= zynq_memory_init,
 | 
				
			||||||
	.restart	= zynq_system_reset,
 | 
						.restart	= zynq_system_reset,
 | 
				
			||||||
MACHINE_END
 | 
					MACHINE_END
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,7 @@ config ARM64
 | 
				
			||||||
	select HAVE_GENERIC_DMA_COHERENT
 | 
						select HAVE_GENERIC_DMA_COHERENT
 | 
				
			||||||
	select HAVE_HW_BREAKPOINT if PERF_EVENTS
 | 
						select HAVE_HW_BREAKPOINT if PERF_EVENTS
 | 
				
			||||||
	select HAVE_MEMBLOCK
 | 
						select HAVE_MEMBLOCK
 | 
				
			||||||
 | 
						select HAVE_PATA_PLATFORM
 | 
				
			||||||
	select HAVE_PERF_EVENTS
 | 
						select HAVE_PERF_EVENTS
 | 
				
			||||||
	select IRQ_DOMAIN
 | 
						select IRQ_DOMAIN
 | 
				
			||||||
	select MODULES_USE_ELF_RELA
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,3 @@
 | 
				
			||||||
CONFIG_EXPERIMENTAL=y
 | 
					 | 
				
			||||||
# CONFIG_LOCALVERSION_AUTO is not set
 | 
					# CONFIG_LOCALVERSION_AUTO is not set
 | 
				
			||||||
# CONFIG_SWAP is not set
 | 
					# CONFIG_SWAP is not set
 | 
				
			||||||
CONFIG_SYSVIPC=y
 | 
					CONFIG_SYSVIPC=y
 | 
				
			||||||
| 
						 | 
					@ -19,6 +18,7 @@ CONFIG_BLK_DEV_INITRD=y
 | 
				
			||||||
CONFIG_KALLSYMS_ALL=y
 | 
					CONFIG_KALLSYMS_ALL=y
 | 
				
			||||||
# CONFIG_COMPAT_BRK is not set
 | 
					# CONFIG_COMPAT_BRK is not set
 | 
				
			||||||
CONFIG_PROFILING=y
 | 
					CONFIG_PROFILING=y
 | 
				
			||||||
 | 
					CONFIG_JUMP_LABEL=y
 | 
				
			||||||
CONFIG_MODULES=y
 | 
					CONFIG_MODULES=y
 | 
				
			||||||
CONFIG_MODULE_UNLOAD=y
 | 
					CONFIG_MODULE_UNLOAD=y
 | 
				
			||||||
# CONFIG_BLK_DEV_BSG is not set
 | 
					# CONFIG_BLK_DEV_BSG is not set
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,7 @@ CONFIG_ARCH_VEXPRESS=y
 | 
				
			||||||
CONFIG_ARCH_XGENE=y
 | 
					CONFIG_ARCH_XGENE=y
 | 
				
			||||||
CONFIG_SMP=y
 | 
					CONFIG_SMP=y
 | 
				
			||||||
CONFIG_PREEMPT=y
 | 
					CONFIG_PREEMPT=y
 | 
				
			||||||
 | 
					CONFIG_CMA=y
 | 
				
			||||||
CONFIG_CMDLINE="console=ttyAMA0"
 | 
					CONFIG_CMDLINE="console=ttyAMA0"
 | 
				
			||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
 | 
					# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
 | 
				
			||||||
CONFIG_COMPAT=y
 | 
					CONFIG_COMPAT=y
 | 
				
			||||||
| 
						 | 
					@ -42,14 +43,17 @@ CONFIG_IP_PNP_BOOTP=y
 | 
				
			||||||
# CONFIG_WIRELESS is not set
 | 
					# CONFIG_WIRELESS is not set
 | 
				
			||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 | 
					CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 | 
				
			||||||
CONFIG_DEVTMPFS=y
 | 
					CONFIG_DEVTMPFS=y
 | 
				
			||||||
CONFIG_BLK_DEV=y
 | 
					CONFIG_DMA_CMA=y
 | 
				
			||||||
CONFIG_SCSI=y
 | 
					CONFIG_SCSI=y
 | 
				
			||||||
# CONFIG_SCSI_PROC_FS is not set
 | 
					# CONFIG_SCSI_PROC_FS is not set
 | 
				
			||||||
CONFIG_BLK_DEV_SD=y
 | 
					CONFIG_BLK_DEV_SD=y
 | 
				
			||||||
# CONFIG_SCSI_LOWLEVEL is not set
 | 
					# CONFIG_SCSI_LOWLEVEL is not set
 | 
				
			||||||
 | 
					CONFIG_ATA=y
 | 
				
			||||||
 | 
					CONFIG_PATA_PLATFORM=y
 | 
				
			||||||
 | 
					CONFIG_PATA_OF_PLATFORM=y
 | 
				
			||||||
CONFIG_NETDEVICES=y
 | 
					CONFIG_NETDEVICES=y
 | 
				
			||||||
CONFIG_MII=y
 | 
					 | 
				
			||||||
CONFIG_SMC91X=y
 | 
					CONFIG_SMC91X=y
 | 
				
			||||||
 | 
					CONFIG_SMSC911X=y
 | 
				
			||||||
# CONFIG_WLAN is not set
 | 
					# CONFIG_WLAN is not set
 | 
				
			||||||
CONFIG_INPUT_EVDEV=y
 | 
					CONFIG_INPUT_EVDEV=y
 | 
				
			||||||
# CONFIG_SERIO_I8042 is not set
 | 
					# CONFIG_SERIO_I8042 is not set
 | 
				
			||||||
| 
						 | 
					@ -62,13 +66,19 @@ CONFIG_SERIAL_AMBA_PL011=y
 | 
				
			||||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
 | 
					CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
 | 
				
			||||||
# CONFIG_HW_RANDOM is not set
 | 
					# CONFIG_HW_RANDOM is not set
 | 
				
			||||||
# CONFIG_HWMON is not set
 | 
					# CONFIG_HWMON is not set
 | 
				
			||||||
 | 
					CONFIG_REGULATOR=y
 | 
				
			||||||
 | 
					CONFIG_REGULATOR_FIXED_VOLTAGE=y
 | 
				
			||||||
CONFIG_FB=y
 | 
					CONFIG_FB=y
 | 
				
			||||||
# CONFIG_VGA_CONSOLE is not set
 | 
					# CONFIG_VGA_CONSOLE is not set
 | 
				
			||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
 | 
					CONFIG_FRAMEBUFFER_CONSOLE=y
 | 
				
			||||||
CONFIG_LOGO=y
 | 
					CONFIG_LOGO=y
 | 
				
			||||||
# CONFIG_LOGO_LINUX_MONO is not set
 | 
					# CONFIG_LOGO_LINUX_MONO is not set
 | 
				
			||||||
# CONFIG_LOGO_LINUX_VGA16 is not set
 | 
					# CONFIG_LOGO_LINUX_VGA16 is not set
 | 
				
			||||||
# CONFIG_USB_SUPPORT is not set
 | 
					CONFIG_USB=y
 | 
				
			||||||
 | 
					CONFIG_USB_ISP1760_HCD=y
 | 
				
			||||||
 | 
					CONFIG_USB_STORAGE=y
 | 
				
			||||||
 | 
					CONFIG_MMC=y
 | 
				
			||||||
 | 
					CONFIG_MMC_ARMMMCI=y
 | 
				
			||||||
# CONFIG_IOMMU_SUPPORT is not set
 | 
					# CONFIG_IOMMU_SUPPORT is not set
 | 
				
			||||||
CONFIG_EXT2_FS=y
 | 
					CONFIG_EXT2_FS=y
 | 
				
			||||||
CONFIG_EXT3_FS=y
 | 
					CONFIG_EXT3_FS=y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,8 +54,7 @@ static inline void atomic_add(int i, atomic_t *v)
 | 
				
			||||||
"	stxr	%w1, %w0, %2\n"
 | 
					"	stxr	%w1, %w0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i));
 | 
				
			||||||
	: "cc");
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int atomic_add_return(int i, atomic_t *v)
 | 
					static inline int atomic_add_return(int i, atomic_t *v)
 | 
				
			||||||
| 
						 | 
					@ -64,14 +63,15 @@ static inline int atomic_add_return(int i, atomic_t *v)
 | 
				
			||||||
	int result;
 | 
						int result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic_add_return\n"
 | 
						asm volatile("// atomic_add_return\n"
 | 
				
			||||||
"1:	ldaxr	%w0, %2\n"
 | 
					"1:	ldxr	%w0, %2\n"
 | 
				
			||||||
"	add	%w0, %w0, %w3\n"
 | 
					"	add	%w0, %w0, %w3\n"
 | 
				
			||||||
"	stlxr	%w1, %w0, %2\n"
 | 
					"	stlxr	%w1, %w0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,8 +86,7 @@ static inline void atomic_sub(int i, atomic_t *v)
 | 
				
			||||||
"	stxr	%w1, %w0, %2\n"
 | 
					"	stxr	%w1, %w0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i));
 | 
				
			||||||
	: "cc");
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int atomic_sub_return(int i, atomic_t *v)
 | 
					static inline int atomic_sub_return(int i, atomic_t *v)
 | 
				
			||||||
| 
						 | 
					@ -96,14 +95,15 @@ static inline int atomic_sub_return(int i, atomic_t *v)
 | 
				
			||||||
	int result;
 | 
						int result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic_sub_return\n"
 | 
						asm volatile("// atomic_sub_return\n"
 | 
				
			||||||
"1:	ldaxr	%w0, %2\n"
 | 
					"1:	ldxr	%w0, %2\n"
 | 
				
			||||||
"	sub	%w0, %w0, %w3\n"
 | 
					"	sub	%w0, %w0, %w3\n"
 | 
				
			||||||
"	stlxr	%w1, %w0, %2\n"
 | 
					"	stlxr	%w1, %w0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,17 +112,20 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
 | 
				
			||||||
	unsigned long tmp;
 | 
						unsigned long tmp;
 | 
				
			||||||
	int oldval;
 | 
						int oldval;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic_cmpxchg\n"
 | 
						asm volatile("// atomic_cmpxchg\n"
 | 
				
			||||||
"1:	ldaxr	%w1, %2\n"
 | 
					"1:	ldxr	%w1, %2\n"
 | 
				
			||||||
"	cmp	%w1, %w3\n"
 | 
					"	cmp	%w1, %w3\n"
 | 
				
			||||||
"	b.ne	2f\n"
 | 
					"	b.ne	2f\n"
 | 
				
			||||||
"	stlxr	%w0, %w4, %2\n"
 | 
					"	stxr	%w0, %w4, %2\n"
 | 
				
			||||||
"	cbnz	%w0, 1b\n"
 | 
					"	cbnz	%w0, 1b\n"
 | 
				
			||||||
"2:"
 | 
					"2:"
 | 
				
			||||||
	: "=&r" (tmp), "=&r" (oldval), "+Q" (ptr->counter)
 | 
						: "=&r" (tmp), "=&r" (oldval), "+Q" (ptr->counter)
 | 
				
			||||||
	: "Ir" (old), "r" (new)
 | 
						: "Ir" (old), "r" (new)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "cc");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return oldval;
 | 
						return oldval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -173,8 +176,7 @@ static inline void atomic64_add(u64 i, atomic64_t *v)
 | 
				
			||||||
"	stxr	%w1, %0, %2\n"
 | 
					"	stxr	%w1, %0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i));
 | 
				
			||||||
	: "cc");
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline long atomic64_add_return(long i, atomic64_t *v)
 | 
					static inline long atomic64_add_return(long i, atomic64_t *v)
 | 
				
			||||||
| 
						 | 
					@ -183,14 +185,15 @@ static inline long atomic64_add_return(long i, atomic64_t *v)
 | 
				
			||||||
	unsigned long tmp;
 | 
						unsigned long tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic64_add_return\n"
 | 
						asm volatile("// atomic64_add_return\n"
 | 
				
			||||||
"1:	ldaxr	%0, %2\n"
 | 
					"1:	ldxr	%0, %2\n"
 | 
				
			||||||
"	add	%0, %0, %3\n"
 | 
					"	add	%0, %0, %3\n"
 | 
				
			||||||
"	stlxr	%w1, %0, %2\n"
 | 
					"	stlxr	%w1, %0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,8 +208,7 @@ static inline void atomic64_sub(u64 i, atomic64_t *v)
 | 
				
			||||||
"	stxr	%w1, %0, %2\n"
 | 
					"	stxr	%w1, %0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i));
 | 
				
			||||||
	: "cc");
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline long atomic64_sub_return(long i, atomic64_t *v)
 | 
					static inline long atomic64_sub_return(long i, atomic64_t *v)
 | 
				
			||||||
| 
						 | 
					@ -215,14 +217,15 @@ static inline long atomic64_sub_return(long i, atomic64_t *v)
 | 
				
			||||||
	unsigned long tmp;
 | 
						unsigned long tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic64_sub_return\n"
 | 
						asm volatile("// atomic64_sub_return\n"
 | 
				
			||||||
"1:	ldaxr	%0, %2\n"
 | 
					"1:	ldxr	%0, %2\n"
 | 
				
			||||||
"	sub	%0, %0, %3\n"
 | 
					"	sub	%0, %0, %3\n"
 | 
				
			||||||
"	stlxr	%w1, %0, %2\n"
 | 
					"	stlxr	%w1, %0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b"
 | 
					"	cbnz	%w1, 1b"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	: "Ir" (i)
 | 
						: "Ir" (i)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -231,17 +234,20 @@ static inline long atomic64_cmpxchg(atomic64_t *ptr, long old, long new)
 | 
				
			||||||
	long oldval;
 | 
						long oldval;
 | 
				
			||||||
	unsigned long res;
 | 
						unsigned long res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic64_cmpxchg\n"
 | 
						asm volatile("// atomic64_cmpxchg\n"
 | 
				
			||||||
"1:	ldaxr	%1, %2\n"
 | 
					"1:	ldxr	%1, %2\n"
 | 
				
			||||||
"	cmp	%1, %3\n"
 | 
					"	cmp	%1, %3\n"
 | 
				
			||||||
"	b.ne	2f\n"
 | 
					"	b.ne	2f\n"
 | 
				
			||||||
"	stlxr	%w0, %4, %2\n"
 | 
					"	stxr	%w0, %4, %2\n"
 | 
				
			||||||
"	cbnz	%w0, 1b\n"
 | 
					"	cbnz	%w0, 1b\n"
 | 
				
			||||||
"2:"
 | 
					"2:"
 | 
				
			||||||
	: "=&r" (res), "=&r" (oldval), "+Q" (ptr->counter)
 | 
						: "=&r" (res), "=&r" (oldval), "+Q" (ptr->counter)
 | 
				
			||||||
	: "Ir" (old), "r" (new)
 | 
						: "Ir" (old), "r" (new)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "cc");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return oldval;
 | 
						return oldval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -253,11 +259,12 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
 | 
				
			||||||
	unsigned long tmp;
 | 
						unsigned long tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// atomic64_dec_if_positive\n"
 | 
						asm volatile("// atomic64_dec_if_positive\n"
 | 
				
			||||||
"1:	ldaxr	%0, %2\n"
 | 
					"1:	ldxr	%0, %2\n"
 | 
				
			||||||
"	subs	%0, %0, #1\n"
 | 
					"	subs	%0, %0, #1\n"
 | 
				
			||||||
"	b.mi	2f\n"
 | 
					"	b.mi	2f\n"
 | 
				
			||||||
"	stlxr	%w1, %0, %2\n"
 | 
					"	stlxr	%w1, %0, %2\n"
 | 
				
			||||||
"	cbnz	%w1, 1b\n"
 | 
					"	cbnz	%w1, 1b\n"
 | 
				
			||||||
 | 
					"	dmb	ish\n"
 | 
				
			||||||
"2:"
 | 
					"2:"
 | 
				
			||||||
	: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
						: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
 | 
				
			||||||
	:
 | 
						:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@
 | 
				
			||||||
#define wfi()		asm volatile("wfi" : : : "memory")
 | 
					#define wfi()		asm volatile("wfi" : : : "memory")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define isb()		asm volatile("isb" : : : "memory")
 | 
					#define isb()		asm volatile("isb" : : : "memory")
 | 
				
			||||||
#define dsb()		asm volatile("dsb sy" : : : "memory")
 | 
					#define dsb(opt)	asm volatile("dsb sy" : : : "memory")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define mb()		dsb()
 | 
					#define mb()		dsb()
 | 
				
			||||||
#define rmb()		asm volatile("dsb ld" : : : "memory")
 | 
					#define rmb()		asm volatile("dsb ld" : : : "memory")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,6 +116,7 @@ extern void flush_dcache_page(struct page *);
 | 
				
			||||||
static inline void __flush_icache_all(void)
 | 
					static inline void __flush_icache_all(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	asm("ic	ialluis");
 | 
						asm("ic	ialluis");
 | 
				
			||||||
 | 
						dsb();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define flush_dcache_mmap_lock(mapping) \
 | 
					#define flush_dcache_mmap_lock(mapping) \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,44 +29,45 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
 | 
				
			||||||
	switch (size) {
 | 
						switch (size) {
 | 
				
			||||||
	case 1:
 | 
						case 1:
 | 
				
			||||||
		asm volatile("//	__xchg1\n"
 | 
							asm volatile("//	__xchg1\n"
 | 
				
			||||||
		"1:	ldaxrb	%w0, %2\n"
 | 
							"1:	ldxrb	%w0, %2\n"
 | 
				
			||||||
		"	stlxrb	%w1, %w3, %2\n"
 | 
							"	stlxrb	%w1, %w3, %2\n"
 | 
				
			||||||
		"	cbnz	%w1, 1b\n"
 | 
							"	cbnz	%w1, 1b\n"
 | 
				
			||||||
			: "=&r" (ret), "=&r" (tmp), "+Q" (*(u8 *)ptr)
 | 
								: "=&r" (ret), "=&r" (tmp), "+Q" (*(u8 *)ptr)
 | 
				
			||||||
			: "r" (x)
 | 
								: "r" (x)
 | 
				
			||||||
			: "cc", "memory");
 | 
								: "memory");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 2:
 | 
						case 2:
 | 
				
			||||||
		asm volatile("//	__xchg2\n"
 | 
							asm volatile("//	__xchg2\n"
 | 
				
			||||||
		"1:	ldaxrh	%w0, %2\n"
 | 
							"1:	ldxrh	%w0, %2\n"
 | 
				
			||||||
		"	stlxrh	%w1, %w3, %2\n"
 | 
							"	stlxrh	%w1, %w3, %2\n"
 | 
				
			||||||
		"	cbnz	%w1, 1b\n"
 | 
							"	cbnz	%w1, 1b\n"
 | 
				
			||||||
			: "=&r" (ret), "=&r" (tmp), "+Q" (*(u16 *)ptr)
 | 
								: "=&r" (ret), "=&r" (tmp), "+Q" (*(u16 *)ptr)
 | 
				
			||||||
			: "r" (x)
 | 
								: "r" (x)
 | 
				
			||||||
			: "cc", "memory");
 | 
								: "memory");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 4:
 | 
						case 4:
 | 
				
			||||||
		asm volatile("//	__xchg4\n"
 | 
							asm volatile("//	__xchg4\n"
 | 
				
			||||||
		"1:	ldaxr	%w0, %2\n"
 | 
							"1:	ldxr	%w0, %2\n"
 | 
				
			||||||
		"	stlxr	%w1, %w3, %2\n"
 | 
							"	stlxr	%w1, %w3, %2\n"
 | 
				
			||||||
		"	cbnz	%w1, 1b\n"
 | 
							"	cbnz	%w1, 1b\n"
 | 
				
			||||||
			: "=&r" (ret), "=&r" (tmp), "+Q" (*(u32 *)ptr)
 | 
								: "=&r" (ret), "=&r" (tmp), "+Q" (*(u32 *)ptr)
 | 
				
			||||||
			: "r" (x)
 | 
								: "r" (x)
 | 
				
			||||||
			: "cc", "memory");
 | 
								: "memory");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 8:
 | 
						case 8:
 | 
				
			||||||
		asm volatile("//	__xchg8\n"
 | 
							asm volatile("//	__xchg8\n"
 | 
				
			||||||
		"1:	ldaxr	%0, %2\n"
 | 
							"1:	ldxr	%0, %2\n"
 | 
				
			||||||
		"	stlxr	%w1, %3, %2\n"
 | 
							"	stlxr	%w1, %3, %2\n"
 | 
				
			||||||
		"	cbnz	%w1, 1b\n"
 | 
							"	cbnz	%w1, 1b\n"
 | 
				
			||||||
			: "=&r" (ret), "=&r" (tmp), "+Q" (*(u64 *)ptr)
 | 
								: "=&r" (ret), "=&r" (tmp), "+Q" (*(u64 *)ptr)
 | 
				
			||||||
			: "r" (x)
 | 
								: "r" (x)
 | 
				
			||||||
			: "cc", "memory");
 | 
								: "memory");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		BUILD_BUG();
 | 
							BUILD_BUG();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						smp_mb();
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@
 | 
				
			||||||
#define ESR_EL1_EC_SP_ALIGN	(0x26)
 | 
					#define ESR_EL1_EC_SP_ALIGN	(0x26)
 | 
				
			||||||
#define ESR_EL1_EC_FP_EXC32	(0x28)
 | 
					#define ESR_EL1_EC_FP_EXC32	(0x28)
 | 
				
			||||||
#define ESR_EL1_EC_FP_EXC64	(0x2C)
 | 
					#define ESR_EL1_EC_FP_EXC64	(0x2C)
 | 
				
			||||||
#define ESR_EL1_EC_SERRROR	(0x2F)
 | 
					#define ESR_EL1_EC_SERROR	(0x2F)
 | 
				
			||||||
#define ESR_EL1_EC_BREAKPT_EL0	(0x30)
 | 
					#define ESR_EL1_EC_BREAKPT_EL0	(0x30)
 | 
				
			||||||
#define ESR_EL1_EC_BREAKPT_EL1	(0x31)
 | 
					#define ESR_EL1_EC_BREAKPT_EL1	(0x31)
 | 
				
			||||||
#define ESR_EL1_EC_SOFTSTP_EL0	(0x32)
 | 
					#define ESR_EL1_EC_SOFTSTP_EL0	(0x32)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,10 +24,11 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __futex_atomic_op(insn, ret, oldval, uaddr, tmp, oparg)		\
 | 
					#define __futex_atomic_op(insn, ret, oldval, uaddr, tmp, oparg)		\
 | 
				
			||||||
	asm volatile(							\
 | 
						asm volatile(							\
 | 
				
			||||||
"1:	ldaxr	%w1, %2\n"						\
 | 
					"1:	ldxr	%w1, %2\n"						\
 | 
				
			||||||
	insn "\n"							\
 | 
						insn "\n"							\
 | 
				
			||||||
"2:	stlxr	%w3, %w0, %2\n"						\
 | 
					"2:	stlxr	%w3, %w0, %2\n"						\
 | 
				
			||||||
"	cbnz	%w3, 1b\n"						\
 | 
					"	cbnz	%w3, 1b\n"						\
 | 
				
			||||||
 | 
					"	dmb	ish\n"							\
 | 
				
			||||||
"3:\n"									\
 | 
					"3:\n"									\
 | 
				
			||||||
"	.pushsection .fixup,\"ax\"\n"					\
 | 
					"	.pushsection .fixup,\"ax\"\n"					\
 | 
				
			||||||
"	.align	2\n"							\
 | 
					"	.align	2\n"							\
 | 
				
			||||||
| 
						 | 
					@ -40,7 +41,7 @@
 | 
				
			||||||
"	.popsection\n"							\
 | 
					"	.popsection\n"							\
 | 
				
			||||||
	: "=&r" (ret), "=&r" (oldval), "+Q" (*uaddr), "=&r" (tmp)	\
 | 
						: "=&r" (ret), "=&r" (oldval), "+Q" (*uaddr), "=&r" (tmp)	\
 | 
				
			||||||
	: "r" (oparg), "Ir" (-EFAULT)					\
 | 
						: "r" (oparg), "Ir" (-EFAULT)					\
 | 
				
			||||||
	: "cc", "memory")
 | 
						: "memory")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
					static inline int
 | 
				
			||||||
futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
 | 
					futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
 | 
				
			||||||
| 
						 | 
					@ -111,11 +112,12 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
 | 
				
			||||||
		return -EFAULT;
 | 
							return -EFAULT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	asm volatile("// futex_atomic_cmpxchg_inatomic\n"
 | 
						asm volatile("// futex_atomic_cmpxchg_inatomic\n"
 | 
				
			||||||
"1:	ldaxr	%w1, %2\n"
 | 
					"1:	ldxr	%w1, %2\n"
 | 
				
			||||||
"	sub	%w3, %w1, %w4\n"
 | 
					"	sub	%w3, %w1, %w4\n"
 | 
				
			||||||
"	cbnz	%w3, 3f\n"
 | 
					"	cbnz	%w3, 3f\n"
 | 
				
			||||||
"2:	stlxr	%w3, %w5, %2\n"
 | 
					"2:	stlxr	%w3, %w5, %2\n"
 | 
				
			||||||
"	cbnz	%w3, 1b\n"
 | 
					"	cbnz	%w3, 1b\n"
 | 
				
			||||||
 | 
					"	dmb	ish\n"
 | 
				
			||||||
"3:\n"
 | 
					"3:\n"
 | 
				
			||||||
"	.pushsection .fixup,\"ax\"\n"
 | 
					"	.pushsection .fixup,\"ax\"\n"
 | 
				
			||||||
"4:	mov	%w0, %w6\n"
 | 
					"4:	mov	%w0, %w6\n"
 | 
				
			||||||
| 
						 | 
					@ -127,7 +129,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
 | 
				
			||||||
"	.popsection\n"
 | 
					"	.popsection\n"
 | 
				
			||||||
	: "+r" (ret), "=&r" (val), "+Q" (*uaddr), "=&r" (tmp)
 | 
						: "+r" (ret), "=&r" (val), "+Q" (*uaddr), "=&r" (tmp)
 | 
				
			||||||
	: "r" (oldval), "r" (newval), "Ir" (-EFAULT)
 | 
						: "r" (oldval), "r" (newval), "Ir" (-EFAULT)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*uval = val;
 | 
						*uval = val;
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -231,7 +231,7 @@
 | 
				
			||||||
#define ESR_EL2_EC_SP_ALIGN	(0x26)
 | 
					#define ESR_EL2_EC_SP_ALIGN	(0x26)
 | 
				
			||||||
#define ESR_EL2_EC_FP_EXC32	(0x28)
 | 
					#define ESR_EL2_EC_FP_EXC32	(0x28)
 | 
				
			||||||
#define ESR_EL2_EC_FP_EXC64	(0x2C)
 | 
					#define ESR_EL2_EC_FP_EXC64	(0x2C)
 | 
				
			||||||
#define ESR_EL2_EC_SERRROR	(0x2F)
 | 
					#define ESR_EL2_EC_SERROR	(0x2F)
 | 
				
			||||||
#define ESR_EL2_EC_BREAKPT	(0x30)
 | 
					#define ESR_EL2_EC_BREAKPT	(0x30)
 | 
				
			||||||
#define ESR_EL2_EC_BREAKPT_HYP	(0x31)
 | 
					#define ESR_EL2_EC_BREAKPT_HYP	(0x31)
 | 
				
			||||||
#define ESR_EL2_EC_SOFTSTP	(0x32)
 | 
					#define ESR_EL2_EC_SOFTSTP	(0x32)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -132,7 +132,7 @@ static inline void arch_write_lock(arch_rwlock_t *rw)
 | 
				
			||||||
	"	cbnz	%w0, 2b\n"
 | 
						"	cbnz	%w0, 2b\n"
 | 
				
			||||||
	: "=&r" (tmp), "+Q" (rw->lock)
 | 
						: "=&r" (tmp), "+Q" (rw->lock)
 | 
				
			||||||
	: "r" (0x80000000)
 | 
						: "r" (0x80000000)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int arch_write_trylock(arch_rwlock_t *rw)
 | 
					static inline int arch_write_trylock(arch_rwlock_t *rw)
 | 
				
			||||||
| 
						 | 
					@ -146,7 +146,7 @@ static inline int arch_write_trylock(arch_rwlock_t *rw)
 | 
				
			||||||
	"1:\n"
 | 
						"1:\n"
 | 
				
			||||||
	: "=&r" (tmp), "+Q" (rw->lock)
 | 
						: "=&r" (tmp), "+Q" (rw->lock)
 | 
				
			||||||
	: "r" (0x80000000)
 | 
						: "r" (0x80000000)
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return !tmp;
 | 
						return !tmp;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -187,7 +187,7 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
 | 
				
			||||||
	"	cbnz	%w1, 2b\n"
 | 
						"	cbnz	%w1, 2b\n"
 | 
				
			||||||
	: "=&r" (tmp), "=&r" (tmp2), "+Q" (rw->lock)
 | 
						: "=&r" (tmp), "=&r" (tmp2), "+Q" (rw->lock)
 | 
				
			||||||
	:
 | 
						:
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void arch_read_unlock(arch_rwlock_t *rw)
 | 
					static inline void arch_read_unlock(arch_rwlock_t *rw)
 | 
				
			||||||
| 
						 | 
					@ -201,7 +201,7 @@ static inline void arch_read_unlock(arch_rwlock_t *rw)
 | 
				
			||||||
	"	cbnz	%w1, 1b\n"
 | 
						"	cbnz	%w1, 1b\n"
 | 
				
			||||||
	: "=&r" (tmp), "=&r" (tmp2), "+Q" (rw->lock)
 | 
						: "=&r" (tmp), "=&r" (tmp2), "+Q" (rw->lock)
 | 
				
			||||||
	:
 | 
						:
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int arch_read_trylock(arch_rwlock_t *rw)
 | 
					static inline int arch_read_trylock(arch_rwlock_t *rw)
 | 
				
			||||||
| 
						 | 
					@ -216,7 +216,7 @@ static inline int arch_read_trylock(arch_rwlock_t *rw)
 | 
				
			||||||
	"1:\n"
 | 
						"1:\n"
 | 
				
			||||||
	: "=&r" (tmp), "+r" (tmp2), "+Q" (rw->lock)
 | 
						: "=&r" (tmp), "+r" (tmp2), "+Q" (rw->lock)
 | 
				
			||||||
	:
 | 
						:
 | 
				
			||||||
	: "cc", "memory");
 | 
						: "memory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return !tmp2;
 | 
						return !tmp2;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -399,7 +399,10 @@ __SYSCALL(374, compat_sys_sendmmsg)
 | 
				
			||||||
__SYSCALL(375, sys_setns)
 | 
					__SYSCALL(375, sys_setns)
 | 
				
			||||||
__SYSCALL(376, compat_sys_process_vm_readv)
 | 
					__SYSCALL(376, compat_sys_process_vm_readv)
 | 
				
			||||||
__SYSCALL(377, compat_sys_process_vm_writev)
 | 
					__SYSCALL(377, compat_sys_process_vm_writev)
 | 
				
			||||||
__SYSCALL(378, sys_ni_syscall)			/* 378 for kcmp */
 | 
					__SYSCALL(378, sys_kcmp)
 | 
				
			||||||
 | 
					__SYSCALL(379, sys_finit_module)
 | 
				
			||||||
 | 
					__SYSCALL(380, sys_sched_setattr)
 | 
				
			||||||
 | 
					__SYSCALL(381, sys_sched_getattr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __NR_compat_syscalls		379
 | 
					#define __NR_compat_syscalls		379
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,6 +148,15 @@ struct kvm_arch_memory_slot {
 | 
				
			||||||
#define KVM_REG_ARM_TIMER_CNT		ARM64_SYS_REG(3, 3, 14, 3, 2)
 | 
					#define KVM_REG_ARM_TIMER_CNT		ARM64_SYS_REG(3, 3, 14, 3, 2)
 | 
				
			||||||
#define KVM_REG_ARM_TIMER_CVAL		ARM64_SYS_REG(3, 3, 14, 0, 2)
 | 
					#define KVM_REG_ARM_TIMER_CVAL		ARM64_SYS_REG(3, 3, 14, 0, 2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Device Control API: ARM VGIC */
 | 
				
			||||||
 | 
					#define KVM_DEV_ARM_VGIC_GRP_ADDR	0
 | 
				
			||||||
 | 
					#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1
 | 
				
			||||||
 | 
					#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS	2
 | 
				
			||||||
 | 
					#define   KVM_DEV_ARM_VGIC_CPUID_SHIFT	32
 | 
				
			||||||
 | 
					#define   KVM_DEV_ARM_VGIC_CPUID_MASK	(0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
 | 
				
			||||||
 | 
					#define   KVM_DEV_ARM_VGIC_OFFSET_SHIFT	0
 | 
				
			||||||
 | 
					#define   KVM_DEV_ARM_VGIC_OFFSET_MASK	(0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* KVM_IRQ_LINE irq field index values */
 | 
					/* KVM_IRQ_LINE irq field index values */
 | 
				
			||||||
#define KVM_ARM_IRQ_TYPE_SHIFT		24
 | 
					#define KVM_ARM_IRQ_TYPE_SHIFT		24
 | 
				
			||||||
#define KVM_ARM_IRQ_TYPE_MASK		0xff
 | 
					#define KVM_ARM_IRQ_TYPE_MASK		0xff
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,12 +38,13 @@ __kuser_cmpxchg64:			// 0xffff0f60
 | 
				
			||||||
	.inst	0xe92d00f0		//	push		{r4, r5, r6, r7}
 | 
						.inst	0xe92d00f0		//	push		{r4, r5, r6, r7}
 | 
				
			||||||
	.inst	0xe1c040d0		//	ldrd		r4, r5, [r0]
 | 
						.inst	0xe1c040d0		//	ldrd		r4, r5, [r0]
 | 
				
			||||||
	.inst	0xe1c160d0		//	ldrd		r6, r7, [r1]
 | 
						.inst	0xe1c160d0		//	ldrd		r6, r7, [r1]
 | 
				
			||||||
	.inst	0xe1b20e9f		// 1:	ldaexd		r0, r1, [r2]
 | 
						.inst	0xe1b20f9f		// 1:	ldrexd		r0, r1, [r2]
 | 
				
			||||||
	.inst	0xe0303004		//	eors		r3, r0, r4
 | 
						.inst	0xe0303004		//	eors		r3, r0, r4
 | 
				
			||||||
	.inst	0x00313005		//	eoreqs		r3, r1, r5
 | 
						.inst	0x00313005		//	eoreqs		r3, r1, r5
 | 
				
			||||||
	.inst	0x01a23e96		//	stlexdeq	r3, r6, [r2]
 | 
						.inst	0x01a23e96		//	stlexdeq	r3, r6, [r2]
 | 
				
			||||||
	.inst	0x03330001		//	teqeq		r3, #1
 | 
						.inst	0x03330001		//	teqeq		r3, #1
 | 
				
			||||||
	.inst	0x0afffff9		//	beq		1b
 | 
						.inst	0x0afffff9		//	beq		1b
 | 
				
			||||||
 | 
						.inst	0xf57ff05b		//	dmb		ish
 | 
				
			||||||
	.inst	0xe2730000		//	rsbs		r0, r3, #0
 | 
						.inst	0xe2730000		//	rsbs		r0, r3, #0
 | 
				
			||||||
	.inst	0xe8bd00f0		//	pop		{r4, r5, r6, r7}
 | 
						.inst	0xe8bd00f0		//	pop		{r4, r5, r6, r7}
 | 
				
			||||||
	.inst	0xe12fff1e		//	bx		lr
 | 
						.inst	0xe12fff1e		//	bx		lr
 | 
				
			||||||
| 
						 | 
					@ -55,11 +56,12 @@ __kuser_memory_barrier:			// 0xffff0fa0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.align	5
 | 
						.align	5
 | 
				
			||||||
__kuser_cmpxchg:			// 0xffff0fc0
 | 
					__kuser_cmpxchg:			// 0xffff0fc0
 | 
				
			||||||
	.inst	0xe1923e9f		// 1:	ldaex		r3, [r2]
 | 
						.inst	0xe1923f9f		// 1:	ldrex		r3, [r2]
 | 
				
			||||||
	.inst	0xe0533000		//	subs		r3, r3, r0
 | 
						.inst	0xe0533000		//	subs		r3, r3, r0
 | 
				
			||||||
	.inst	0x01823e91		//	stlexeq		r3, r1, [r2]
 | 
						.inst	0x01823e91		//	stlexeq		r3, r1, [r2]
 | 
				
			||||||
	.inst	0x03330001		//	teqeq		r3, #1
 | 
						.inst	0x03330001		//	teqeq		r3, #1
 | 
				
			||||||
	.inst	0x0afffffa		//	beq		1b
 | 
						.inst	0x0afffffa		//	beq		1b
 | 
				
			||||||
 | 
						.inst	0xf57ff05b		//	dmb		ish
 | 
				
			||||||
	.inst	0xe2730000		//	rsbs		r0, r3, #0
 | 
						.inst	0xe2730000		//	rsbs		r0, r3, #0
 | 
				
			||||||
	.inst	0xe12fff1e		//	bx		lr
 | 
						.inst	0xe12fff1e		//	bx		lr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -238,6 +238,8 @@ void update_vsyscall(struct timekeeper *tk)
 | 
				
			||||||
	vdso_data->use_syscall			= use_syscall;
 | 
						vdso_data->use_syscall			= use_syscall;
 | 
				
			||||||
	vdso_data->xtime_coarse_sec		= xtime_coarse.tv_sec;
 | 
						vdso_data->xtime_coarse_sec		= xtime_coarse.tv_sec;
 | 
				
			||||||
	vdso_data->xtime_coarse_nsec		= xtime_coarse.tv_nsec;
 | 
						vdso_data->xtime_coarse_nsec		= xtime_coarse.tv_nsec;
 | 
				
			||||||
 | 
						vdso_data->wtm_clock_sec		= tk->wall_to_monotonic.tv_sec;
 | 
				
			||||||
 | 
						vdso_data->wtm_clock_nsec		= tk->wall_to_monotonic.tv_nsec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!use_syscall) {
 | 
						if (!use_syscall) {
 | 
				
			||||||
		vdso_data->cs_cycle_last	= tk->clock->cycle_last;
 | 
							vdso_data->cs_cycle_last	= tk->clock->cycle_last;
 | 
				
			||||||
| 
						 | 
					@ -245,8 +247,6 @@ void update_vsyscall(struct timekeeper *tk)
 | 
				
			||||||
		vdso_data->xtime_clock_nsec	= tk->xtime_nsec;
 | 
							vdso_data->xtime_clock_nsec	= tk->xtime_nsec;
 | 
				
			||||||
		vdso_data->cs_mult		= tk->mult;
 | 
							vdso_data->cs_mult		= tk->mult;
 | 
				
			||||||
		vdso_data->cs_shift		= tk->shift;
 | 
							vdso_data->cs_shift		= tk->shift;
 | 
				
			||||||
		vdso_data->wtm_clock_sec	= tk->wall_to_monotonic.tv_sec;
 | 
					 | 
				
			||||||
		vdso_data->wtm_clock_nsec	= tk->wall_to_monotonic.tv_nsec;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	smp_wmb();
 | 
						smp_wmb();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,7 +48,7 @@ $(obj-vdso): %.o: %.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Actual build commands
 | 
					# Actual build commands
 | 
				
			||||||
quiet_cmd_vdsold = VDSOL $@
 | 
					quiet_cmd_vdsold = VDSOL $@
 | 
				
			||||||
      cmd_vdsold = $(CC) $(c_flags) -Wl,-T $^ -o $@
 | 
					      cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@
 | 
				
			||||||
quiet_cmd_vdsoas = VDSOA $@
 | 
					quiet_cmd_vdsoas = VDSOA $@
 | 
				
			||||||
      cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $<
 | 
					      cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $<
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,6 +103,8 @@ ENTRY(__kernel_clock_gettime)
 | 
				
			||||||
	bl	__do_get_tspec
 | 
						bl	__do_get_tspec
 | 
				
			||||||
	seqcnt_check w9, 1b
 | 
						seqcnt_check w9, 1b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mov	x30, x2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cmp	w0, #CLOCK_MONOTONIC
 | 
						cmp	w0, #CLOCK_MONOTONIC
 | 
				
			||||||
	b.ne	6f
 | 
						b.ne	6f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,6 +120,9 @@ ENTRY(__kernel_clock_gettime)
 | 
				
			||||||
	ccmp	w0, #CLOCK_MONOTONIC_COARSE, #0x4, ne
 | 
						ccmp	w0, #CLOCK_MONOTONIC_COARSE, #0x4, ne
 | 
				
			||||||
	b.ne	8f
 | 
						b.ne	8f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* xtime_coarse_nsec is already right-shifted */
 | 
				
			||||||
 | 
						mov	x12, #0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Get coarse timespec. */
 | 
						/* Get coarse timespec. */
 | 
				
			||||||
	adr	vdso_data, _vdso_data
 | 
						adr	vdso_data, _vdso_data
 | 
				
			||||||
3:	seqcnt_acquire
 | 
					3:	seqcnt_acquire
 | 
				
			||||||
| 
						 | 
					@ -156,7 +161,7 @@ ENTRY(__kernel_clock_gettime)
 | 
				
			||||||
	lsr	x11, x11, x12
 | 
						lsr	x11, x11, x12
 | 
				
			||||||
	stp	x10, x11, [x1, #TSPEC_TV_SEC]
 | 
						stp	x10, x11, [x1, #TSPEC_TV_SEC]
 | 
				
			||||||
	mov	x0, xzr
 | 
						mov	x0, xzr
 | 
				
			||||||
	ret	x2
 | 
						ret
 | 
				
			||||||
7:
 | 
					7:
 | 
				
			||||||
	mov	x30, x2
 | 
						mov	x30, x2
 | 
				
			||||||
8:	/* Syscall fallback. */
 | 
					8:	/* Syscall fallback. */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,11 +46,12 @@ ENTRY(	\name	)
 | 
				
			||||||
	mov	x2, #1
 | 
						mov	x2, #1
 | 
				
			||||||
	add	x1, x1, x0, lsr #3	// Get word offset
 | 
						add	x1, x1, x0, lsr #3	// Get word offset
 | 
				
			||||||
	lsl	x4, x2, x3		// Create mask
 | 
						lsl	x4, x2, x3		// Create mask
 | 
				
			||||||
1:	ldaxr	x2, [x1]
 | 
					1:	ldxr	x2, [x1]
 | 
				
			||||||
	lsr	x0, x2, x3		// Save old value of bit
 | 
						lsr	x0, x2, x3		// Save old value of bit
 | 
				
			||||||
	\instr	x2, x2, x4		// toggle bit
 | 
						\instr	x2, x2, x4		// toggle bit
 | 
				
			||||||
	stlxr	w5, x2, [x1]
 | 
						stlxr	w5, x2, [x1]
 | 
				
			||||||
	cbnz	w5, 1b
 | 
						cbnz	w5, 1b
 | 
				
			||||||
 | 
						dmb	ish
 | 
				
			||||||
	and	x0, x0, #1
 | 
						and	x0, x0, #1
 | 
				
			||||||
3:	ret
 | 
					3:	ret
 | 
				
			||||||
ENDPROC(\name	)
 | 
					ENDPROC(\name	)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ static void *arm64_swiotlb_alloc_coherent(struct device *dev, size_t size,
 | 
				
			||||||
	if (IS_ENABLED(CONFIG_DMA_CMA)) {
 | 
						if (IS_ENABLED(CONFIG_DMA_CMA)) {
 | 
				
			||||||
		struct page *page;
 | 
							struct page *page;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							size = PAGE_ALIGN(size);
 | 
				
			||||||
		page = dma_alloc_from_contiguous(dev, size >> PAGE_SHIFT,
 | 
							page = dma_alloc_from_contiguous(dev, size >> PAGE_SHIFT,
 | 
				
			||||||
							get_order(size));
 | 
												get_order(size));
 | 
				
			||||||
		if (!page)
 | 
							if (!page)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -203,10 +203,18 @@ static void __init alloc_init_pmd(pud_t *pud, unsigned long addr,
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
		next = pmd_addr_end(addr, end);
 | 
							next = pmd_addr_end(addr, end);
 | 
				
			||||||
		/* try section mapping first */
 | 
							/* try section mapping first */
 | 
				
			||||||
		if (((addr | next | phys) & ~SECTION_MASK) == 0)
 | 
							if (((addr | next | phys) & ~SECTION_MASK) == 0) {
 | 
				
			||||||
 | 
								pmd_t old_pmd =*pmd;
 | 
				
			||||||
			set_pmd(pmd, __pmd(phys | prot_sect_kernel));
 | 
								set_pmd(pmd, __pmd(phys | prot_sect_kernel));
 | 
				
			||||||
		else
 | 
								/*
 | 
				
			||||||
 | 
								 * Check for previous table entries created during
 | 
				
			||||||
 | 
								 * boot (__create_page_tables) and flush them.
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
								if (!pmd_none(old_pmd))
 | 
				
			||||||
 | 
									flush_tlb_all();
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
			alloc_init_pte(pmd, addr, next, __phys_to_pfn(phys));
 | 
								alloc_init_pte(pmd, addr, next, __phys_to_pfn(phys));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		phys += next - addr;
 | 
							phys += next - addr;
 | 
				
			||||||
	} while (pmd++, addr = next, addr != end);
 | 
						} while (pmd++, addr = next, addr != end);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,17 +32,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pgd_t *pgd_alloc(struct mm_struct *mm)
 | 
					pgd_t *pgd_alloc(struct mm_struct *mm)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pgd_t *new_pgd;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (PGD_SIZE == PAGE_SIZE)
 | 
						if (PGD_SIZE == PAGE_SIZE)
 | 
				
			||||||
		new_pgd = (pgd_t *)get_zeroed_page(GFP_KERNEL);
 | 
							return (pgd_t *)get_zeroed_page(GFP_KERNEL);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		new_pgd = kzalloc(PGD_SIZE, GFP_KERNEL);
 | 
							return kzalloc(PGD_SIZE, GFP_KERNEL);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (!new_pgd)
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return new_pgd;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 | 
					void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue