Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* Copyright(c) 2015-17 Intel Corporation. */
0003 
0004 #ifndef __SOUNDWIRE_TYPES_H
0005 #define __SOUNDWIRE_TYPES_H
0006 
0007 extern struct bus_type sdw_bus_type;
0008 extern struct device_type sdw_slave_type;
0009 extern struct device_type sdw_master_type;
0010 
0011 static inline int is_sdw_slave(const struct device *dev)
0012 {
0013     return dev->type == &sdw_slave_type;
0014 }
0015 
0016 #define drv_to_sdw_driver(_drv) container_of(_drv, struct sdw_driver, driver)
0017 
0018 #define sdw_register_driver(drv) \
0019     __sdw_register_driver(drv, THIS_MODULE)
0020 
0021 int __sdw_register_driver(struct sdw_driver *drv, struct module *owner);
0022 void sdw_unregister_driver(struct sdw_driver *drv);
0023 
0024 int sdw_slave_uevent(struct device *dev, struct kobj_uevent_env *env);
0025 
0026 /**
0027  * module_sdw_driver() - Helper macro for registering a Soundwire driver
0028  * @__sdw_driver: soundwire slave driver struct
0029  *
0030  * Helper macro for Soundwire drivers which do not do anything special in
0031  * module init/exit. This eliminates a lot of boilerplate. Each module may only
0032  * use this macro once, and calling it replaces module_init() and module_exit()
0033  */
0034 #define module_sdw_driver(__sdw_driver) \
0035     module_driver(__sdw_driver, sdw_register_driver, \
0036             sdw_unregister_driver)
0037 #endif /* __SOUNDWIRE_TYPES_H */