/*! * @section LICENSE * (C) Copyright 2011~2014 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 bstclass.h * @date "Fri Aug 2 17:41:45 2013 +0800" * @id "644147c" * * @brief * The core code of bst device driver */ #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