diff options
| -rw-r--r-- | drivers/usb/musb/musb_debugfs.c | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c index 4fef50e5c8c1..dd70c88419d2 100644 --- a/drivers/usb/musb/musb_debugfs.c +++ b/drivers/usb/musb/musb_debugfs.c @@ -114,6 +114,7 @@ static int musb_regdump_show(struct seq_file *s, void *unused)  	unsigned		i;  	seq_printf(s, "MUSB (M)HDRC Register Dump\n"); +	pm_runtime_get_sync(musb->controller);  	for (i = 0; i < ARRAY_SIZE(musb_regmap); i++) {  		switch (musb_regmap[i].size) { @@ -132,6 +133,8 @@ static int musb_regdump_show(struct seq_file *s, void *unused)  		}  	} +	pm_runtime_mark_last_busy(musb->controller); +	pm_runtime_put_autosuspend(musb->controller);  	return 0;  } @@ -145,7 +148,10 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)  	struct musb		*musb = s->private;  	unsigned		test; +	pm_runtime_get_sync(musb->controller);  	test = musb_readb(musb->mregs, MUSB_TESTMODE); +	pm_runtime_mark_last_busy(musb->controller); +	pm_runtime_put_autosuspend(musb->controller);  	if (test & MUSB_TEST_FORCE_HOST)  		seq_printf(s, "force host\n"); @@ -194,11 +200,12 @@ static ssize_t musb_test_mode_write(struct file *file,  	u8			test;  	char			buf[18]; +	pm_runtime_get_sync(musb->controller);  	test = musb_readb(musb->mregs, MUSB_TESTMODE);  	if (test) {  		dev_err(musb->controller, "Error: test mode is already set. "  			"Please do USB Bus Reset to start a new test.\n"); -		return count; +		goto ret;  	}  	memset(buf, 0x00, sizeof(buf)); @@ -234,6 +241,9 @@ static ssize_t musb_test_mode_write(struct file *file,  	musb_writeb(musb->mregs, MUSB_TESTMODE, test); +ret: +	pm_runtime_mark_last_busy(musb->controller); +	pm_runtime_put_autosuspend(musb->controller);  	return count;  } @@ -254,8 +264,13 @@ static int musb_softconnect_show(struct seq_file *s, void *unused)  	switch (musb->xceiv->otg->state) {  	case OTG_STATE_A_HOST:  	case OTG_STATE_A_WAIT_BCON: +		pm_runtime_get_sync(musb->controller); +  		reg = musb_readb(musb->mregs, MUSB_DEVCTL);  		connect = reg & MUSB_DEVCTL_SESSION ? 1 : 0; + +		pm_runtime_mark_last_busy(musb->controller); +		pm_runtime_put_autosuspend(musb->controller);  		break;  	default:  		connect = -1; @@ -284,6 +299,7 @@ static ssize_t musb_softconnect_write(struct file *file,  	if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))  		return -EFAULT; +	pm_runtime_get_sync(musb->controller);  	if (!strncmp(buf, "0", 1)) {  		switch (musb->xceiv->otg->state) {  		case OTG_STATE_A_HOST: @@ -314,6 +330,8 @@ static ssize_t musb_softconnect_write(struct file *file,  		}  	} +	pm_runtime_mark_last_busy(musb->controller); +	pm_runtime_put_autosuspend(musb->controller);  	return count;  } | 
