diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-01-08 12:10:31 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-01-09 12:07:56 -0500 |
| commit | b666263b71cb1f3b96fb79e69de7f119062b0da2 (patch) | |
| tree | 3bc8324eb817042d2eef13f459a7d2b668892fd3 | |
| parent | bec7a4bbecf7da86b6e64bb78d22c92ea1ba4afe (diff) | |
Input: document that unregistering managed devices is not necessary
Apparently some users of managed input devices are confused whether
input_unregister_device() is needed when working with them. Clarify
this in the kernel doc for devm_input_allocate_device(): in most cases
there is no need to call neither input_unregister_device() nor
input_free_device() when working with managed devices.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
| -rw-r--r-- | drivers/input/input.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index ce01332f7b3a..c04469928925 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
| @@ -1785,12 +1785,13 @@ static void devm_input_device_release(struct device *dev, void *res) | |||
| 1785 | * its driver (or binding fails). Once managed input device is allocated, | 1785 | * its driver (or binding fails). Once managed input device is allocated, |
| 1786 | * it is ready to be set up and registered in the same fashion as regular | 1786 | * it is ready to be set up and registered in the same fashion as regular |
| 1787 | * input device. There are no special devm_input_device_[un]register() | 1787 | * input device. There are no special devm_input_device_[un]register() |
| 1788 | * variants, regular ones work with both managed and unmanaged devices. | 1788 | * variants, regular ones work with both managed and unmanaged devices, |
| 1789 | * should you need them. In most cases however, managed input device need | ||
| 1790 | * not be explicitly unregistered or freed. | ||
| 1789 | * | 1791 | * |
| 1790 | * NOTE: the owner device is set up as parent of input device and users | 1792 | * NOTE: the owner device is set up as parent of input device and users |
| 1791 | * should not override it. | 1793 | * should not override it. |
| 1792 | */ | 1794 | */ |
| 1793 | |||
| 1794 | struct input_dev *devm_input_allocate_device(struct device *dev) | 1795 | struct input_dev *devm_input_allocate_device(struct device *dev) |
| 1795 | { | 1796 | { |
| 1796 | struct input_dev *input; | 1797 | struct input_dev *input; |
| @@ -2004,6 +2005,17 @@ static void devm_input_device_unregister(struct device *dev, void *res) | |||
| 2004 | * Once device has been successfully registered it can be unregistered | 2005 | * Once device has been successfully registered it can be unregistered |
| 2005 | * with input_unregister_device(); input_free_device() should not be | 2006 | * with input_unregister_device(); input_free_device() should not be |
| 2006 | * called in this case. | 2007 | * called in this case. |
| 2008 | * | ||
| 2009 | * Note that this function is also used to register managed input devices | ||
| 2010 | * (ones allocated with devm_input_allocate_device()). Such managed input | ||
| 2011 | * devices need not be explicitly unregistered or freed, their tear down | ||
| 2012 | * is controlled by the devres infrastructure. It is also worth noting | ||
| 2013 | * that tear down of managed input devices is internally a 2-step process: | ||
| 2014 | * registered managed input device is first unregistered, but stays in | ||
| 2015 | * memory and can still handle input_event() calls (although events will | ||
| 2016 | * not be delivered anywhere). The freeing of managed input device will | ||
| 2017 | * happen later, when devres stack is unwound to the point where device | ||
| 2018 | * allocation was made. | ||
| 2007 | */ | 2019 | */ |
| 2008 | int input_register_device(struct input_dev *dev) | 2020 | int input_register_device(struct input_dev *dev) |
| 2009 | { | 2021 | { |
