diff options
Diffstat (limited to 'drivers/staging/cg2900/include/cg2900.h')
-rw-r--r-- | drivers/staging/cg2900/include/cg2900.h | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/drivers/staging/cg2900/include/cg2900.h b/drivers/staging/cg2900/include/cg2900.h index 99ac90da58f..85b5e03eb3c 100644 --- a/drivers/staging/cg2900/include/cg2900.h +++ b/drivers/staging/cg2900/include/cg2900.h @@ -28,6 +28,15 @@ #define CG2900_CHAR_DEV_IOCTL_EVENT_IDLE 0 #define CG2900_CHAR_DEV_IOCTL_EVENT_RESET 1 +/* Specific chip version data */ +#define STLC2690_REV 0x0600 +#define CG2900_PG1_REV 0x0101 +#define CG2900_PG2_REV 0x0200 +#define CG2900_PG1_SPECIAL_REV 0x0700 +#define CG2905_PG1_1_REV 0x1805 +#define CG2910_PG1_REV 0x1004 +#define CG2910_PG2_REV 0x1008 + /** * struct cg2900_rev_data - Contains revision data for the local controller. * @revision: Revision of the controller, e.g. to indicate that it is @@ -39,8 +48,8 @@ * the manufacturer. */ struct cg2900_rev_data { - int revision; - int sub_version; + u16 revision; + u16 sub_version; }; #ifdef __KERNEL__ @@ -273,6 +282,19 @@ static inline void cg2900_set_prv(struct cg2900_user_data *dev, void *data) dev->private_data = data; } +static inline bool check_chip_revision_support(u16 hci_revision) +{ + if (hci_revision != CG2900_PG1_SPECIAL_REV && + hci_revision != CG2900_PG1_REV && + hci_revision != CG2900_PG2_REV && + hci_revision != CG2905_PG1_1_REV && + hci_revision != CG2910_PG1_REV && + hci_revision != CG2910_PG2_REV) + return false; + + return true; +} + extern int cg2900_register_chip_driver(struct cg2900_id_callbacks *cb); extern void cg2900_deregister_chip_driver(struct cg2900_id_callbacks *cb); extern int cg2900_register_trans_driver(struct cg2900_chip_dev *dev); |