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: Wang Dongsheng <dongsheng.wang@freescale.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
Родитель
71a6fa17e1
Коммит
202e059ce3
|
@ -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)
|
||||||
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)
|
||||||
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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче