From: Domenico Andreoli <domenico.andreoli@xxxxxxxxx> Proof of concept: vexpress as provider of reset hooks. Enum consolidation. Cc: Russell King <linux@xxxxxxxxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Olof Johansson <olof@xxxxxxxxx> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx Signed-off-by: Domenico Andreoli <domenico.andreoli@xxxxxxxxx> --- drivers/power/reset/vexpress-poweroff.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) Index: b/drivers/power/reset/vexpress-poweroff.c =================================================================== --- a/drivers/power/reset/vexpress-poweroff.c +++ b/drivers/power/reset/vexpress-poweroff.c @@ -17,6 +17,7 @@ #include <linux/platform_device.h> #include <linux/stat.h> #include <linux/vexpress.h> +#include <linux/machine_reset.h> #include <asm/system_misc.h> @@ -75,58 +76,52 @@ DEVICE_ATTR(active, S_IRUGO | S_IWUSR, v vexpress_reset_active_store); -enum vexpress_reset_func { FUNC_RESET, FUNC_SHUTDOWN, FUNC_REBOOT }; - static struct of_device_id vexpress_reset_of_match[] = { { .compatible = "arm,vexpress-reset", - .data = (void *)FUNC_RESET, + .data = (void *) RESET_RESTART, }, { .compatible = "arm,vexpress-shutdown", - .data = (void *)FUNC_SHUTDOWN + .data = (void *) RESET_POWER_OFF, }, { .compatible = "arm,vexpress-reboot", - .data = (void *)FUNC_REBOOT + .data = (void *) RESET_RESTART, }, {} }; static int vexpress_reset_probe(struct platform_device *pdev) { - enum vexpress_reset_func func; + enum reset_func func; const struct of_device_id *match = of_match_device(vexpress_reset_of_match, &pdev->dev); if (match) - func = (enum vexpress_reset_func)match->data; + func = (enum reset_func) match->data; else func = pdev->id_entry->driver_data; switch (func) { - case FUNC_SHUTDOWN: + case RESET_POWER_OFF: vexpress_power_off_device = &pdev->dev; pm_power_off = vexpress_power_off; break; - case FUNC_RESET: - if (!vexpress_restart_device) - vexpress_restart_device = &pdev->dev; - arm_pm_restart = vexpress_restart; - device_create_file(&pdev->dev, &dev_attr_active); - break; - case FUNC_REBOOT: + case RESET_RESTART: vexpress_restart_device = &pdev->dev; arm_pm_restart = vexpress_restart; device_create_file(&pdev->dev, &dev_attr_active); break; + default: + return -EINVAL; }; return 0; } static const struct platform_device_id vexpress_reset_id_table[] = { - { .name = "vexpress-reset", .driver_data = FUNC_RESET, }, - { .name = "vexpress-shutdown", .driver_data = FUNC_SHUTDOWN, }, - { .name = "vexpress-reboot", .driver_data = FUNC_REBOOT, }, + { .name = "vexpress-reset", .driver_data = RESET_RESTART, }, + { .name = "vexpress-shutdown", .driver_data = RESET_POWER_OFF, }, + { .name = "vexpress-reboot", .driver_data = RESET_RESTART, }, {} }; -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html