提交 5601df35 编写于 作者: W Wolfram Sang 提交者: Wolfram Sang

i2c: zx2967: use core helper to mark adapter suspended

Rejecting transfers should be handled by the core. Also, this will
ensure proper locking which was forgotten in this open coded version
and make sure resume mark is set after enabling clocks (not before).
Signed-off-by: NWolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: NShawn Guo <shawnguo@kernel.org>
Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
上级 f2e0d28c
...@@ -66,7 +66,6 @@ struct zx2967_i2c { ...@@ -66,7 +66,6 @@ struct zx2967_i2c {
int msg_rd; int msg_rd;
u8 *cur_trans; u8 *cur_trans;
u8 access_cnt; u8 access_cnt;
bool is_suspended;
int error; int error;
}; };
...@@ -313,9 +312,6 @@ static int zx2967_i2c_xfer(struct i2c_adapter *adap, ...@@ -313,9 +312,6 @@ static int zx2967_i2c_xfer(struct i2c_adapter *adap,
int ret; int ret;
int i; int i;
if (i2c->is_suspended)
return -EBUSY;
zx2967_set_addr(i2c, msgs->addr); zx2967_set_addr(i2c, msgs->addr);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
...@@ -470,7 +466,7 @@ static int __maybe_unused zx2967_i2c_suspend(struct device *dev) ...@@ -470,7 +466,7 @@ static int __maybe_unused zx2967_i2c_suspend(struct device *dev)
{ {
struct zx2967_i2c *i2c = dev_get_drvdata(dev); struct zx2967_i2c *i2c = dev_get_drvdata(dev);
i2c->is_suspended = true; i2c_mark_adapter_suspended(&i2c->adap);
clk_disable_unprepare(i2c->clk); clk_disable_unprepare(i2c->clk);
return 0; return 0;
...@@ -480,8 +476,8 @@ static int __maybe_unused zx2967_i2c_resume(struct device *dev) ...@@ -480,8 +476,8 @@ static int __maybe_unused zx2967_i2c_resume(struct device *dev)
{ {
struct zx2967_i2c *i2c = dev_get_drvdata(dev); struct zx2967_i2c *i2c = dev_get_drvdata(dev);
i2c->is_suspended = false;
clk_prepare_enable(i2c->clk); clk_prepare_enable(i2c->clk);
i2c_mark_adapter_resumed(&i2c->adap);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册