From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: sre@kernel.org
Subject: [PATCH v1.1 5/5] smiapp: Implement support for autosuspend
Date: Tue, 20 Sep 2016 15:29:58 +0300 [thread overview]
Message-ID: <1474374598-32451-1-git-send-email-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <1473938961-16067-6-git-send-email-sakari.ailus@linux.intel.com>
Delay suspending the device by 1000 ms by default.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
since v1:
- Increment usage count before register write using
pm_runtime_get_noresume(), and decrement it before returning. This
avoids a serialisation problem with autosuspend.
drivers/media/i2c/smiapp/smiapp-core.c | 10 +++++++---
drivers/media/i2c/smiapp/smiapp-regs.c | 21 +++++++++++++++------
2 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index f1c95bf..77c0a26 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -1556,7 +1556,8 @@ static int smiapp_set_stream(struct v4l2_subdev *subdev, int enable)
rval = smiapp_stop_streaming(sensor);
sensor->streaming = false;
- pm_runtime_put(&client->dev);
+ pm_runtime_mark_last_busy(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
}
return rval;
@@ -2324,7 +2325,8 @@ smiapp_sysfs_nvm_read(struct device *dev, struct device_attribute *attr,
dev_err(&client->dev, "nvm read failed\n");
return -ENODEV;
}
- pm_runtime_put(&client->dev);
+ pm_runtime_mark_last_busy(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
}
/*
* NVM is still way below a PAGE_SIZE, so we can safely
@@ -3052,7 +3054,9 @@ static int smiapp_probe(struct i2c_client *client,
if (rval < 0)
goto out_media_entity_cleanup;
- pm_runtime_put(&client->dev);
+ pm_runtime_set_autosuspend_delay(&client->dev, 1000);
+ pm_runtime_use_autosuspend(&client->dev);
+ pm_runtime_put_autosuspend(&client->dev);
return 0;
diff --git a/drivers/media/i2c/smiapp/smiapp-regs.c b/drivers/media/i2c/smiapp/smiapp-regs.c
index a9c7baf..ef15478 100644
--- a/drivers/media/i2c/smiapp/smiapp-regs.c
+++ b/drivers/media/i2c/smiapp/smiapp-regs.c
@@ -290,16 +290,25 @@ int smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val)
int smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val)
{
struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
- int rval;
+ int rval = 0;
+
+ pm_runtime_get_noresume(&client->dev);
if (pm_runtime_suspended(&client->dev))
- return 0;
+ goto out;
rval = smiapp_call_quirk(sensor, reg_access, true, ®, &val);
- if (rval == -ENOIOCTLCMD)
- return 0;
+ if (rval == -ENOIOCTLCMD) {
+ rval = 0;
+ goto out;
+ }
if (rval < 0)
- return rval;
+ goto out;
+
+ rval = smiapp_write_no_quirk(sensor, reg, val);
+
+out:
+ pm_runtime_put_autosuspend(&client->dev);
- return smiapp_write_no_quirk(sensor, reg, val);
+ return rval;
}
--
2.7.4
next prev parent reply other threads:[~2016-09-20 12:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-15 11:29 [PATCH 0/5] smiapp: Runtime PM support Sakari Ailus
2016-09-15 11:29 ` [PATCH 1/5] smiapp: Drop BUG_ON() in suspend path Sakari Ailus
2016-09-15 11:29 ` [PATCH 2/5] smiapp: Set device for pixel array and binner Sakari Ailus
2016-09-19 22:55 ` Sebastian Reichel
2016-09-15 11:29 ` [PATCH 3/5] smiapp: Set use suspend and resume ops for other functions Sakari Ailus
2016-09-19 22:54 ` Sebastian Reichel
2016-09-15 11:29 ` [PATCH 4/5] smiapp: Use runtime PM Sakari Ailus
2016-09-15 22:53 ` [PATCH v1.1 " Sakari Ailus
2016-09-19 22:51 ` Sebastian Reichel
2016-09-20 7:50 ` Sakari Ailus
2016-09-27 13:11 ` Sebastian Reichel
2016-10-03 8:55 ` [PATCH v1.2 " Sakari Ailus
2016-09-15 11:29 ` [PATCH 5/5] smiapp: Implement support for autosuspend Sakari Ailus
2016-09-19 22:53 ` Sebastian Reichel
2016-09-20 12:29 ` Sakari Ailus [this message]
2016-09-23 0:14 ` [PATCH v1.1 " Sebastian Reichel
2016-09-23 11:13 ` Sakari Ailus
2016-10-03 8:57 ` [PATCH v1.2 " Sakari Ailus
2016-10-03 9:27 ` [PATCH v1.3 " Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1474374598-32451-1-git-send-email-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=linux-media@vger.kernel.org \
--cc=sre@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.