mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ARM: 8122/1: smp_scu: enable SCU standby support
With SCU standby enabled, SCU CLK will be turned off when all processors are in WFI mode. And the clock will be turned on when any processor leaves WFI mode. This behavior should be preferable in terms of power efficiency of system idle. So let's set the SCU standby bit to enable the support in function scu_enable(). Cortex-A9 earlier than r2p0 has no standby bit in SCU, so we need to skip setting the bit for those. Signed-off-by: Shawn Guo <shawn.guo@freescale.com> Acked-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									f8f3d4ed0d
								
							
						
					
					
						commit
						c716483c3d
					
				
					 1 changed files with 7 additions and 0 deletions
				
			
		| 
						 | 
					@ -18,6 +18,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SCU_CTRL		0x00
 | 
					#define SCU_CTRL		0x00
 | 
				
			||||||
#define SCU_ENABLE		(1 << 0)
 | 
					#define SCU_ENABLE		(1 << 0)
 | 
				
			||||||
 | 
					#define SCU_STANDBY_ENABLE	(1 << 5)
 | 
				
			||||||
#define SCU_CONFIG		0x04
 | 
					#define SCU_CONFIG		0x04
 | 
				
			||||||
#define SCU_CPU_STATUS		0x08
 | 
					#define SCU_CPU_STATUS		0x08
 | 
				
			||||||
#define SCU_INVALIDATE		0x0c
 | 
					#define SCU_INVALIDATE		0x0c
 | 
				
			||||||
| 
						 | 
					@ -55,6 +56,12 @@ void scu_enable(void __iomem *scu_base)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	scu_ctrl |= SCU_ENABLE;
 | 
						scu_ctrl |= SCU_ENABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Cortex-A9 earlier than r2p0 has no standby bit in SCU */
 | 
				
			||||||
 | 
						if ((read_cpuid_id() & 0xff0ffff0) == 0x410fc090 &&
 | 
				
			||||||
 | 
						    (read_cpuid_id() & 0x00f0000f) >= 0x00200000)
 | 
				
			||||||
 | 
							scu_ctrl |= SCU_STANDBY_ENABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	writel_relaxed(scu_ctrl, scu_base + SCU_CTRL);
 | 
						writel_relaxed(scu_ctrl, scu_base + SCU_CTRL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue