diff options
Diffstat (limited to 'drivers/i2c/i2c-core-smbus.c')
| -rw-r--r-- | drivers/i2c/i2c-core-smbus.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/drivers/i2c/i2c-core-smbus.c b/drivers/i2c/i2c-core-smbus.c index e5b2d1465e7e..e3b96fc53b5c 100644 --- a/drivers/i2c/i2c-core-smbus.c +++ b/drivers/i2c/i2c-core-smbus.c @@ -14,6 +14,7 @@  #include <linux/err.h>  #include <linux/i2c.h>  #include <linux/i2c-smbus.h> +#include <linux/property.h>  #include <linux/slab.h>  #include "i2c-core.h" @@ -701,13 +702,17 @@ struct i2c_client *i2c_new_smbus_alert_device(struct i2c_adapter *adapter,  }  EXPORT_SYMBOL_GPL(i2c_new_smbus_alert_device); -#if IS_ENABLED(CONFIG_I2C_SMBUS) && IS_ENABLED(CONFIG_OF) -int of_i2c_setup_smbus_alert(struct i2c_adapter *adapter) +#if IS_ENABLED(CONFIG_I2C_SMBUS) +int i2c_setup_smbus_alert(struct i2c_adapter *adapter)  { +	struct device *parent = adapter->dev.parent;  	int irq; -	irq = of_property_match_string(adapter->dev.of_node, "interrupt-names", -				       "smbus_alert"); +	/* Adapter instantiated without parent, skip the SMBus alert setup */ +	if (!parent) +		return 0; + +	irq = device_property_match_string(parent, "interrupt-names", "smbus_alert");  	if (irq == -EINVAL || irq == -ENODATA)  		return 0;  	else if (irq < 0) @@ -715,5 +720,4 @@ int of_i2c_setup_smbus_alert(struct i2c_adapter *adapter)  	return PTR_ERR_OR_ZERO(i2c_new_smbus_alert_device(adapter, NULL));  } -EXPORT_SYMBOL_GPL(of_i2c_setup_smbus_alert);  #endif |