Input: synaptics-rmi4 - add rmi_find_function()
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Mon, 6 Feb 2017 17:57:01 +0000 (09:57 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 6 Feb 2017 22:15:42 +0000 (14:15 -0800)
If a function needs to communicate with an other, it's better to have
a way to retrieve this other.

Reviewed-by: Andrew Duggan <aduggan@synaptics.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/rmi4/rmi_driver.c
drivers/input/rmi4/rmi_driver.h

index b398550..23d705b 100644 (file)
@@ -266,6 +266,19 @@ static int rmi_irq_init(struct rmi_device *rmi_dev)
        return 0;
 }
 
+struct rmi_function *rmi_find_function(struct rmi_device *rmi_dev, u8 number)
+{
+       struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
+       struct rmi_function *entry;
+
+       list_for_each_entry(entry, &data->function_list, node) {
+               if (entry->fd.function_number == number)
+                       return entry;
+       }
+
+       return NULL;
+}
+
 static int suspend_one_function(struct rmi_function *fn)
 {
        struct rmi_function_handler *fh;
index a480333..6e0449c 100644 (file)
@@ -93,6 +93,7 @@ bool rmi_is_physical_driver(struct device_driver *);
 int rmi_register_physical_driver(void);
 void rmi_unregister_physical_driver(void);
 void rmi_free_function_list(struct rmi_device *rmi_dev);
+struct rmi_function *rmi_find_function(struct rmi_device *rmi_dev, u8 number);
 int rmi_enable_sensor(struct rmi_device *rmi_dev);
 int rmi_scan_pdt(struct rmi_device *rmi_dev, void *ctx,
                 int (*callback)(struct rmi_device *rmi_dev, void *ctx,