diff options
author | Wolfram Sang <wsa+renesas@sang-engineering.com> | 2018-12-19 11:48:25 -0500 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2019-01-08 15:02:52 -0500 |
commit | 2088716f90d160e735a469b8e1d0653facd74f16 (patch) | |
tree | 07e52669f32d49db57bc7984b7e3da021da5fee7 | |
parent | d5c95bd6f3254e23736c48ff8f6c69c470b910a4 (diff) |
i2c: s3c2410: 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.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-rw-r--r-- | drivers/i2c/busses/i2c-s3c2410.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index 2f2e28d60ef5..53bc021f4a5a 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c | |||
@@ -104,7 +104,6 @@ enum s3c24xx_i2c_state { | |||
104 | struct s3c24xx_i2c { | 104 | struct s3c24xx_i2c { |
105 | wait_queue_head_t wait; | 105 | wait_queue_head_t wait; |
106 | kernel_ulong_t quirks; | 106 | kernel_ulong_t quirks; |
107 | unsigned int suspended:1; | ||
108 | 107 | ||
109 | struct i2c_msg *msg; | 108 | struct i2c_msg *msg; |
110 | unsigned int msg_num; | 109 | unsigned int msg_num; |
@@ -703,9 +702,6 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, | |||
703 | unsigned long timeout; | 702 | unsigned long timeout; |
704 | int ret; | 703 | int ret; |
705 | 704 | ||
706 | if (i2c->suspended) | ||
707 | return -EIO; | ||
708 | |||
709 | ret = s3c24xx_i2c_set_master(i2c); | 705 | ret = s3c24xx_i2c_set_master(i2c); |
710 | if (ret != 0) { | 706 | if (ret != 0) { |
711 | dev_err(i2c->dev, "cannot get bus (error %d)\n", ret); | 707 | dev_err(i2c->dev, "cannot get bus (error %d)\n", ret); |
@@ -1246,7 +1242,7 @@ static int s3c24xx_i2c_suspend_noirq(struct device *dev) | |||
1246 | { | 1242 | { |
1247 | struct s3c24xx_i2c *i2c = dev_get_drvdata(dev); | 1243 | struct s3c24xx_i2c *i2c = dev_get_drvdata(dev); |
1248 | 1244 | ||
1249 | i2c->suspended = 1; | 1245 | i2c_mark_adapter_suspended(&i2c->adap); |
1250 | 1246 | ||
1251 | if (!IS_ERR(i2c->sysreg)) | 1247 | if (!IS_ERR(i2c->sysreg)) |
1252 | regmap_read(i2c->sysreg, EXYNOS5_SYS_I2C_CFG, &i2c->sys_i2c_cfg); | 1248 | regmap_read(i2c->sysreg, EXYNOS5_SYS_I2C_CFG, &i2c->sys_i2c_cfg); |
@@ -1267,7 +1263,7 @@ static int s3c24xx_i2c_resume_noirq(struct device *dev) | |||
1267 | return ret; | 1263 | return ret; |
1268 | s3c24xx_i2c_init(i2c); | 1264 | s3c24xx_i2c_init(i2c); |
1269 | clk_disable(i2c->clk); | 1265 | clk_disable(i2c->clk); |
1270 | i2c->suspended = 0; | 1266 | i2c_mark_adapter_resumed(&i2c->adap); |
1271 | 1267 | ||
1272 | return 0; | 1268 | return 0; |
1273 | } | 1269 | } |