/*! * @section LICENSE * (C) Copyright 2011~2016 Bosch Sensortec GmbH All Rights Reserved * * This software program is licensed subject to the GNU General * Public License (GPL).Version 2,June 1991, * available at http://www.fsf.org/copyleft/gpl.html * * @filename bstcalss.h * @date 2015/11/17 13:44 * @id "836294d" * @version 1.5.9 * * @brief */ #ifndef _BSTCLASS_H #define _BSTCLASS_H #ifdef __KERNEL__ #include #include #else #include #include #include #include #endif #include #include #include struct bst_dev { const char *name; int (*open)(struct bst_dev *dev); void (*close)(struct bst_dev *dev); struct mutex mutex; struct device dev; struct list_head node; }; #define to_bst_dev(d) container_of(d, struct bst_dev, dev) struct bst_dev *bst_allocate_device(void); void bst_free_device(struct bst_dev *dev); static inline struct bst_dev *bst_get_device(struct bst_dev *dev) { return dev ? to_bst_dev(get_device(&dev->dev)) : NULL; } static inline void bst_put_device(struct bst_dev *dev) { if (dev) put_device(&dev->dev); } static inline void *bst_get_drvdata(struct bst_dev *dev) { return dev_get_drvdata(&dev->dev); } static inline void bst_set_drvdata(struct bst_dev *dev, void *data) { dev_set_drvdata(&dev->dev, data); } int __must_check bst_register_device(struct bst_dev *); void bst_unregister_device(struct bst_dev *); void bst_reset_device(struct bst_dev *); extern struct class bst_class; #endif