@@ -14,6 +14,7 @@
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/module.h>
+#include <linux/pm.h>
#include <linux/err.h>
#include <linux/gpio.h>
#include <linux/leds.h>
@@ -352,14 +353,19 @@ static void dm355evm_command(unsigned command)
command, status);
}
-static void dm355evm_power_off(void)
+static void dm355evm_power_off(struct power_off_handler_block *this)
{
dm355evm_command(MSP_COMMAND_POWEROFF);
}
+static struct power_off_handler_block dm355evm_msp_power_off_hb = {
+ .handler = dm355evm_power_off,
+ .priority = POWER_OFF_PRIORITY_LOW,
+};
+
static int dm355evm_msp_remove(struct i2c_client *client)
{
- pm_power_off = NULL;
+ unregister_power_off_handler(&dm355evm_msp_power_off_hb);
msp430 = NULL;
return 0;
}
@@ -398,7 +404,9 @@ dm355evm_msp_probe(struct i2c_client *client, const struct i2c_device_id *id)
goto fail;
/* PM hookup */
- pm_power_off = dm355evm_power_off;
+ status = register_power_off_handler(&dm355evm_msp_power_off_hb);
+ if (status)
+ dev_warn(&client->dev, "Failed to register power-off handler\n");
return 0;