Hi Tony, On Wed, Jan 06, 2021 at 02:58:22PM +0200, Tony Lindgren wrote: > Simplify probe with devm. [...] > /* input device allocation */ > - keypad_data->input = input_dev = input_allocate_device(); > + keypad_data->input = input_dev = devm_input_allocate_device(&pdev->dev); > if (!input_dev) { > error = -ENOMEM; > goto err_pm_disable; [...] > static int omap4_keypad_remove(struct platform_device *pdev) > { > struct omap4_keypad *keypad_data = platform_get_drvdata(pdev); > - struct resource *res; > > dev_pm_clear_wake_irq(&pdev->dev); > - > - free_irq(keypad_data->irq, keypad_data); > - > pm_runtime_dont_use_autosuspend(&pdev->dev); > pm_runtime_disable(&pdev->dev); > - > input_unregister_device(keypad_data->input); not needed: * devm_input_allocate_device - allocate managed input device * @dev: device owning the input device being created * * Returns prepared struct input_dev or %NULL. * * Managed input devices do not need to be explicitly unregistered or * freed as it will be done automatically when owner device unbinds from * its driver (or binding fails). [...] -- Sebastian