Thread (10 messages) 10 messages, 2 authors, 2015-05-20

[PATCH] i2c: designware: separate ops for system_sleep_pm and runtime_pm

flat view

From: Jisheng Zhang <hidden>
Date: 2015-05-20 12:42:14
Also in: linux-i2c, lkml

On Wed, 20 May 2015 20:34:30 +0800
Jisheng Zhang [off-list ref] wrote:
Dear Mika,

On Wed, 20 May 2015 15:15:06 +0300
Mika Westerberg [off-list ref] wrote:
quoted
On Wed, May 20, 2015 at 07:34:22PM +0800, Jisheng Zhang wrote:
quoted
Sorry for confusion. Considering one platform which doesn't support power off
the i2c host but it can disable the host's clock. So in such platform, when
the host is runtime suspended, its clock is disabled, then i2c_dw_disable() will
hang when s2ram.
Right. This happens also when the platform powers off the device.
quoted
Except using the runtime pm API to ensure the host is in
a correct state, is there any other solution? AFAIK, 'dev->power.direct_complete'
doesn't help such case.
What I had in mind is something like below:

static int i2c_dw_prepare(struct device *dev)
{
	return pm_runtime_suspended(dev);
}

static void i2c_dw_complete(struct device *dev)
{
	if (dev->power.direct_complete)
		pm_request_resume(dev);
}

In other words it checks if the device is already runtime suspended and
prevents ->suspend() etc. from being called.
What amazing! I wrote the same code as yours after sending out the last email.
quoted
If that does not work (I didn't try as this problem does not exist on
It works! How to submit the patch? Do you mind if I cook the patch and add
you signed-off?
PS: If you cook the patch instead,  feel free to add my acked-by and tested-by

Thanks a lot for the direct_complete idea,
Jisheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help