From 5d756112da49af8798620fc788ff4c730c7d5574 Mon Sep 17 00:00:00 2001 From: Wolfram Sang Date: Thu, 25 Apr 2019 16:19:48 +0200 Subject: i2c: core: apply 'is_suspended' check for SMBus, too We checked I2C calls, but not SMBus. Refactor the helper to an inline function and use it for both, I2C and SMBus. Fixes: 9ac6cb5fbb17 ("i2c: add suspended flag and accessors for i2c adapters") Reported-by: Peter Rosin Signed-off-by: Wolfram Sang Reviewed-by: Simon Horman Signed-off-by: Wolfram Sang --- drivers/i2c/i2c-core.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'drivers/i2c/i2c-core.h') diff --git a/drivers/i2c/i2c-core.h b/drivers/i2c/i2c-core.h index f9d0c417b5a5..c88cfef81343 100644 --- a/drivers/i2c/i2c-core.h +++ b/drivers/i2c/i2c-core.h @@ -54,6 +54,17 @@ static inline int __i2c_lock_bus_helper(struct i2c_adapter *adap) return ret; } +static inline int __i2c_check_suspended(struct i2c_adapter *adap) +{ + if (test_bit(I2C_ALF_IS_SUSPENDED, &adap->locked_flags)) { + if (!test_and_set_bit(I2C_ALF_SUSPEND_REPORTED, &adap->locked_flags)) + dev_WARN(&adap->dev, "Transfer while suspended\n"); + return -ESHUTDOWN; + } + + return 0; +} + #ifdef CONFIG_ACPI const struct acpi_device_id * i2c_acpi_match_device(const struct acpi_device_id *matches, -- cgit v1.2.3