summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Aubertin <g-aubertin@ti.com>2012-12-05 16:44:44 +0100
committerXavier Boudet <x-boudet@ti.com>2012-12-07 09:12:51 +0100
commita83677585834e334344abaa3edaa8cfb688465fe (patch)
treeffa2e1767e1a4216f894f27faa9c1c085ba57142
parent6f407174d5afcd52bf6f4c07d3b6c624662adfce (diff)
omapdce: sending connect message to wake-up ducati after suspend
After off-mode, ivahd powerdomain is stuck 'ON', and we need to "wake-up" the ducati directly after suspend, so it can reset the ivahd.
-rw-r--r--drivers/staging/omapdce/dce.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/staging/omapdce/dce.c b/drivers/staging/omapdce/dce.c
index 9131f60d8f3e..26f13a9b924f 100644
--- a/drivers/staging/omapdce/dce.c
+++ b/drivers/staging/omapdce/dce.c
@@ -1314,6 +1314,30 @@ static void rpmsg_cb(struct rpmsg_channel *rpdev, void *data,
rpcomplete(data2, len);
}
+static int dce_resume(struct device *dev)
+{
+ struct dce_rpc_connect_req req = {
+ .hdr = MKHDR(CONNECT),
+ .chipset_id = GET_OMAP_TYPE,
+ .debug = drm_debug ? 1 : 3,
+ };
+ int ret;
+
+ /* send resume msg: */
+ ret = rpsend(NULL, NULL, hdr(&req), sizeof(req));
+ if (ret) {
+ DBG("rpsend failed: %d", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static const struct dev_pm_ops dce_pm_ops = {
+ .resume = dce_resume,
+};
+
+
static struct rpmsg_device_id rpmsg_id_table[] = {
{ .name = "rpmsg-dce" },
{ },
@@ -1322,6 +1346,7 @@ static struct rpmsg_device_id rpmsg_id_table[] = {
static struct rpmsg_driver rpmsg_driver = {
.drv.name = KBUILD_MODNAME,
.drv.owner = THIS_MODULE,
+ .drv.pm = &dce_pm_ops,
.id_table = rpmsg_id_table,
.probe = rpmsg_probe,
.callback = rpmsg_cb,