Home | History | Annotate | Download | only in linux
      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