Input: synaptics-rmi4 - Add I2C wakeup support

Started by Loic Poulain on Nov 16, 2021 · 2 messages from 1 author · Last reply Jan 14, 2022

Subsystems (2)

Maintainers (2)

STALE1765d

open the first message on its own page

Message details and related content
This adds wakeup capability to the I2C bus, and prevents regulator
shutdown when activated.

Signed-off-by: Loic Poulain <redacted>
---
 drivers/input/rmi4/rmi_i2c.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/drivers/input/rmi4/rmi_i2c.c b/drivers/input/rmi4/rmi_i2c.c
index 50305fc..dc70ea0 100644
--- a/drivers/input/rmi4/rmi_i2c.c
+++ b/drivers/input/rmi4/rmi_i2c.c
@@ -273,6 +273,8 @@ static int rmi_i2c_probe(struct i2c_client *client,
 
 	dev_info(&client->dev, "registering I2C-connected sensor\n");
 
+	device_init_wakeup(&client->dev, true);
+
 	error = rmi_register_transport_device(&rmi_i2c->xport);
 	if (error) {
 		dev_err(&client->dev, "failed to register sensor: %d\n", error);
@@ -299,8 +301,10 @@ static int rmi_i2c_suspend(struct device *dev)
 	if (ret)
 		dev_warn(dev, "Failed to resume device: %d\n", ret);
 
-	regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
-			       rmi_i2c->supplies);
+	if (!device_may_wakeup(dev)) {
+		regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
+				       rmi_i2c->supplies);
+	}
 
 	return ret;
 }
@@ -311,12 +315,14 @@ static int rmi_i2c_resume(struct device *dev)
 	struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
 	int ret;
 
-	ret = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
-				    rmi_i2c->supplies);
-	if (ret)
-		return ret;
+	if (!device_may_wakeup(dev)) {
+		ret = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
+					    rmi_i2c->supplies);
+		if (ret)
+			return ret;
 
-	msleep(rmi_i2c->startup_delay);
+		msleep(rmi_i2c->startup_delay);
+	}
 
 	ret = rmi_driver_resume(rmi_i2c->xport.rmi_dev, true);
 	if (ret)
-- 
2.7.4
Message details and related content
Hi Dmitry,

On Tue, 16 Nov 2021 at 18:50, Loic Poulain [off-list ref] wrote:
This adds wakeup capability to the I2C bus, and prevents regulator
shutdown when activated.

Signed-off-by: Loic Poulain <redacted>
---
I Submitted a few changes for rmi4, still in new state. Should I
resend, is there anyone else I can include for review?

Thanks,
Loic
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help