android_kernel_modules_leno.../drivers/hwmon/lsm303d.h

142 lines
4.1 KiB
C

/******************** (C) COPYRIGHT 2013 STMicroelectronics *******************
*
* File Name : lsm303d.h
* Authors : AMS - MSH Div - Application Team
* : Matteo Dameno (matteo.dameno@st.com)
* : Denis Ciocca (denis.ciocca@st.com)
* Version : V.1.0.5
* Date : 2013/Oct/23
*
*******************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THE PRESENT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, FOR THE SOLE
* PURPOSE TO SUPPORT YOUR APPLICATION DEVELOPMENT.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
******************************************************************************/
#ifndef __LSM303D_H__
#define __LSM303D_H__
#define LSM303D_DEV_NAME "lsm303d"
#define LSM303D_ACC_DEV_NAME "lsm303d_acc" /* Input file name */
#define LSM303D_MAG_DEV_NAME "lsm303d_mag" /* Input file name */
#define LSM303D_SAD0L (0x02)
#define LSM303D_SAD0H (0x01)
#define LSM303D_I2C_SADROOT (0x07)
#define LSM303D_I2C_SAD_L ((LSM303D_I2C_SADROOT<<2) | \
LSM303D_SAD0L)
#define LSM303D_I2C_SAD_H ((LSM303D_I2C_SADROOT<<2) | \
LSM303D_SAD0H)
/************************************************/
/* Output data */
/*************************************************
accelerometer: ug
magnetometer: ugauss
*************************************************/
/************************************************/
/* sysfs data */
/*************************************************
accelerometer:
- pollrate->ms
- fullscale->g
magnetometer:
- pollrate->ms
- fullscale->gauss
*************************************************/
/************************************************/
/* Accelerometer section defines */
/************************************************/
/* Accelerometer Sensor Full Scale */
#define LSM303D_ACC_FS_MASK (0x18)
#define LSM303D_ACC_FS_2G (0x00) /* Full scale 2g */
#define LSM303D_ACC_FS_4G (0x08) /* Full scale 4g */
#define LSM303D_ACC_FS_8G (0x10) /* Full scale 8g */
#define LSM303D_ACC_FS_16G (0x18) /* Full scale 16g */
/* Accelerometer Anti-Aliasing Filter */
#define ANTI_ALIASING_773 (0X00)
#define ANTI_ALIASING_362 (0X40)
#define ANTI_ALIASING_194 (0X80)
#define ANTI_ALIASING_50 (0XC0)
/************************************************/
/* Magnetometer section defines */
/************************************************/
/* Magnetometer Sensor Full Scale */
#define LSM303D_MAG_FS_MASK (0x60)
#define LSM303D_MAG_FS_2G (0x00) /* Full scale 2 gauss */
#define LSM303D_MAG_FS_4G (0x20) /* Full scale 4 gauss */
#define LSM303D_MAG_FS_8G (0x40) /* Full scale 8 gauss */
#define LSM303D_MAG_FS_12G (0x60) /* Full scale 12 gauss */
#ifdef __KERNEL__
#define DEFAULT_INT1_GPIO (-EINVAL)
#define DEFAULT_INT2_GPIO (-EINVAL)
#define LSM303D_ACC_MIN_POLL_PERIOD_MS 1
#define LSM303D_MAG_MIN_POLL_PERIOD_MS 5
#define LSM303D_MAG_MAX_POLL_PERIOD_MS 40
struct lsm303d_acc_platform_data {
unsigned int poll_interval;
unsigned int min_interval;
u8 fs_range;
short rot_matrix[3][3];
s32 cali_sw[3];
u8 aa_filter_bandwidth;
int (*init)(void);
void (*exit)(void);
int (*power_on)(void);
int (*power_off)(void);
int gpio_int1;
int gpio_int2;
};
struct lsm303d_mag_platform_data {
unsigned int poll_interval;
unsigned int min_interval;
unsigned int max_interval;
u8 fs_range;
short rot_matrix[3][3];
int (*init)(void);
void (*exit)(void);
int (*power_on)(void);
int (*power_off)(void);
};
struct lsm303d_main_platform_data {
struct lsm303d_acc_platform_data *pdata_acc;
struct lsm303d_mag_platform_data *pdata_mag;
};
#endif /* __KERNEL__ */
#endif /* __LSM303D_H__ */