diff options
author | Wolfram Sang <wsa@the-dreams.de> | 2013-07-11 12:56:15 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-02-21 12:10:58 +0900 |
commit | 7f4270494946e86c1bdbd9d17161dc785c17c361 (patch) | |
tree | a341a3cbd9a0a08d9e5dcfc2b85f81da38281803 /include | |
parent | 82b67d73b121febe5ae76747680a2d979c21c5e6 (diff) |
i2c: move OF helpers into the core
I2C of helpers used to live in of_i2c.c but experience (from SPI) shows
that it is much cleaner to have this in the core. This also removes a
circular dependency between the helpers and the core, and so we can
finally register child nodes in the core instead of doing this manually
in each driver. So, fix the drivers and documentation, too.
[Modified to keep a stub device registration API exposed to drivers in
order to avoid disruption]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
(cherry picked from commit 687b81d083c082bc1e853032e3a2a54f8c251d27)
Signed-off-by: Mark Brown <broonie@kernel.org>
Conflicts:
drivers/i2c/busses/i2c-designware-platdrv.c
drivers/i2c/busses/i2c-imx.c
drivers/i2c/busses/i2c-stu300.c
drivers/i2c/busses/i2c-wmt.c
drivers/of/Kconfig
drivers/of/Makefile
drivers/staging/imx-drm/imx-tve.c
sound/soc/fsl/imx-wm8962.c
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/i2c.h | 20 | ||||
-rw-r--r-- | include/linux/of_i2c.h | 29 |
2 files changed, 21 insertions, 28 deletions
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index e988fa935b3c..21891898ced0 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -542,6 +542,26 @@ static inline int i2c_adapter_id(struct i2c_adapter *adap) #endif /* I2C */ +#if IS_ENABLED(CONFIG_OF) +/* must call put_device() when done with returned i2c_client device */ +extern struct i2c_client *of_find_i2c_device_by_node(struct device_node *node); + +/* must call put_device() when done with returned i2c_adapter device */ +extern struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node); + +#else + +static inline struct i2c_client *of_find_i2c_device_by_node(struct device_node *node) +{ + return NULL; +} + +static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node) +{ + return NULL; +} +#endif /* CONFIG_OF */ + #if IS_ENABLED(CONFIG_ACPI_I2C) extern void acpi_i2c_register_devices(struct i2c_adapter *adap); #else diff --git a/include/linux/of_i2c.h b/include/linux/of_i2c.h index cfb545cd86b5..686786c87c73 100644 --- a/include/linux/of_i2c.h +++ b/include/linux/of_i2c.h @@ -12,35 +12,8 @@ #ifndef __LINUX_OF_I2C_H #define __LINUX_OF_I2C_H -#if defined(CONFIG_OF_I2C) || defined(CONFIG_OF_I2C_MODULE) #include <linux/i2c.h> -extern void of_i2c_register_devices(struct i2c_adapter *adap); - -/* must call put_device() when done with returned i2c_client device */ -extern struct i2c_client *of_find_i2c_device_by_node(struct device_node *node); - -/* must call put_device() when done with returned i2c_adapter device */ -extern struct i2c_adapter *of_find_i2c_adapter_by_node( - struct device_node *node); - -#else -static inline void of_i2c_register_devices(struct i2c_adapter *adap) -{ - return; -} - -static inline struct i2c_client *of_find_i2c_device_by_node(struct device_node *node) -{ - return NULL; -} - -/* must call put_device() when done with returned i2c_adapter device */ -static inline struct i2c_adapter *of_find_i2c_adapter_by_node( - struct device_node *node) -{ - return NULL; -} -#endif /* CONFIG_OF_I2C */ +static inline void of_i2c_register_devices(struct i2c_adapter *adap) { }; #endif /* __LINUX_OF_I2C_H */ |