| Ethan Chen | b3e3a83 | 2013-09-08 16:58:48 -0700 | [diff] [blame] | 1 | #ifndef AKM8963_H | 
|  | 2 | #define AKM8963_H | 
|  | 3 |  | 
|  | 4 | #include <linux/ioctl.h> | 
|  | 5 |  | 
|  | 6 | #define AKM8963_I2C_NAME "akm8963" | 
|  | 7 |  | 
|  | 8 | #define SENSOR_DATA_SIZE	8 | 
|  | 9 | #define YPR_DATA_SIZE		12 | 
|  | 10 | #define RWBUF_SIZE		16 | 
|  | 11 |  | 
|  | 12 | #define ACC_DATA_FLAG		0 | 
|  | 13 | #define MAG_DATA_FLAG		1 | 
|  | 14 | #define ORI_DATA_FLAG		2 | 
|  | 15 | #define AKM_NUM_SENSORS		3 | 
|  | 16 |  | 
|  | 17 | #define ACC_DATA_READY		(1<<(ACC_DATA_FLAG)) | 
|  | 18 | #define MAG_DATA_READY		(1<<(MAG_DATA_FLAG)) | 
|  | 19 | #define ORI_DATA_READY		(1<<(ORI_DATA_FLAG)) | 
|  | 20 |  | 
|  | 21 | #define AK8963_MEASUREMENT_TIME_US	10000 | 
|  | 22 |  | 
|  | 23 | #define AK8963_MODE_SNG_MEASURE	0x01 | 
|  | 24 | #define	AK8963_MODE_SELF_TEST	0x08 | 
|  | 25 | #define	AK8963_MODE_FUSE_ACCESS	0x0F | 
|  | 26 | #define	AK8963_MODE_POWERDOWN	0x00 | 
|  | 27 |  | 
|  | 28 |  | 
|  | 29 | #define AK8963_REG_WIA		0x00 | 
|  | 30 | #define AK8963_REG_INFO		0x01 | 
|  | 31 | #define AK8963_REG_ST1		0x02 | 
|  | 32 | #define AK8963_REG_HXL		0x03 | 
|  | 33 | #define AK8963_REG_HXH		0x04 | 
|  | 34 | #define AK8963_REG_HYL		0x05 | 
|  | 35 | #define AK8963_REG_HYH		0x06 | 
|  | 36 | #define AK8963_REG_HZL		0x07 | 
|  | 37 | #define AK8963_REG_HZH		0x08 | 
|  | 38 | #define AK8963_REG_ST2		0x09 | 
|  | 39 | #define AK8963_REG_CNTL1	0x0A | 
|  | 40 | #define AK8963_REG_CNTL2	0x0B | 
|  | 41 | #define AK8963_REG_ASTC		0x0C | 
|  | 42 | #define AK8963_REG_TS1		0x0D | 
|  | 43 | #define AK8963_REG_TS2		0x0E | 
|  | 44 | #define AK8963_REG_I2CDIS	0x0F | 
|  | 45 |  | 
|  | 46 | #define AK8963_FUSE_ASAX	0x10 | 
|  | 47 | #define AK8963_FUSE_ASAY	0x11 | 
|  | 48 | #define AK8963_FUSE_ASAZ	0x12 | 
|  | 49 |  | 
|  | 50 | #define AKMIO                   0xA1 | 
|  | 51 |  | 
|  | 52 | #define ECS_IOCTL_READ              _IOWR(AKMIO, 0x01, char*) | 
|  | 53 | #define ECS_IOCTL_WRITE             _IOW(AKMIO, 0x02, char*) | 
|  | 54 | #define ECS_IOCTL_SET_MODE          _IOW(AKMIO, 0x03, short) | 
|  | 55 | #define ECS_IOCTL_GETDATA           _IOR(AKMIO, 0x04, char[SENSOR_DATA_SIZE]) | 
|  | 56 | #define ECS_IOCTL_SET_YPR           _IOW(AKMIO, 0x05, int[YPR_DATA_SIZE]) | 
|  | 57 | #define ECS_IOCTL_GET_OPEN_STATUS   _IOR(AKMIO, 0x06, int) | 
|  | 58 | #define ECS_IOCTL_GET_CLOSE_STATUS  _IOR(AKMIO, 0x07, int) | 
|  | 59 | #define ECS_IOCTL_GET_DELAY         _IOR(AKMIO, 0x08, long long int[AKM_NUM_SENSORS]) | 
|  | 60 | #define ECS_IOCTL_GET_LAYOUT        _IOR(AKMIO, 0x09, char) | 
|  | 61 | #define ECS_IOCTL_GET_OUTBIT        _IOR(AKMIO, 0x0B, char) | 
|  | 62 | #define ECS_IOCTL_RESET             _IO(AKMIO, 0x0C) | 
|  | 63 | #define ECS_IOCTL_GET_ACCEL         _IOR(AKMIO, 0x30, short[3]) | 
|  | 64 |  | 
|  | 65 | struct akm8963_platform_data { | 
|  | 66 | char layout; | 
|  | 67 | char outbit; | 
|  | 68 | int gpio_DRDY; | 
|  | 69 | int gpio_RST; | 
|  | 70 | int (*power_LPM)(int on); | 
|  | 71 | }; | 
|  | 72 |  | 
|  | 73 | #endif | 
|  | 74 |  |