* [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed
@ 2015-11-05 23:37 Andrew Duggan
2015-11-09 12:58 ` Linus Walleij
2015-11-09 23:14 ` Dmitry Torokhov
0 siblings, 2 replies; 4+ messages in thread
From: Andrew Duggan @ 2015-11-05 23:37 UTC (permalink / raw)
To: linux-input, linux-kernel
Cc: Benjamin Tissoires, Dmitry Torokhov, Linus Walleij,
Benjamin Tissoires, Christopher Heiny, Stephen Chandler Paul
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Host Notify does not work with neither IRQ nor polling. Allow a RMI4 driver
to request or not polling depending on the attn_gpio.
When neither the internal IRQ or polling systems are used, the
transport driver can call rmi_process_interrupt_requests() to
trigger a process of the alert.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew Duggan <aduggan@synaptics.com>
---
drivers/input/rmi4/rmi_driver.c | 18 +++++++++---------
drivers/input/rmi4/rmi_driver.h | 3 +++
include/linux/rmi.h | 3 +++
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index 95f9386..2fdc7e8 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -67,15 +67,13 @@ static irqreturn_t rmi_irq_thread(int irq, void *p)
return IRQ_HANDLED;
}
-static int process_interrupt_requests(struct rmi_device *rmi_dev);
-
static void rmi_poll_work(struct work_struct *work)
{
struct rmi_driver_data *data =
container_of(work, struct rmi_driver_data, poll_work);
struct rmi_device *rmi_dev = data->rmi_dev;
- process_interrupt_requests(rmi_dev);
+ rmi_process_interrupt_requests(rmi_dev);
}
/*
@@ -124,7 +122,7 @@ static void disable_sensor(struct rmi_device *rmi_dev)
if (!data->enabled)
return;
- if (!data->irq)
+ if (data->polling)
disable_polling(rmi_dev);
if (rmi_dev->xport->ops->disable_device)
@@ -163,7 +161,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
dev_name(&rmi_dev->dev), xport);
if (retval)
return retval;
- } else {
+ } else if (data->polling) {
retval = enable_polling(rmi_dev);
if (retval < 0)
return retval;
@@ -171,7 +169,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
data->enabled = true;
- return process_interrupt_requests(rmi_dev);
+ return rmi_process_interrupt_requests(rmi_dev);
}
static void rmi_free_function_list(struct rmi_device *rmi_dev)
@@ -274,7 +272,7 @@ static void process_one_interrupt(struct rmi_driver_data *data,
}
}
-static int process_interrupt_requests(struct rmi_device *rmi_dev)
+int rmi_process_interrupt_requests(struct rmi_device *rmi_dev)
{
struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
struct device *dev = &rmi_dev->dev;
@@ -315,6 +313,7 @@ static int process_interrupt_requests(struct rmi_device *rmi_dev)
return 0;
}
+EXPORT_SYMBOL_GPL(rmi_process_interrupt_requests);
/**
* rmi_driver_set_input_params - set input device id and other data.
@@ -421,7 +420,7 @@ static int rmi_driver_irq_handler(struct rmi_device *rmi_dev, int irq)
return 0;
}
- return process_interrupt_requests(rmi_dev);
+ return rmi_process_interrupt_requests(rmi_dev);
}
static int rmi_driver_reset_handler(struct rmi_device *rmi_dev)
@@ -949,10 +948,11 @@ static int rmi_driver_probe(struct device *dev)
}
}
}
- } else {
+ } else if (pdata->attn_gpio == RMI_POLLING) {
data->poll_interval = ktime_set(0,
(pdata->poll_interval_ms ? pdata->poll_interval_ms :
DEFAULT_POLL_INTERVAL_MS) * 1000 * 1000);
+ data->polling = true;
}
if (data->f01_container->dev.driver) {
diff --git a/drivers/input/rmi4/rmi_driver.h b/drivers/input/rmi4/rmi_driver.h
index 36ca34b..8a2d91a 100644
--- a/drivers/input/rmi4/rmi_driver.h
+++ b/drivers/input/rmi4/rmi_driver.h
@@ -43,6 +43,7 @@ struct rmi_driver_data {
u32 attn_count;
u32 irq_debug; /* Should be bool, but debugfs wants u32 */
bool gpio_held;
+ bool polling;
int irq;
int irq_flags;
int num_of_irq_regs;
@@ -115,6 +116,8 @@ bool rmi_is_physical_driver(struct device_driver *);
int rmi_register_physical_driver(void);
void rmi_unregister_physical_driver(void);
+int rmi_process_interrupt_requests(struct rmi_device *rmi_dev);
+
int rmi_register_f01_handler(void);
void rmi_unregister_f01_handler(void);
char *rmi_f01_get_product_ID(struct rmi_function *fn);
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
index 1d22985..b771f41 100644
--- a/include/linux/rmi.h
+++ b/include/linux/rmi.h
@@ -23,6 +23,9 @@
#include <linux/wait.h>
#include <linux/debugfs.h>
+#define RMI_POLLING -1
+#define RMI_CUSTOM_IRQ -2
+
enum rmi_attn_polarity {
RMI_ATTN_ACTIVE_LOW = 0,
RMI_ATTN_ACTIVE_HIGH = 1
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed
2015-11-05 23:37 [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed Andrew Duggan
@ 2015-11-09 12:58 ` Linus Walleij
2015-11-09 23:14 ` Dmitry Torokhov
1 sibling, 0 replies; 4+ messages in thread
From: Linus Walleij @ 2015-11-09 12:58 UTC (permalink / raw)
To: Andrew Duggan
Cc: Linux Input, linux-kernel@vger.kernel.org, Benjamin Tissoires,
Dmitry Torokhov, Benjamin Tissoires, Christopher Heiny,
Stephen Chandler Paul
On Fri, Nov 6, 2015 at 12:37 AM, Andrew Duggan <aduggan@synaptics.com> wrote:
> From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
>
> Host Notify does not work with neither IRQ nor polling. Allow a RMI4 driver
> to request or not polling depending on the attn_gpio.
>
> When neither the internal IRQ or polling systems are used, the
> transport driver can call rmi_process_interrupt_requests() to
> trigger a process of the alert.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> Tested-by: Andrew Duggan <aduggan@synaptics.com>
(...)
> + } else if (pdata->attn_gpio == RMI_POLLING) {
(...)
> +#define RMI_POLLING -1
Aeuck ... this thing should be rewritten to use GPIO descriptors
instead of this old number-based stuff.
I'll go in and see if I can take a stab at it.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed
2015-11-05 23:37 [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed Andrew Duggan
2015-11-09 12:58 ` Linus Walleij
@ 2015-11-09 23:14 ` Dmitry Torokhov
1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2015-11-09 23:14 UTC (permalink / raw)
To: Andrew Duggan
Cc: linux-input, linux-kernel, Benjamin Tissoires, Linus Walleij,
Benjamin Tissoires, Christopher Heiny, Stephen Chandler Paul
On Thu, Nov 05, 2015 at 03:37:12PM -0800, Andrew Duggan wrote:
> From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
>
> Host Notify does not work with neither IRQ nor polling. Allow a RMI4 driver
> to request or not polling depending on the attn_gpio.
>
> When neither the internal IRQ or polling systems are used, the
> transport driver can call rmi_process_interrupt_requests() to
> trigger a process of the alert.
I'd love to get rid of polling altogether...
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> Tested-by: Andrew Duggan <aduggan@synaptics.com>
> ---
> drivers/input/rmi4/rmi_driver.c | 18 +++++++++---------
> drivers/input/rmi4/rmi_driver.h | 3 +++
> include/linux/rmi.h | 3 +++
> 3 files changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
> index 95f9386..2fdc7e8 100644
> --- a/drivers/input/rmi4/rmi_driver.c
> +++ b/drivers/input/rmi4/rmi_driver.c
> @@ -67,15 +67,13 @@ static irqreturn_t rmi_irq_thread(int irq, void *p)
> return IRQ_HANDLED;
> }
>
> -static int process_interrupt_requests(struct rmi_device *rmi_dev);
> -
> static void rmi_poll_work(struct work_struct *work)
> {
> struct rmi_driver_data *data =
> container_of(work, struct rmi_driver_data, poll_work);
> struct rmi_device *rmi_dev = data->rmi_dev;
>
> - process_interrupt_requests(rmi_dev);
> + rmi_process_interrupt_requests(rmi_dev);
> }
>
> /*
> @@ -124,7 +122,7 @@ static void disable_sensor(struct rmi_device *rmi_dev)
> if (!data->enabled)
> return;
>
> - if (!data->irq)
> + if (data->polling)
> disable_polling(rmi_dev);
>
> if (rmi_dev->xport->ops->disable_device)
> @@ -163,7 +161,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
> dev_name(&rmi_dev->dev), xport);
> if (retval)
> return retval;
> - } else {
> + } else if (data->polling) {
> retval = enable_polling(rmi_dev);
> if (retval < 0)
> return retval;
> @@ -171,7 +169,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
>
> data->enabled = true;
>
> - return process_interrupt_requests(rmi_dev);
> + return rmi_process_interrupt_requests(rmi_dev);
> }
>
> static void rmi_free_function_list(struct rmi_device *rmi_dev)
> @@ -274,7 +272,7 @@ static void process_one_interrupt(struct rmi_driver_data *data,
> }
> }
>
> -static int process_interrupt_requests(struct rmi_device *rmi_dev)
> +int rmi_process_interrupt_requests(struct rmi_device *rmi_dev)
> {
> struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
> struct device *dev = &rmi_dev->dev;
> @@ -315,6 +313,7 @@ static int process_interrupt_requests(struct rmi_device *rmi_dev)
>
> return 0;
> }
> +EXPORT_SYMBOL_GPL(rmi_process_interrupt_requests);
>
> /**
> * rmi_driver_set_input_params - set input device id and other data.
> @@ -421,7 +420,7 @@ static int rmi_driver_irq_handler(struct rmi_device *rmi_dev, int irq)
> return 0;
> }
>
> - return process_interrupt_requests(rmi_dev);
> + return rmi_process_interrupt_requests(rmi_dev);
> }
>
> static int rmi_driver_reset_handler(struct rmi_device *rmi_dev)
> @@ -949,10 +948,11 @@ static int rmi_driver_probe(struct device *dev)
> }
> }
> }
> - } else {
> + } else if (pdata->attn_gpio == RMI_POLLING) {
> data->poll_interval = ktime_set(0,
> (pdata->poll_interval_ms ? pdata->poll_interval_ms :
> DEFAULT_POLL_INTERVAL_MS) * 1000 * 1000);
> + data->polling = true;
> }
>
> if (data->f01_container->dev.driver) {
> diff --git a/drivers/input/rmi4/rmi_driver.h b/drivers/input/rmi4/rmi_driver.h
> index 36ca34b..8a2d91a 100644
> --- a/drivers/input/rmi4/rmi_driver.h
> +++ b/drivers/input/rmi4/rmi_driver.h
> @@ -43,6 +43,7 @@ struct rmi_driver_data {
> u32 attn_count;
> u32 irq_debug; /* Should be bool, but debugfs wants u32 */
> bool gpio_held;
> + bool polling;
> int irq;
> int irq_flags;
> int num_of_irq_regs;
> @@ -115,6 +116,8 @@ bool rmi_is_physical_driver(struct device_driver *);
> int rmi_register_physical_driver(void);
> void rmi_unregister_physical_driver(void);
>
> +int rmi_process_interrupt_requests(struct rmi_device *rmi_dev);
> +
> int rmi_register_f01_handler(void);
> void rmi_unregister_f01_handler(void);
> char *rmi_f01_get_product_ID(struct rmi_function *fn);
> diff --git a/include/linux/rmi.h b/include/linux/rmi.h
> index 1d22985..b771f41 100644
> --- a/include/linux/rmi.h
> +++ b/include/linux/rmi.h
> @@ -23,6 +23,9 @@
> #include <linux/wait.h>
> #include <linux/debugfs.h>
>
> +#define RMI_POLLING -1
> +#define RMI_CUSTOM_IRQ -2
> +
> enum rmi_attn_polarity {
> RMI_ATTN_ACTIVE_LOW = 0,
> RMI_ATTN_ACTIVE_HIGH = 1
> --
> 2.1.4
>
--
Dmitry
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 00/26] Consolidate patches and add support for new devices
@ 2015-11-05 23:34 Andrew Duggan
2015-11-05 23:34 ` [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed Andrew Duggan
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Duggan @ 2015-11-05 23:34 UTC (permalink / raw)
To: linux-input, linux-kernel
Cc: Andrew Duggan, Dmitry Torokhov, Linus Walleij, Benjamin Tissoires,
Christopher Heiny, Stephen Chandler Paul
NOTE: This patch set applies to synaptics-rmi4 branch in
Dmitry Torokhov's input tree.
This patch set consolidates some outstanding patches and then builds on
that to add support for new devices. The first 11 patches were provided
by Benjamin Tissoires with slight modifications. The remainder of the
patches remove unused functionality, consolidates the code for
2D sensors, and adds support for newer devices which use F12 for
reporting 2D sensing.
This patchset applies cleanly to the synaptics-rmi4 branch, but does not
successfully build because the synaptics-rmi4 branch is based on the 3.14
kernel and the patches make use of functionality introduced in later
kernels. I would suggest updating the synaptics-rmi4 branch to something
more resent. I also have some additional patches which convert hid-rmi
into a transport driver for rmi_core. I held off submitting since 3.14
doesn't contain hid-rmi. However, if we want to stick with 3.14 I can
make the appropriate modifications.
Thanks,
Andrew
Andrew Duggan (14):
Input: synaptics-rmi4: Use generic interrupt handling
Input: synaptics-rmi4: Add device tree support for RMI4 I2C devices
Input: synaptics-rmi4: Clean up Makefile
Input: synaptics-rmi4: Remove unused debugfs code
Input: synaptics-rmi4: Use ifdef to check if CONFIG_PM_SLEEP is set
Input: synaptics-rmi4: Remove unused firmware_name variable
Input: synaptics-rmi4: Add SPI transport driver
Input: synaptics-rmi4: Add support for packet register descriptors
Input: synaptics-rmi4: Create common functions for 2D sensors
Input: synaptics-rmi4: Add support for F12
Input: synaptics-rmi4: move structures and definitions to rmi.h
Input: synaptics-rmi4: use device managed memory for the data packet
buffer
Input: synaptics-rmi4: remove sensor_name in platform data
Input: synaptics-rmi4: Change the rmi device's name to be less generic
Benjamin Tissoires (12):
Input: synaptics-rmi4 - embed the function modules in rmi_core
Input: synaptics-rmi4 - add a common input device in rmi_driver
Input: synaptics-rmi4 - explicitly request polling when needed
Input: synaptics-rmi4 - prevent oopses when irq arrives while the
device is not bound
Input: synaptics-rmi4 - call rmi_driver_process_config_requests in
enable_sensor
Input: synaptics-rmi4 - add a reset callback
Input: synaptics-rmi4 - f11: fix bitmap irq check
Input: synaptics-rmi4 - f11: use the unified input node if available
Input: synaptics-rmi4 - f11: clean up rmi_f11_finger_handler
Input: synaptics-rmi4 - f11: allow the top software button property to
be set
Input: synaptics-rmi4 - f11: add support for kernel tracking
Input: synaptics-rmi4 - Add F30 support
.../bindings/input/rmi4/rmi_2d_sensor.txt | 55 +++
.../devicetree/bindings/input/rmi4/rmi_f01.txt | 40 ++
.../devicetree/bindings/input/rmi4/rmi_i2c.txt | 55 +++
.../devicetree/bindings/input/rmi4/rmi_spi.txt | 57 +++
.../devicetree/bindings/vendor-prefixes.txt | 1 +
drivers/input/rmi4/Kconfig | 47 +-
drivers/input/rmi4/Makefile | 23 +-
drivers/input/rmi4/rmi_2d_sensor.c | 370 ++++++++++++++
drivers/input/rmi4/rmi_2d_sensor.h | 87 ++++
drivers/input/rmi4/rmi_bus.c | 205 ++++----
drivers/input/rmi4/rmi_bus.h | 129 +----
drivers/input/rmi4/rmi_driver.c | 468 +++++++++++++-----
drivers/input/rmi4/rmi_driver.h | 119 ++---
drivers/input/rmi4/rmi_f01.c | 57 ++-
drivers/input/rmi4/rmi_f11.c | 540 ++++++---------------
drivers/input/rmi4/rmi_f12.c | 461 ++++++++++++++++++
drivers/input/rmi4/rmi_f30.c | 403 +++++++++++++++
drivers/input/rmi4/rmi_i2c.c | 62 +--
drivers/input/rmi4/rmi_spi.c | 464 ++++++++++++++++++
include/linux/rmi.h | 270 +++++++++--
20 files changed, 3027 insertions(+), 886 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_2d_sensor.txt
create mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_f01.txt
create mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_i2c.txt
create mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_spi.txt
create mode 100644 drivers/input/rmi4/rmi_2d_sensor.c
create mode 100644 drivers/input/rmi4/rmi_2d_sensor.h
create mode 100644 drivers/input/rmi4/rmi_f12.c
create mode 100644 drivers/input/rmi4/rmi_f30.c
create mode 100644 drivers/input/rmi4/rmi_spi.c
--
2.1.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed
2015-11-05 23:34 [PATCH 00/26] Consolidate patches and add support for new devices Andrew Duggan
@ 2015-11-05 23:34 ` Andrew Duggan
0 siblings, 0 replies; 4+ messages in thread
From: Andrew Duggan @ 2015-11-05 23:34 UTC (permalink / raw)
To: linux-input, linux-kernel
Cc: Benjamin Tissoires, Dmitry Torokhov, Linus Walleij,
Benjamin Tissoires, Christopher Heiny, Stephen Chandler Paul
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Host Notify does not work with neither IRQ nor polling. Allow a RMI4 driver
to request or not polling depending on the attn_gpio.
When neither the internal IRQ or polling systems are used, the
transport driver can call rmi_process_interrupt_requests() to
trigger a process of the alert.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew Duggan <aduggan@synaptics.com>
---
drivers/input/rmi4/rmi_driver.c | 18 +++++++++---------
drivers/input/rmi4/rmi_driver.h | 3 +++
include/linux/rmi.h | 3 +++
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index 95f9386..2fdc7e8 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -67,15 +67,13 @@ static irqreturn_t rmi_irq_thread(int irq, void *p)
return IRQ_HANDLED;
}
-static int process_interrupt_requests(struct rmi_device *rmi_dev);
-
static void rmi_poll_work(struct work_struct *work)
{
struct rmi_driver_data *data =
container_of(work, struct rmi_driver_data, poll_work);
struct rmi_device *rmi_dev = data->rmi_dev;
- process_interrupt_requests(rmi_dev);
+ rmi_process_interrupt_requests(rmi_dev);
}
/*
@@ -124,7 +122,7 @@ static void disable_sensor(struct rmi_device *rmi_dev)
if (!data->enabled)
return;
- if (!data->irq)
+ if (data->polling)
disable_polling(rmi_dev);
if (rmi_dev->xport->ops->disable_device)
@@ -163,7 +161,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
dev_name(&rmi_dev->dev), xport);
if (retval)
return retval;
- } else {
+ } else if (data->polling) {
retval = enable_polling(rmi_dev);
if (retval < 0)
return retval;
@@ -171,7 +169,7 @@ static int enable_sensor(struct rmi_device *rmi_dev)
data->enabled = true;
- return process_interrupt_requests(rmi_dev);
+ return rmi_process_interrupt_requests(rmi_dev);
}
static void rmi_free_function_list(struct rmi_device *rmi_dev)
@@ -274,7 +272,7 @@ static void process_one_interrupt(struct rmi_driver_data *data,
}
}
-static int process_interrupt_requests(struct rmi_device *rmi_dev)
+int rmi_process_interrupt_requests(struct rmi_device *rmi_dev)
{
struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
struct device *dev = &rmi_dev->dev;
@@ -315,6 +313,7 @@ static int process_interrupt_requests(struct rmi_device *rmi_dev)
return 0;
}
+EXPORT_SYMBOL_GPL(rmi_process_interrupt_requests);
/**
* rmi_driver_set_input_params - set input device id and other data.
@@ -421,7 +420,7 @@ static int rmi_driver_irq_handler(struct rmi_device *rmi_dev, int irq)
return 0;
}
- return process_interrupt_requests(rmi_dev);
+ return rmi_process_interrupt_requests(rmi_dev);
}
static int rmi_driver_reset_handler(struct rmi_device *rmi_dev)
@@ -949,10 +948,11 @@ static int rmi_driver_probe(struct device *dev)
}
}
}
- } else {
+ } else if (pdata->attn_gpio == RMI_POLLING) {
data->poll_interval = ktime_set(0,
(pdata->poll_interval_ms ? pdata->poll_interval_ms :
DEFAULT_POLL_INTERVAL_MS) * 1000 * 1000);
+ data->polling = true;
}
if (data->f01_container->dev.driver) {
diff --git a/drivers/input/rmi4/rmi_driver.h b/drivers/input/rmi4/rmi_driver.h
index 36ca34b..8a2d91a 100644
--- a/drivers/input/rmi4/rmi_driver.h
+++ b/drivers/input/rmi4/rmi_driver.h
@@ -43,6 +43,7 @@ struct rmi_driver_data {
u32 attn_count;
u32 irq_debug; /* Should be bool, but debugfs wants u32 */
bool gpio_held;
+ bool polling;
int irq;
int irq_flags;
int num_of_irq_regs;
@@ -115,6 +116,8 @@ bool rmi_is_physical_driver(struct device_driver *);
int rmi_register_physical_driver(void);
void rmi_unregister_physical_driver(void);
+int rmi_process_interrupt_requests(struct rmi_device *rmi_dev);
+
int rmi_register_f01_handler(void);
void rmi_unregister_f01_handler(void);
char *rmi_f01_get_product_ID(struct rmi_function *fn);
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
index 1d22985..b771f41 100644
--- a/include/linux/rmi.h
+++ b/include/linux/rmi.h
@@ -23,6 +23,9 @@
#include <linux/wait.h>
#include <linux/debugfs.h>
+#define RMI_POLLING -1
+#define RMI_CUSTOM_IRQ -2
+
enum rmi_attn_polarity {
RMI_ATTN_ACTIVE_LOW = 0,
RMI_ATTN_ACTIVE_HIGH = 1
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-09 23:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-05 23:37 [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed Andrew Duggan
2015-11-09 12:58 ` Linus Walleij
2015-11-09 23:14 ` Dmitry Torokhov
-- strict thread matches above, loose matches on Subject: below --
2015-11-05 23:34 [PATCH 00/26] Consolidate patches and add support for new devices Andrew Duggan
2015-11-05 23:34 ` [PATCH 03/26] Input: synaptics-rmi4 - explicitly request polling when needed Andrew Duggan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).