• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Definitions for akm8975 compass chip.
3  */
4 #ifndef AKM8975_H
5 #define AKM8975_H
6 
7 #include <linux/ioctl.h>
8 
9 /*! \name AK8975 operation mode
10  \anchor AK8975_Mode
11  Defines an operation mode of the AK8975.*/
12 /*! @{*/
13 #define AK8975_MODE_SNG_MEASURE   0x01
14 #define	AK8975_MODE_SELF_TEST     0x08
15 #define	AK8975_MODE_FUSE_ACCESS   0x0F
16 #define	AK8975_MODE_POWER_DOWN    0x00
17 /*! @}*/
18 
19 #define RBUFF_SIZE		8	/* Rx buffer size */
20 
21 /*! \name AK8975 register address
22 \anchor AK8975_REG
23 Defines a register address of the AK8975.*/
24 /*! @{*/
25 #define AK8975_REG_WIA		0x00
26 #define AK8975_REG_INFO		0x01
27 #define AK8975_REG_ST1		0x02
28 #define AK8975_REG_HXL		0x03
29 #define AK8975_REG_HXH		0x04
30 #define AK8975_REG_HYL		0x05
31 #define AK8975_REG_HYH		0x06
32 #define AK8975_REG_HZL		0x07
33 #define AK8975_REG_HZH		0x08
34 #define AK8975_REG_ST2		0x09
35 #define AK8975_REG_CNTL		0x0A
36 #define AK8975_REG_RSV		0x0B
37 #define AK8975_REG_ASTC		0x0C
38 #define AK8975_REG_TS1		0x0D
39 #define AK8975_REG_TS2		0x0E
40 #define AK8975_REG_I2CDIS	0x0F
41 /*! @}*/
42 
43 /*! \name AK8975 fuse-rom address
44 \anchor AK8975_FUSE
45 Defines a read-only address of the fuse ROM of the AK8975.*/
46 /*! @{*/
47 #define AK8975_FUSE_ASAX	0x10
48 #define AK8975_FUSE_ASAY	0x11
49 #define AK8975_FUSE_ASAZ	0x12
50 /*! @}*/
51 
52 #define AKMIO                   0xA1
53 
54 /* IOCTLs for AKM library */
55 #define ECS_IOCTL_WRITE                 _IOW(AKMIO, 0x02, char[5])
56 #define ECS_IOCTL_READ                  _IOWR(AKMIO, 0x03, char[5])
57 #define ECS_IOCTL_GETDATA               _IOR(AKMIO, 0x08, char[RBUFF_SIZE])
58 #define ECS_IOCTL_SET_YPR               _IOW(AKMIO, 0x0C, short[12])
59 #define ECS_IOCTL_GET_OPEN_STATUS       _IOR(AKMIO, 0x0D, int)
60 #define ECS_IOCTL_GET_CLOSE_STATUS      _IOR(AKMIO, 0x0E, int)
61 #define ECS_IOCTL_GET_DELAY             _IOR(AKMIO, 0x30, short)
62 
63 /* IOCTLs for APPs */
64 #define ECS_IOCTL_APP_SET_MFLAG		_IOW(AKMIO, 0x11, short)
65 #define ECS_IOCTL_APP_GET_MFLAG		_IOW(AKMIO, 0x12, short)
66 #define ECS_IOCTL_APP_SET_AFLAG		_IOW(AKMIO, 0x13, short)
67 #define ECS_IOCTL_APP_GET_AFLAG		_IOR(AKMIO, 0x14, short)
68 #define ECS_IOCTL_APP_SET_DELAY		_IOW(AKMIO, 0x18, short)
69 #define ECS_IOCTL_APP_GET_DELAY		ECS_IOCTL_GET_DELAY
70 #define ECS_IOCTL_APP_SET_MVFLAG	_IOW(AKMIO, 0x19, short) /* Set raw magnetic vector flag */
71 #define ECS_IOCTL_APP_GET_MVFLAG	_IOR(AKMIO, 0x1A, short) /* Get raw magnetic vector flag */
72 #define ECS_IOCTL_APP_SET_TFLAG         _IOR(AKMIO, 0x15, short)
73 
74 
75 /* Default GPIO setting */
76 #define ECS_INTR	140
77 
78 struct akm8975_platform_data {
79 	int intr;
80 };
81 
82 #endif
83 
84