Prior to registering and sending the event with an input device, it should be allocated with the input_allocate_device() function. In order to free the previously allocated memory for a non-registered input device, the input_free_device() function should be used. If the device has already been registered, input_unregister_device() should be used instead. Like every function where memory allocation is needed, we can use a resource-managed version of functions:
struct input_dev *input_allocate_device(void) struct input_dev *devm_input_allocate_device(struct device *dev) void input_free_device(struct input_dev *dev) static void devm_input_device_unregister(struct device *dev, void *res) int input_register_device(struct input_dev *dev) void input_unregister_device(struct input_dev *dev...