diff options
author | Li Jun <jun.li@freescale.com> | 2015-07-29 13:11:11 +0800 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2015-10-28 16:38:25 +0100 |
commit | 8855917cdf407bf38284b1b9bffbbcfb265cc8a5 (patch) | |
tree | 6079d8089aeefe5fd7d2cd88d78907218c03f164 | |
parent | 7371373f99d12bfec44b011434525135fd526543 (diff) |
usb: chipidea: debug: add runtime pm for register access
commit bc24937943d9f71a1e32b5dc4e2f0ef8fcc07b64 upstream.
Add runtime pm operations for registers access to avoid system hang.
Signed-off-by: Li Jun <jun.li@freescale.com>
Cc: Oliver Neukum <ONeukum@suse.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r-- | drivers/usb/chipidea/debug.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/debug.c b/drivers/usb/chipidea/debug.c index 92f0cc442d46..eac6a3212de2 100644 --- a/drivers/usb/chipidea/debug.c +++ b/drivers/usb/chipidea/debug.c @@ -62,9 +62,11 @@ static int ci_port_test_show(struct seq_file *s, void *data) unsigned long flags; unsigned mode; + pm_runtime_get_sync(ci->dev); spin_lock_irqsave(&ci->lock, flags); mode = hw_port_test_get(ci); spin_unlock_irqrestore(&ci->lock, flags); + pm_runtime_put_sync(ci->dev); seq_printf(s, "mode = %u\n", mode); @@ -94,9 +96,11 @@ static ssize_t ci_port_test_write(struct file *file, const char __user *ubuf, if (sscanf(buf, "%u", &mode) != 1) return -EINVAL; + pm_runtime_get_sync(ci->dev); spin_lock_irqsave(&ci->lock, flags); ret = hw_port_test_set(ci, mode); spin_unlock_irqrestore(&ci->lock, flags); + pm_runtime_put_sync(ci->dev); return ret ? ret : count; } @@ -238,8 +242,10 @@ static ssize_t ci_role_write(struct file *file, const char __user *ubuf, if (role == CI_ROLE_END || role == ci->role) return -EINVAL; + pm_runtime_get_sync(ci->dev); ci_role_stop(ci); ret = ci_role_start(ci, role); + pm_runtime_put_sync(ci->dev); return ret ? ret : count; } |