diff options
author | Guillaume Aubertin <g-aubertin@ti.com> | 2012-12-05 16:44:44 +0100 |
---|---|---|
committer | Xavier Boudet <x-boudet@ti.com> | 2012-12-07 09:12:51 +0100 |
commit | a83677585834e334344abaa3edaa8cfb688465fe (patch) | |
tree | ffa2e1767e1a4216f894f27faa9c1c085ba57142 | |
parent | 6f407174d5afcd52bf6f4c07d3b6c624662adfce (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.c | 25 |
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, |