56 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								* Power State Coordination Interface (PSCI)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Firmware implementing the PSCI functions described in ARM document number
							 | 
						||
| 
								 | 
							
								ARM DEN 0022A ("Power State Coordination Interface System Software on ARM
							 | 
						||
| 
								 | 
							
								processors") can be used by Linux to initiate various CPU-centric power
							 | 
						||
| 
								 | 
							
								operations.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Issue A of the specification describes functions for CPU suspend, hotplug
							 | 
						||
| 
								 | 
							
								and migration of secure software.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Functions are invoked by trapping to the privilege level of the PSCI
							 | 
						||
| 
								 | 
							
								firmware (specified as part of the binding below) and passing arguments
							 | 
						||
| 
								 | 
							
								in a manner similar to that specified by AAPCS:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									 r0		=> 32-bit Function ID / return value
							 | 
						||
| 
								 | 
							
									{r1 - r3}	=> Parameters
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that the immediate field of the trapping instruction must be set
							 | 
						||
| 
								 | 
							
								to #0.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Main node required properties:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - compatible    : Must be "arm,psci"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - method        : The method of calling the PSCI firmware. Permitted
							 | 
						||
| 
								 | 
							
								                   values are:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                   "smc" : SMC #0, with the register assignments specified
							 | 
						||
| 
								 | 
							
										           in this binding.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                   "hvc" : HVC #0, with the register assignments specified
							 | 
						||
| 
								 | 
							
										           in this binding.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Main node optional properties:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - cpu_suspend   : Function ID for CPU_SUSPEND operation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - cpu_off       : Function ID for CPU_OFF operation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - cpu_on        : Function ID for CPU_ON operation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 - migrate       : Function ID for MIGRATE operation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									psci {
							 | 
						||
| 
								 | 
							
										compatible	= "arm,psci";
							 | 
						||
| 
								 | 
							
										method		= "smc";
							 | 
						||
| 
								 | 
							
										cpu_suspend	= <0x95c10000>;
							 | 
						||
| 
								 | 
							
										cpu_off		= <0x95c10001>;
							 | 
						||
| 
								 | 
							
										cpu_on		= <0x95c10002>;
							 | 
						||
| 
								 | 
							
										migrate		= <0x95c10003>;
							 | 
						||
| 
								 | 
							
									};
							 |