summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/i2c-of-prober.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/i2c-of-prober.h b/include/linux/i2c-of-prober.h
index df95aa6ad90e..bb6d47f50ee5 100644
--- a/include/linux/i2c-of-prober.h
+++ b/include/linux/i2c-of-prober.h
@@ -9,6 +9,7 @@
#define _LINUX_I2C_OF_PROBER_H
#include <linux/kconfig.h>
+#include <linux/types.h>
struct device;
struct device_node;
@@ -85,6 +86,7 @@ int i2c_of_probe_component(struct device *dev, const struct i2c_of_probe_cfg *cf
*
* The following helpers are provided:
* * i2c_of_probe_simple_enable()
+ * * i2c_of_probe_simple_cleanup_early()
* * i2c_of_probe_simple_cleanup()
*/
@@ -92,14 +94,31 @@ int i2c_of_probe_component(struct device *dev, const struct i2c_of_probe_cfg *cf
* struct i2c_of_probe_simple_opts - Options for simple I2C component prober callbacks
* @res_node_compatible: Compatible string of device node to retrieve resources from.
* @supply_name: Name of regulator supply.
+ * @gpio_name: Name of GPIO. NULL if no GPIO line is used. Empty string ("") if GPIO
+ * line is unnamed.
* @post_power_on_delay_ms: Delay after regulators are powered on. Passed to msleep().
+ * @post_gpio_config_delay_ms: Delay after GPIO is configured. Passed to msleep().
+ * @gpio_assert_to_enable: %true if GPIO should be asserted, i.e. set to logical high,
+ * to enable the component.
+ *
+ * This describes power sequences common for the class of components supported by the
+ * simple component prober:
+ * * @gpio_name is configured to the non-active setting according to @gpio_assert_to_enable.
+ * * @supply_name regulator supply is enabled.
+ * * Wait for @post_power_on_delay_ms to pass.
+ * * @gpio_name is configured to the active setting according to @gpio_assert_to_enable.
+ * * Wait for @post_gpio_config_delay_ms to pass.
*/
struct i2c_of_probe_simple_opts {
const char *res_node_compatible;
const char *supply_name;
+ const char *gpio_name;
unsigned int post_power_on_delay_ms;
+ unsigned int post_gpio_config_delay_ms;
+ bool gpio_assert_to_enable;
};
+struct gpio_desc;
struct regulator;
struct i2c_of_probe_simple_ctx {
@@ -107,9 +126,11 @@ struct i2c_of_probe_simple_ctx {
const struct i2c_of_probe_simple_opts *opts;
/* private: internal fields for helpers. */
struct regulator *supply;
+ struct gpio_desc *gpiod;
};
int i2c_of_probe_simple_enable(struct device *dev, struct device_node *bus_node, void *data);
+void i2c_of_probe_simple_cleanup_early(struct device *dev, void *data);
void i2c_of_probe_simple_cleanup(struct device *dev, void *data);
extern struct i2c_of_probe_ops i2c_of_probe_simple_ops;