summaryrefslogtreecommitdiffstats
path: root/include/linux/soundwire/sdw_type.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/soundwire/sdw_type.h')
-rw-r--r--include/linux/soundwire/sdw_type.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/linux/soundwire/sdw_type.h b/include/linux/soundwire/sdw_type.h
new file mode 100644
index 000000000..d8c27f1e5
--- /dev/null
+++ b/include/linux/soundwire/sdw_type.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2015-17 Intel Corporation. */
+
+#ifndef __SOUNDWIRE_TYPES_H
+#define __SOUNDWIRE_TYPES_H
+
+extern struct bus_type sdw_bus_type;
+extern struct device_type sdw_slave_type;
+extern struct device_type sdw_master_type;
+
+static inline int is_sdw_slave(const struct device *dev)
+{
+ return dev->type == &sdw_slave_type;
+}
+
+#define drv_to_sdw_driver(_drv) container_of(_drv, struct sdw_driver, driver)
+
+#define sdw_register_driver(drv) \
+ __sdw_register_driver(drv, THIS_MODULE)
+
+int __sdw_register_driver(struct sdw_driver *drv, struct module *owner);
+void sdw_unregister_driver(struct sdw_driver *drv);
+
+int sdw_slave_uevent(const struct device *dev, struct kobj_uevent_env *env);
+
+/**
+ * module_sdw_driver() - Helper macro for registering a Soundwire driver
+ * @__sdw_driver: soundwire slave driver struct
+ *
+ * Helper macro for Soundwire drivers which do not do anything special in
+ * module init/exit. This eliminates a lot of boilerplate. Each module may only
+ * use this macro once, and calling it replaces module_init() and module_exit()
+ */
+#define module_sdw_driver(__sdw_driver) \
+ module_driver(__sdw_driver, sdw_register_driver, \
+ sdw_unregister_driver)
+#endif /* __SOUNDWIRE_TYPES_H */