Commit 202e059c authored by Wang Dongsheng's avatar Wang Dongsheng Committed by Scott Wood

powerpc/85xx: add hardware automatically enter altivec idle state

Each core's AltiVec unit may be placed into a power savings mode
by turning off power to the unit. Core hardware will automatically
power down the AltiVec unit after no AltiVec instructions have
executed in N cycles. The AltiVec power-control is triggered by hardware.
Signed-off-by: default avatarWang Dongsheng <dongsheng.wang@freescale.com>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent 71a6fa17
...@@ -53,6 +53,25 @@ _GLOBAL(__e500_dcache_setup) ...@@ -53,6 +53,25 @@ _GLOBAL(__e500_dcache_setup)
isync isync
blr blr
/*
* FIXME - we haven't yet done testing to determine a reasonable default
* value for AV_WAIT_IDLE_BIT.
*/
#define AV_WAIT_IDLE_BIT 50 /* 1ms, TB frequency is 41.66MHZ */
_GLOBAL(setup_altivec_idle)
mfspr r3, SPRN_PWRMGTCR0
/* Enable Altivec Idle */
oris r3, r3, PWRMGTCR0_AV_IDLE_PD_EN@h
li r11, AV_WAIT_IDLE_BIT
/* Set Automatic AltiVec Idle Count */
rlwimi r3, r11, PWRMGTCR0_AV_IDLE_CNT_SHIFT, PWRMGTCR0_AV_IDLE_CNT
mtspr SPRN_PWRMGTCR0, r3
blr
_GLOBAL(__setup_cpu_e6500) _GLOBAL(__setup_cpu_e6500)
mflr r6 mflr r6
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
...@@ -64,6 +83,7 @@ _GLOBAL(__setup_cpu_e6500) ...@@ -64,6 +83,7 @@ _GLOBAL(__setup_cpu_e6500)
bl .setup_lrat_ivor bl .setup_lrat_ivor
1: 1:
#endif #endif
bl setup_altivec_idle
bl __setup_cpu_e5500 bl __setup_cpu_e5500
mtlr r6 mtlr r6
blr blr
...@@ -131,6 +151,7 @@ _GLOBAL(__restore_cpu_e6500) ...@@ -131,6 +151,7 @@ _GLOBAL(__restore_cpu_e6500)
beq 1f beq 1f
bl .setup_lrat_ivor bl .setup_lrat_ivor
1: 1:
bl .setup_altivec_idle
bl __restore_cpu_e5500 bl __restore_cpu_e5500
mtlr r5 mtlr r5
blr blr
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment