Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

power: reset: gpio-poweroff: make sys handler priority configurable

Add a priority property equal to gpio-restart to allow increasing the
priority of the gpio-poweroff handler.

Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Link: https://lore.kernel.org/r/20231006130428.11259-5-francesco@dolcini.it
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>

authored by

Stefan Eichenberger and committed by
Sebastian Reichel
d03d2a8c 4ee17bd3

+7 -2
+7 -2
drivers/power/reset/gpio-poweroff.c
··· 54 54 struct gpio_poweroff *gpio_poweroff; 55 55 bool input = false; 56 56 enum gpiod_flags flags; 57 + int priority = SYS_OFF_PRIO_DEFAULT; 57 58 int ret; 58 59 59 60 gpio_poweroff = devm_kzalloc(&pdev->dev, sizeof(*gpio_poweroff), GFP_KERNEL); ··· 76 75 device_property_read_u32(&pdev->dev, "inactive-delay-ms", 77 76 &gpio_poweroff->inactive_delay_ms); 78 77 device_property_read_u32(&pdev->dev, "timeout-ms", &gpio_poweroff->timeout_ms); 78 + device_property_read_u32(&pdev->dev, "priority", &priority); 79 + if (priority > 255) { 80 + dev_err(&pdev->dev, "Invalid priority property: %u\n", priority); 81 + return -EINVAL; 82 + } 79 83 80 84 gpio_poweroff->reset_gpio = devm_gpiod_get(&pdev->dev, NULL, flags); 81 85 if (IS_ERR(gpio_poweroff->reset_gpio)) 82 86 return PTR_ERR(gpio_poweroff->reset_gpio); 83 87 84 88 ret = devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_POWER_OFF, 85 - SYS_OFF_PRIO_DEFAULT, gpio_poweroff_do_poweroff, 86 - gpio_poweroff); 89 + priority, gpio_poweroff_do_poweroff, gpio_poweroff); 87 90 if (ret) 88 91 return dev_err_probe(&pdev->dev, ret, "Cannot register poweroff handler\n"); 89 92