Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
8418804e
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8418804e
编写于
11月 05, 2014
作者:
M
Michael Ellerman
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'topic/pm-power-off' into next
上级
8a97577a
9178ba29
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
66 addition
and
58 deletion
+66
-58
arch/powerpc/include/asm/machdep.h
arch/powerpc/include/asm/machdep.h
+0
-1
arch/powerpc/kernel/setup-common.c
arch/powerpc/kernel/setup-common.c
+3
-3
arch/powerpc/platforms/44x/ppc476.c
arch/powerpc/platforms/44x/ppc476.c
+1
-1
arch/powerpc/platforms/52xx/efika.c
arch/powerpc/platforms/52xx/efika.c
+2
-1
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
+4
-4
arch/powerpc/platforms/85xx/corenet_generic.c
arch/powerpc/platforms/85xx/corenet_generic.c
+1
-1
arch/powerpc/platforms/85xx/sgy_cts1000.c
arch/powerpc/platforms/85xx/sgy_cts1000.c
+2
-2
arch/powerpc/platforms/cell/celleb_setup.c
arch/powerpc/platforms/cell/celleb_setup.c
+2
-2
arch/powerpc/platforms/cell/qpace_setup.c
arch/powerpc/platforms/cell/qpace_setup.c
+1
-1
arch/powerpc/platforms/cell/setup.c
arch/powerpc/platforms/cell/setup.c
+1
-1
arch/powerpc/platforms/chrp/setup.c
arch/powerpc/platforms/chrp/setup.c
+2
-1
arch/powerpc/platforms/embedded6xx/gamecube.c
arch/powerpc/platforms/embedded6xx/gamecube.c
+2
-1
arch/powerpc/platforms/embedded6xx/linkstation.c
arch/powerpc/platforms/embedded6xx/linkstation.c
+3
-1
arch/powerpc/platforms/embedded6xx/wii.c
arch/powerpc/platforms/embedded6xx/wii.c
+2
-1
arch/powerpc/platforms/maple/setup.c
arch/powerpc/platforms/maple/setup.c
+2
-2
arch/powerpc/platforms/powermac/setup.c
arch/powerpc/platforms/powermac/setup.c
+2
-1
arch/powerpc/platforms/powernv/setup.c
arch/powerpc/platforms/powernv/setup.c
+2
-2
arch/powerpc/platforms/ps3/setup.c
arch/powerpc/platforms/ps3/setup.c
+1
-1
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/platforms/pseries/setup.c
+30
-29
arch/powerpc/sysdev/fsl_soc.c
arch/powerpc/sysdev/fsl_soc.c
+1
-1
arch/powerpc/xmon/xmon.c
arch/powerpc/xmon/xmon.c
+2
-1
未找到文件。
arch/powerpc/include/asm/machdep.h
浏览文件 @
8418804e
...
...
@@ -142,7 +142,6 @@ struct machdep_calls {
#endif
void
(
*
restart
)(
char
*
cmd
);
void
(
*
power_off
)(
void
);
void
(
*
halt
)(
void
);
void
(
*
panic
)(
char
*
str
);
void
(
*
cpu_die
)(
void
);
...
...
arch/powerpc/kernel/setup-common.c
浏览文件 @
8418804e
...
...
@@ -139,8 +139,8 @@ void machine_restart(char *cmd)
void
machine_power_off
(
void
)
{
machine_shutdown
();
if
(
p
pc_md
.
power_off
)
p
pc_md
.
power_off
();
if
(
p
m_
power_off
)
p
m_
power_off
();
#ifdef CONFIG_SMP
smp_send_stop
();
#endif
...
...
@@ -151,7 +151,7 @@ void machine_power_off(void)
/* Used by the G5 thermal driver */
EXPORT_SYMBOL_GPL
(
machine_power_off
);
void
(
*
pm_power_off
)(
void
)
=
machine_power_off
;
void
(
*
pm_power_off
)(
void
);
EXPORT_SYMBOL_GPL
(
pm_power_off
);
void
machine_halt
(
void
)
...
...
arch/powerpc/platforms/44x/ppc476.c
浏览文件 @
8418804e
...
...
@@ -94,7 +94,7 @@ static int avr_probe(struct i2c_client *client,
{
avr_i2c_client
=
client
;
ppc_md
.
restart
=
avr_reset_system
;
p
pc_md
.
power_off
=
avr_power_off_system
;
p
m_
power_off
=
avr_power_off_system
;
return
0
;
}
...
...
arch/powerpc/platforms/52xx/efika.c
浏览文件 @
8418804e
...
...
@@ -212,6 +212,8 @@ static int __init efika_probe(void)
DMA_MODE_READ
=
0x44
;
DMA_MODE_WRITE
=
0x48
;
pm_power_off
=
rtas_power_off
;
return
1
;
}
...
...
@@ -225,7 +227,6 @@ define_machine(efika)
.
init_IRQ
=
mpc52xx_init_irq
,
.
get_irq
=
mpc52xx_get_irq
,
.
restart
=
rtas_restart
,
.
power_off
=
rtas_power_off
,
.
halt
=
rtas_halt
,
.
set_rtc_time
=
rtas_set_rtc_time
,
.
get_rtc_time
=
rtas_get_rtc_time
,
...
...
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
浏览文件 @
8418804e
...
...
@@ -167,10 +167,10 @@ static int mcu_probe(struct i2c_client *client, const struct i2c_device_id *id)
if
(
ret
)
goto
err
;
/* XXX: this is potentially racy, but there is no lock for p
pc_md
*/
if
(
!
p
pc_md
.
power_off
)
{
/* XXX: this is potentially racy, but there is no lock for p
m_power_off
*/
if
(
!
p
m_
power_off
)
{
glob_mcu
=
mcu
;
p
pc_md
.
power_off
=
mcu_power_off
;
p
m_
power_off
=
mcu_power_off
;
dev_info
(
&
client
->
dev
,
"will provide power-off service
\n
"
);
}
...
...
@@ -197,7 +197,7 @@ static int mcu_remove(struct i2c_client *client)
device_remove_file
(
&
client
->
dev
,
&
dev_attr_status
);
if
(
glob_mcu
==
mcu
)
{
p
pc_md
.
power_off
=
NULL
;
p
m_
power_off
=
NULL
;
glob_mcu
=
NULL
;
}
...
...
arch/powerpc/platforms/85xx/corenet_generic.c
浏览文件 @
8418804e
...
...
@@ -170,7 +170,7 @@ static int __init corenet_generic_probe(void)
ppc_md
.
get_irq
=
ehv_pic_get_irq
;
ppc_md
.
restart
=
fsl_hv_restart
;
p
pc_md
.
power_off
=
fsl_hv_halt
;
p
m_
power_off
=
fsl_hv_halt
;
ppc_md
.
halt
=
fsl_hv_halt
;
#ifdef CONFIG_SMP
/*
...
...
arch/powerpc/platforms/85xx/sgy_cts1000.c
浏览文件 @
8418804e
...
...
@@ -120,7 +120,7 @@ static int gpio_halt_probe(struct platform_device *pdev)
/* Register our halt function */
ppc_md
.
halt
=
gpio_halt_cb
;
p
pc_md
.
power_off
=
gpio_halt_cb
;
p
m_
power_off
=
gpio_halt_cb
;
printk
(
KERN_INFO
"gpio-halt: registered GPIO %d (%d trigger, %d"
" irq).
\n
"
,
gpio
,
trigger
,
irq
);
...
...
@@ -137,7 +137,7 @@ static int gpio_halt_remove(struct platform_device *pdev)
free_irq
(
irq
,
halt_node
);
ppc_md
.
halt
=
NULL
;
p
pc_md
.
power_off
=
NULL
;
p
m_
power_off
=
NULL
;
gpio_free
(
gpio
);
...
...
arch/powerpc/platforms/cell/celleb_setup.c
浏览文件 @
8418804e
...
...
@@ -142,6 +142,7 @@ static int __init celleb_probe_beat(void)
powerpc_firmware_features
|=
FW_FEATURE_CELLEB_ALWAYS
|
FW_FEATURE_BEAT
|
FW_FEATURE_LPAR
;
hpte_init_beat_v3
();
pm_power_off
=
beat_power_off
;
return
1
;
}
...
...
@@ -190,6 +191,7 @@ static int __init celleb_probe_native(void)
powerpc_firmware_features
|=
FW_FEATURE_CELLEB_ALWAYS
;
hpte_init_native
();
pm_power_off
=
rtas_power_off
;
return
1
;
}
...
...
@@ -204,7 +206,6 @@ define_machine(celleb_beat) {
.
setup_arch
=
celleb_setup_arch_beat
,
.
show_cpuinfo
=
celleb_show_cpuinfo
,
.
restart
=
beat_restart
,
.
power_off
=
beat_power_off
,
.
halt
=
beat_halt
,
.
get_rtc_time
=
beat_get_rtc_time
,
.
set_rtc_time
=
beat_set_rtc_time
,
...
...
@@ -230,7 +231,6 @@ define_machine(celleb_native) {
.
setup_arch
=
celleb_setup_arch_native
,
.
show_cpuinfo
=
celleb_show_cpuinfo
,
.
restart
=
rtas_restart
,
.
power_off
=
rtas_power_off
,
.
halt
=
rtas_halt
,
.
get_boot_time
=
rtas_get_boot_time
,
.
get_rtc_time
=
rtas_get_rtc_time
,
...
...
arch/powerpc/platforms/cell/qpace_setup.c
浏览文件 @
8418804e
...
...
@@ -127,6 +127,7 @@ static int __init qpace_probe(void)
return
0
;
hpte_init_native
();
pm_power_off
=
rtas_power_off
;
return
1
;
}
...
...
@@ -137,7 +138,6 @@ define_machine(qpace) {
.
setup_arch
=
qpace_setup_arch
,
.
show_cpuinfo
=
qpace_show_cpuinfo
,
.
restart
=
rtas_restart
,
.
power_off
=
rtas_power_off
,
.
halt
=
rtas_halt
,
.
get_boot_time
=
rtas_get_boot_time
,
.
get_rtc_time
=
rtas_get_rtc_time
,
...
...
arch/powerpc/platforms/cell/setup.c
浏览文件 @
8418804e
...
...
@@ -259,6 +259,7 @@ static int __init cell_probe(void)
return
0
;
hpte_init_native
();
pm_power_off
=
rtas_power_off
;
return
1
;
}
...
...
@@ -269,7 +270,6 @@ define_machine(cell) {
.
setup_arch
=
cell_setup_arch
,
.
show_cpuinfo
=
cell_show_cpuinfo
,
.
restart
=
rtas_restart
,
.
power_off
=
rtas_power_off
,
.
halt
=
rtas_halt
,
.
get_boot_time
=
rtas_get_boot_time
,
.
get_rtc_time
=
rtas_get_rtc_time
,
...
...
arch/powerpc/platforms/chrp/setup.c
浏览文件 @
8418804e
...
...
@@ -585,6 +585,8 @@ static int __init chrp_probe(void)
DMA_MODE_READ
=
0x44
;
DMA_MODE_WRITE
=
0x48
;
pm_power_off
=
rtas_power_off
;
return
1
;
}
...
...
@@ -597,7 +599,6 @@ define_machine(chrp) {
.
show_cpuinfo
=
chrp_show_cpuinfo
,
.
init_IRQ
=
chrp_init_IRQ
,
.
restart
=
rtas_restart
,
.
power_off
=
rtas_power_off
,
.
halt
=
rtas_halt
,
.
time_init
=
chrp_time_init
,
.
set_rtc_time
=
chrp_set_rtc_time
,
...
...
arch/powerpc/platforms/embedded6xx/gamecube.c
浏览文件 @
8418804e
...
...
@@ -67,6 +67,8 @@ static int __init gamecube_probe(void)
if
(
!
of_flat_dt_is_compatible
(
dt_root
,
"nintendo,gamecube"
))
return
0
;
pm_power_off
=
gamecube_power_off
;
return
1
;
}
...
...
@@ -80,7 +82,6 @@ define_machine(gamecube) {
.
probe
=
gamecube_probe
,
.
init_early
=
gamecube_init_early
,
.
restart
=
gamecube_restart
,
.
power_off
=
gamecube_power_off
,
.
halt
=
gamecube_halt
,
.
init_IRQ
=
flipper_pic_probe
,
.
get_irq
=
flipper_pic_get_irq
,
...
...
arch/powerpc/platforms/embedded6xx/linkstation.c
浏览文件 @
8418804e
...
...
@@ -147,6 +147,9 @@ static int __init linkstation_probe(void)
if
(
!
of_flat_dt_is_compatible
(
root
,
"linkstation"
))
return
0
;
pm_power_off
=
linkstation_power_off
;
return
1
;
}
...
...
@@ -158,7 +161,6 @@ define_machine(linkstation){
.
show_cpuinfo
=
linkstation_show_cpuinfo
,
.
get_irq
=
mpic_get_irq
,
.
restart
=
linkstation_restart
,
.
power_off
=
linkstation_power_off
,
.
halt
=
linkstation_halt
,
.
calibrate_decr
=
generic_calibrate_decr
,
};
arch/powerpc/platforms/embedded6xx/wii.c
浏览文件 @
8418804e
...
...
@@ -211,6 +211,8 @@ static int __init wii_probe(void)
if
(
!
of_flat_dt_is_compatible
(
dt_root
,
"nintendo,wii"
))
return
0
;
pm_power_off
=
wii_power_off
;
return
1
;
}
...
...
@@ -226,7 +228,6 @@ define_machine(wii) {
.
init_early
=
wii_init_early
,
.
setup_arch
=
wii_setup_arch
,
.
restart
=
wii_restart
,
.
power_off
=
wii_power_off
,
.
halt
=
wii_halt
,
.
init_IRQ
=
wii_pic_probe
,
.
get_irq
=
flipper_pic_get_irq
,
...
...
arch/powerpc/platforms/maple/setup.c
浏览文件 @
8418804e
...
...
@@ -169,7 +169,7 @@ static void __init maple_use_rtas_reboot_and_halt_if_present(void)
if
(
rtas_service_present
(
"system-reboot"
)
&&
rtas_service_present
(
"power-off"
))
{
ppc_md
.
restart
=
rtas_restart
;
p
pc_md
.
power_off
=
rtas_power_off
;
p
m_
power_off
=
rtas_power_off
;
ppc_md
.
halt
=
rtas_halt
;
}
}
...
...
@@ -312,6 +312,7 @@ static int __init maple_probe(void)
alloc_dart_table
();
hpte_init_native
();
pm_power_off
=
maple_power_off
;
return
1
;
}
...
...
@@ -325,7 +326,6 @@ define_machine(maple) {
.
pci_irq_fixup
=
maple_pci_irq_fixup
,
.
pci_get_legacy_ide_irq
=
maple_pci_get_legacy_ide_irq
,
.
restart
=
maple_restart
,
.
power_off
=
maple_power_off
,
.
halt
=
maple_halt
,
.
get_boot_time
=
maple_get_boot_time
,
.
set_rtc_time
=
maple_set_rtc_time
,
...
...
arch/powerpc/platforms/powermac/setup.c
浏览文件 @
8418804e
...
...
@@ -632,6 +632,8 @@ static int __init pmac_probe(void)
smu_cmdbuf_abs
=
memblock_alloc_base
(
4096
,
4096
,
0x80000000UL
);
#endif
/* CONFIG_PMAC_SMU */
pm_power_off
=
pmac_power_off
;
return
1
;
}
...
...
@@ -663,7 +665,6 @@ define_machine(powermac) {
.
get_irq
=
NULL
,
/* changed later */
.
pci_irq_fixup
=
pmac_pci_irq_fixup
,
.
restart
=
pmac_restart
,
.
power_off
=
pmac_power_off
,
.
halt
=
pmac_halt
,
.
time_init
=
pmac_time_init
,
.
get_boot_time
=
pmac_get_boot_time
,
...
...
arch/powerpc/platforms/powernv/setup.c
浏览文件 @
8418804e
...
...
@@ -268,7 +268,7 @@ static void __init pnv_setup_machdep_opal(void)
ppc_md
.
get_rtc_time
=
opal_get_rtc_time
;
ppc_md
.
set_rtc_time
=
opal_set_rtc_time
;
ppc_md
.
restart
=
pnv_restart
;
p
pc_md
.
power_off
=
pnv_power_off
;
p
m_
power_off
=
pnv_power_off
;
ppc_md
.
halt
=
pnv_halt
;
ppc_md
.
machine_check_exception
=
opal_machine_check
;
ppc_md
.
mce_check_early_recovery
=
opal_mce_check_early_recovery
;
...
...
@@ -285,7 +285,7 @@ static void __init pnv_setup_machdep_rtas(void)
ppc_md
.
set_rtc_time
=
rtas_set_rtc_time
;
}
ppc_md
.
restart
=
rtas_restart
;
p
pc_md
.
power_off
=
rtas_power_off
;
p
m_
power_off
=
rtas_power_off
;
ppc_md
.
halt
=
rtas_halt
;
}
#endif
/* CONFIG_PPC_POWERNV_RTAS */
...
...
arch/powerpc/platforms/ps3/setup.c
浏览文件 @
8418804e
...
...
@@ -248,6 +248,7 @@ static int __init ps3_probe(void)
ps3_mm_init
();
ps3_mm_vas_create
(
&
htab_size
);
ps3_hpte_init
(
htab_size
);
pm_power_off
=
ps3_power_off
;
DBG
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
1
;
...
...
@@ -278,7 +279,6 @@ define_machine(ps3) {
.
calibrate_decr
=
ps3_calibrate_decr
,
.
progress
=
ps3_progress
,
.
restart
=
ps3_restart
,
.
power_off
=
ps3_power_off
,
.
halt
=
ps3_halt
,
#if defined(CONFIG_KEXEC)
.
kexec_cpu_down
=
ps3_kexec_cpu_down
,
...
...
arch/powerpc/platforms/pseries/setup.c
浏览文件 @
8418804e
...
...
@@ -659,6 +659,34 @@ static void __init pSeries_init_early(void)
pr_debug
(
" <- pSeries_init_early()
\n
"
);
}
/**
* pseries_power_off - tell firmware about how to power off the system.
*
* This function calls either the power-off rtas token in normal cases
* or the ibm,power-off-ups token (if present & requested) in case of
* a power failure. If power-off token is used, power on will only be
* possible with power button press. If ibm,power-off-ups token is used
* it will allow auto poweron after power is restored.
*/
static
void
pseries_power_off
(
void
)
{
int
rc
;
int
rtas_poweroff_ups_token
=
rtas_token
(
"ibm,power-off-ups"
);
if
(
rtas_flash_term_hook
)
rtas_flash_term_hook
(
SYS_POWER_OFF
);
if
(
rtas_poweron_auto
==
0
||
rtas_poweroff_ups_token
==
RTAS_UNKNOWN_SERVICE
)
{
rc
=
rtas_call
(
rtas_token
(
"power-off"
),
2
,
1
,
NULL
,
-
1
,
-
1
);
printk
(
KERN_INFO
"RTAS power-off returned %d
\n
"
,
rc
);
}
else
{
rc
=
rtas_call
(
rtas_poweroff_ups_token
,
0
,
1
,
NULL
);
printk
(
KERN_INFO
"RTAS ibm,power-off-ups returned %d
\n
"
,
rc
);
}
for
(;;);
}
/*
* Called very early, MMU is off, device-tree isn't unflattened
*/
...
...
@@ -741,6 +769,8 @@ static int __init pSeries_probe(void)
else
hpte_init_native
();
pm_power_off
=
pseries_power_off
;
pr_debug
(
"Machine is%s LPAR !
\n
"
,
(
powerpc_firmware_features
&
FW_FEATURE_LPAR
)
?
""
:
" not"
);
...
...
@@ -754,34 +784,6 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus)
return
PCI_PROBE_NORMAL
;
}
/**
* pSeries_power_off - tell firmware about how to power off the system.
*
* This function calls either the power-off rtas token in normal cases
* or the ibm,power-off-ups token (if present & requested) in case of
* a power failure. If power-off token is used, power on will only be
* possible with power button press. If ibm,power-off-ups token is used
* it will allow auto poweron after power is restored.
*/
static
void
pSeries_power_off
(
void
)
{
int
rc
;
int
rtas_poweroff_ups_token
=
rtas_token
(
"ibm,power-off-ups"
);
if
(
rtas_flash_term_hook
)
rtas_flash_term_hook
(
SYS_POWER_OFF
);
if
(
rtas_poweron_auto
==
0
||
rtas_poweroff_ups_token
==
RTAS_UNKNOWN_SERVICE
)
{
rc
=
rtas_call
(
rtas_token
(
"power-off"
),
2
,
1
,
NULL
,
-
1
,
-
1
);
printk
(
KERN_INFO
"RTAS power-off returned %d
\n
"
,
rc
);
}
else
{
rc
=
rtas_call
(
rtas_poweroff_ups_token
,
0
,
1
,
NULL
);
printk
(
KERN_INFO
"RTAS ibm,power-off-ups returned %d
\n
"
,
rc
);
}
for
(;;);
}
#ifndef CONFIG_PCI
void
pSeries_final_fixup
(
void
)
{
}
#endif
...
...
@@ -796,7 +798,6 @@ define_machine(pseries) {
.
pcibios_fixup
=
pSeries_final_fixup
,
.
pci_probe_mode
=
pSeries_pci_probe_mode
,
.
restart
=
rtas_restart
,
.
power_off
=
pSeries_power_off
,
.
halt
=
rtas_halt
,
.
panic
=
rtas_os_term
,
.
get_boot_time
=
rtas_get_boot_time
,
...
...
arch/powerpc/sysdev/fsl_soc.c
浏览文件 @
8418804e
...
...
@@ -238,7 +238,7 @@ void fsl_hv_restart(char *cmd)
/*
* Halt the current partition
*
* This function should be assigned to the p
pc_md.
power_off and ppc_md.halt
* This function should be assigned to the p
m_
power_off and ppc_md.halt
* function pointers, to shut down the partition when we're running under
* the Freescale hypervisor.
*/
...
...
arch/powerpc/xmon/xmon.c
浏览文件 @
8418804e
...
...
@@ -981,7 +981,8 @@ static void bootcmds(void)
else
if
(
cmd
==
'h'
)
ppc_md
.
halt
();
else
if
(
cmd
==
'p'
)
ppc_md
.
power_off
();
if
(
pm_power_off
)
pm_power_off
();
}
static
int
cpu_cmd
(
void
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录