diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c b/arch/powerpc/platforms/85xx/corenet_generic.c
index 17ae75d62518a014b36d9c9c0debfd0ef1873b57..499ea16275e5348d9ea43aee10d730fc9c8a0c69 100644
--- a/arch/powerpc/platforms/85xx/corenet_generic.c
+++ b/arch/powerpc/platforms/85xx/corenet_generic.c
@@ -9,6 +9,7 @@
 
 #include <linux/kernel.h>
 #include <linux/pci.h>
+#include <linux/reboot.h>
 #include <linux/kdev_t.h>
 #include <linux/delay.h>
 #include <linux/interrupt.h>
@@ -161,7 +162,7 @@ static int __init corenet_generic_probe(void)
 
 			ppc_md.get_irq = ehv_pic_get_irq;
 			ppc_md.restart = fsl_hv_restart;
-			pm_power_off = fsl_hv_halt;
+			register_platform_power_off(fsl_hv_halt);
 			ppc_md.halt = fsl_hv_halt;
 #ifdef CONFIG_SMP
 			/*
diff --git a/arch/powerpc/platforms/85xx/sgy_cts1000.c b/arch/powerpc/platforms/85xx/sgy_cts1000.c
index 98ae640751934d0723ec0335214717332cb93783..e7043150ce56f613b298be93a2acd82f51ee8a23 100644
--- a/arch/powerpc/platforms/85xx/sgy_cts1000.c
+++ b/arch/powerpc/platforms/85xx/sgy_cts1000.c
@@ -118,7 +118,7 @@ static int gpio_halt_probe(struct platform_device *pdev)
 
 	/* Register our halt function */
 	ppc_md.halt = gpio_halt_cb;
-	pm_power_off = gpio_halt_cb;
+	register_platform_power_off(gpio_halt_cb);
 
 	printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d"
 	       " irq).\n", gpio, trigger, irq);
@@ -132,10 +132,11 @@ static int gpio_halt_remove(struct platform_device *pdev)
 		int gpio = of_get_gpio(halt_node, 0);
 		int irq = irq_of_parse_and_map(halt_node, 0);
 
+		unregister_platform_power_off(gpio_halt_cb);
+
 		free_irq(irq, halt_node);
 
 		ppc_md.halt = NULL;
-		pm_power_off = NULL;
 
 		gpio_free(gpio);