Index: linux-2.6.35/drivers/misc/mpu3050/accel/bma023.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.35/drivers/misc/mpu3050/accel/bma023.h 2010-12-23 10:36:19.000000000 +0800 @@ -0,0 +1,784 @@ +/* $Date: 2009/03/24 18:34:52 $ + * $Revision: 1.8 $ + */ + +/* + * Copyright (C) 2009 Bosch Sensortec GmbH + * + * BMA023 acceleration sensor API + * + * Usage: Application Programming Interface for BMA023 configuration and data read out + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in + compliance with the License and the following stipulations. The Apache License , Version 2.0 is applicable unless + otherwise stated by the stipulations of the disclaimer below. + + * You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + + + Disclaimer + * + * Common: + * This Work is developed for the consumer goods industry. It may only be used + * within the parameters of the respective valid product data sheet. The Work + * provided with the express understanding that there is no warranty of fitness for a particular purpose. + * It is not fit for use in life-sustaining, safety or security sensitive systems or any system or device + * that may lead to bodily harm or property damage if the system or device malfunctions. In addition, + * the Work is not fit for use in products which interact with motor vehicle systems. + * The resale and/or use of the Work are at the purchaserî–¸ own risk and his own responsibility. The + * examination of fitness for the intended use is the sole responsibility of the Purchaser. + * + * The purchaser shall indemnify Bosch Sensortec from all third party claims, including any claims for + * incidental, or consequential damages, arising from any Work or Derivative Work use not covered by the parameters of + * the respective valid product data sheet or not approved by Bosch Sensortec and reimburse Bosch + * Sensortec for all costs in connection with such claims. + * + * The purchaser must monitor the market for the purchased Work and Derivative Works, particularly with regard to + * product safety and inform Bosch Sensortec without delay of all security relevant incidents. + * + * Engineering Samples are marked with an asterisk (*) or (e). Samples may vary from the valid + * technical specifications of the product series. They are therefore not intended or fit for resale to third + * parties or for use in end products. Their sole purpose is internal client testing. The testing of an + * engineering sample may in no way replace the testing of a product series. Bosch Sensortec + * assumes no liability for the use of engineering samples. By accepting the engineering samples, the + * Purchaser agrees to indemnify Bosch Sensortec from all claims arising from the use of engineering + * samples. + * + * Special: + * This Work and any related information (hereinafter called "Information") is provided free of charge + * for the sole purpose to support your application work. The Woek and Information is subject to the + * following terms and conditions: + * + * The Work is specifically designed for the exclusive use for Bosch Sensortec products by + * personnel who have special experience and training. Do not use this Work or Derivative Works if you do not have the + * proper experience or training. Do not use this Work or Derivative Works fot other products than Bosch Sensortec products. + * + * The Information provided is believed to be accurate and reliable. Bosch Sensortec assumes no + * responsibility for the consequences of use of such Information nor for any infringement of patents or + * other rights of third parties which may result from its use. No license is granted by implication or + * otherwise under any patent or patent rights of Bosch. Specifications mentioned in the Information are + * subject to change without notice. + */ + + /** \file bma023.h + \brief Header file for all #define constants and function prototypes + + +*/ + +#include <linux/i2c.h> +#include "mpu3050.h" +#include "mldl_cfg.h" + +struct accel_config { + unsigned char int_latch; // byte 0x15 + unsigned char range_bandwidth; // byte 0x14 + unsigned char hg_lg_hyst; // byte 0x11 + unsigned char any_motion_thres; // byte 0x10 + unsigned char hg_dur; // byte 0x0f + unsigned char hg_thres; // byte 0x0e + unsigned char lg_dur; // byte 0x0d + unsigned char lg_thres; // byte 0x0c + unsigned char enable_count_hg_lg; // byte 0x0b +// unsigned char reset_sleep; // byte 0x0a +}; + +struct accel_config *accel_get_config(void); + +int bma023_read_accel_xyz(struct i2c_adapter *, struct mldl_cfg *, signed short *); +unsigned char bma023_get_power_mode(struct i2c_adapter *, struct mldl_cfg *mldl_cfg); +int bma023_get_bandwidth(void); +int bma023_set_bandwidth(struct i2c_adapter *, const char *); +int bma023_get_range(void); +int bma023_set_range(struct i2c_adapter *, const char *); +int bma023_set_hg_duration(struct i2c_adapter *, const char *); +int bma023_set_hg_threshold(struct i2c_adapter *, const char *); +int bma023_set_lg_duration(struct i2c_adapter *, const char *); +int bma023_set_lg_threshold(struct i2c_adapter *, const char *); + + +/** BMA023 I2C Address +*/ + +#define BMA023_I2C_ADDR 0x38 + +/* + * + * register definitions + * + */ + + +#define BMA023_EEP_OFFSET 0x20 +#define BMA023_IMAGE_BASE 0x0b +#define BMA023_IMAGE_LEN 19 + +#define BMA023_CHIP_ID_REG 0x00 +#define BMA023_VERSION_REG 0x01 +#define BMA023_X_AXIS_LSB_REG 0x02 +#define BMA023_X_AXIS_MSB_REG 0x03 +#define BMA023_Y_AXIS_LSB_REG 0x04 +#define BMA023_Y_AXIS_MSB_REG 0x05 +#define BMA023_Z_AXIS_LSB_REG 0x06 +#define BMA023_Z_AXIS_MSB_REG 0x07 +#define BMA023_TEMP_RD_REG 0x08 +#define BMA023_STATUS_REG 0x09 +#define BMA023_CTRL_REG 0x0a +#define BMA023_CONF1_REG 0x0b +#define BMA023_LG_THRESHOLD_REG 0x0c +#define BMA023_LG_DURATION_REG 0x0d +#define BMA023_HG_THRESHOLD_REG 0x0e +#define BMA023_HG_DURATION_REG 0x0f +#define BMA023_MOTION_THRS_REG 0x10 +#define BMA023_HYSTERESIS_REG 0x11 +#define BMA023_CUSTOMER1_REG 0x12 +#define BMA023_CUSTOMER2_REG 0x13 +#define BMA023_RANGE_BWIDTH_REG 0x14 +#define BMA023_CONF2_REG 0x15 + +#define BMA023_OFFS_GAIN_X_REG 0x16 +#define BMA023_OFFS_GAIN_Y_REG 0x17 +#define BMA023_OFFS_GAIN_Z_REG 0x18 +#define BMA023_OFFS_GAIN_T_REG 0x19 +#define BMA023_OFFSET_X_REG 0x1a +#define BMA023_OFFSET_Y_REG 0x1b +#define BMA023_OFFSET_Z_REG 0x1c +#define BMA023_OFFSET_T_REG 0x1d + + +/* register write and read delays */ + +#define BMA023_MDELAY_DATA_TYPE unsigned int +#define BMA023_EE_W_DELAY 28 /* delay after EEP write is 28 msec */ + + +/** BMA023 image registers data structure + \brief Register type that contains all BMA023 image registers from address 0x0b to 0x15 + This structure can hold the complete image data of BMA023 + +*/ + + +/* + * + * bit slice positions in registers + * + */ + +/** \cond BITSLICE */ + +#define BMA023_CHIP_ID__POS 0 +#define BMA023_CHIP_ID__MSK 0x07 +#define BMA023_CHIP_ID__LEN 3 +#define BMA023_CHIP_ID__REG BMA023_CHIP_ID_REG + + +#define BMA023_ML_VERSION__POS 0 +#define BMA023_ML_VERSION__LEN 4 +#define BMA023_ML_VERSION__MSK 0x0F +#define BMA023_ML_VERSION__REG BMA023_VERSION_REG + + + +#define BMA023_AL_VERSION__POS 4 +#define BMA023_AL_VERSION__LEN 4 +#define BMA023_AL_VERSION__MSK 0xF0 +#define BMA023_AL_VERSION__REG BMA023_VERSION_REG + + +/* DATA REGISTERS */ + + +#define BMA023_NEW_DATA_X__POS 0 +#define BMA023_NEW_DATA_X__LEN 1 +#define BMA023_NEW_DATA_X__MSK 0x01 +#define BMA023_NEW_DATA_X__REG BMA023_X_AXIS_LSB_REG + +#define BMA023_ACC_X_LSB__POS 6 +#define BMA023_ACC_X_LSB__LEN 2 +#define BMA023_ACC_X_LSB__MSK 0xC0 +#define BMA023_ACC_X_LSB__REG BMA023_X_AXIS_LSB_REG + +#define BMA023_ACC_X_MSB__POS 0 +#define BMA023_ACC_X_MSB__LEN 8 +#define BMA023_ACC_X_MSB__MSK 0xFF +#define BMA023_ACC_X_MSB__REG BMA023_X_AXIS_MSB_REG + +#define BMA023_NEW_DATA_Y__POS 0 +#define BMA023_NEW_DATA_Y__LEN 1 +#define BMA023_NEW_DATA_Y__MSK 0x01 +#define BMA023_NEW_DATA_Y__REG BMA023_Y_AXIS_LSB_REG + +#define BMA023_ACC_Y_LSB__POS 6 +#define BMA023_ACC_Y_LSB__LEN 2 +#define BMA023_ACC_Y_LSB__MSK 0xC0 +#define BMA023_ACC_Y_LSB__REG BMA023_Y_AXIS_LSB_REG + +#define BMA023_ACC_Y_MSB__POS 0 +#define BMA023_ACC_Y_MSB__LEN 8 +#define BMA023_ACC_Y_MSB__MSK 0xFF +#define BMA023_ACC_Y_MSB__REG BMA023_Y_AXIS_MSB_REG + +#define BMA023_NEW_DATA_Z__POS 0 +#define BMA023_NEW_DATA_Z__LEN 1 +#define BMA023_NEW_DATA_Z__MSK 0x01 +#define BMA023_NEW_DATA_Z__REG BMA023_Z_AXIS_LSB_REG + +#define BMA023_ACC_Z_LSB__POS 6 +#define BMA023_ACC_Z_LSB__LEN 2 +#define BMA023_ACC_Z_LSB__MSK 0xC0 +#define BMA023_ACC_Z_LSB__REG BMA023_Z_AXIS_LSB_REG + +#define BMA023_ACC_Z_MSB__POS 0 +#define BMA023_ACC_Z_MSB__LEN 8 +#define BMA023_ACC_Z_MSB__MSK 0xFF +#define BMA023_ACC_Z_MSB__REG BMA023_Z_AXIS_MSB_REG + +#define BMA023_TEMPERATURE__POS 0 +#define BMA023_TEMPERATURE__LEN 8 +#define BMA023_TEMPERATURE__MSK 0xFF +#define BMA023_TEMPERATURE__REG BMA023_TEMP_RD_REG + + + + +/* STATUS BITS */ + +#define BMA023_STATUS_HG__POS 0 +#define BMA023_STATUS_HG__LEN 1 +#define BMA023_STATUS_HG__MSK 0x01 +#define BMA023_STATUS_HG__REG BMA023_STATUS_REG + +#define BMA023_STATUS_LG__POS 1 +#define BMA023_STATUS_LG__LEN 1 +#define BMA023_STATUS_LG__MSK 0x02 +#define BMA023_STATUS_LG__REG BMA023_STATUS_REG + +#define BMA023_HG_LATCHED__POS 2 +#define BMA023_HG_LATCHED__LEN 1 +#define BMA023_HG_LATCHED__MSK 0x04 +#define BMA023_HG_LATCHED__REG BMA023_STATUS_REG + +#define BMA023_LG_LATCHED__POS 3 +#define BMA023_LG_LATCHED__LEN 1 +#define BMA023_LG_LATCHED__MSK 8 +#define BMA023_LG_LATCHED__REG BMA023_STATUS_REG + +#define BMA023_ALERT_PHASE__POS 4 +#define BMA023_ALERT_PHASE__LEN 1 +#define BMA023_ALERT_PHASE__MSK 0x10 +#define BMA023_ALERT_PHASE__REG BMA023_STATUS_REG + + +#define BMA023_ST_RESULT__POS 7 +#define BMA023_ST_RESULT__LEN 1 +#define BMA023_ST_RESULT__MSK 0x80 +#define BMA023_ST_RESULT__REG BMA023_STATUS_REG + + +/* CONTROL BITS */ + +#define BMA023_SLEEP__POS 0 +#define BMA023_SLEEP__LEN 1 +#define BMA023_SLEEP__MSK 0x01 +#define BMA023_SLEEP__REG BMA023_CTRL_REG + +#define BMA023_SOFT_RESET__POS 1 +#define BMA023_SOFT_RESET__LEN 1 +#define BMA023_SOFT_RESET__MSK 0x02 +#define BMA023_SOFT_RESET__REG BMA023_CTRL_REG + + + + + +#define BMA023_SELF_TEST__POS 2 +#define BMA023_SELF_TEST__LEN 2 +#define BMA023_SELF_TEST__MSK 0x0C +#define BMA023_SELF_TEST__REG BMA023_CTRL_REG + + + + +#define BMA023_SELF_TEST0__POS 2 +#define BMA023_SELF_TEST0__LEN 1 +#define BMA023_SELF_TEST0__MSK 0x04 +#define BMA023_SELF_TEST0__REG BMA023_CTRL_REG + +#define BMA023_SELF_TEST1__POS 3 +#define BMA023_SELF_TEST1__LEN 1 +#define BMA023_SELF_TEST1__MSK 0x08 +#define BMA023_SELF_TEST1__REG BMA023_CTRL_REG + + + + +#define BMA023_EE_W__POS 4 +#define BMA023_EE_W__LEN 1 +#define BMA023_EE_W__MSK 0x10 +#define BMA023_EE_W__REG BMA023_CTRL_REG + +#define BMA023_UPDATE_IMAGE__POS 5 +#define BMA023_UPDATE_IMAGE__LEN 1 +#define BMA023_UPDATE_IMAGE__MSK 0x20 +#define BMA023_UPDATE_IMAGE__REG BMA023_CTRL_REG + +#define BMA023_RESET_INT__POS 6 +#define BMA023_RESET_INT__LEN 1 +#define BMA023_RESET_INT__MSK 0x40 +#define BMA023_RESET_INT__REG BMA023_CTRL_REG + + + +/* LOW-G, HIGH-G settings */ + + + +#define BMA023_ENABLE_LG__POS 0 +#define BMA023_ENABLE_LG__LEN 1 +#define BMA023_ENABLE_LG__MSK 0x01 +#define BMA023_ENABLE_LG__REG BMA023_CONF1_REG + + + + +#define BMA023_ENABLE_HG__POS 1 +#define BMA023_ENABLE_HG__LEN 1 +#define BMA023_ENABLE_HG__MSK 0x02 +#define BMA023_ENABLE_HG__REG BMA023_CONF1_REG + + +/* LG/HG counter */ + + + +#define BMA023_COUNTER_LG__POS 2 +#define BMA023_COUNTER_LG__LEN 2 +#define BMA023_COUNTER_LG__MSK 0x0C +#define BMA023_COUNTER_LG__REG BMA023_CONF1_REG + +#define BMA023_COUNTER_HG__POS 4 +#define BMA023_COUNTER_HG__LEN 2 +#define BMA023_COUNTER_HG__MSK 0x30 +#define BMA023_COUNTER_HG__REG BMA023_CONF1_REG + + + + +/* LG/HG duration is in ms */ + +#define BMA023_LG_DUR__POS 0 +#define BMA023_LG_DUR__LEN 8 +#define BMA023_LG_DUR__MSK 0xFF +#define BMA023_LG_DUR__REG BMA023_LG_DURATION_REG + +#define BMA023_HG_DUR__POS 0 +#define BMA023_HG_DUR__LEN 8 +#define BMA023_HG_DUR__MSK 0xFF +#define BMA023_HG_DUR__REG BMA023_HG_DURATION_REG + + + + + + +#define BMA023_LG_THRES__POS 0 +#define BMA023_LG_THRES__LEN 8 +#define BMA023_LG_THRES__MSK 0xFF +#define BMA023_LG_THRES__REG BMA023_LG_THRESHOLD_REG + + + + + +#define BMA023_HG_THRES__POS 0 +#define BMA023_HG_THRES__LEN 8 +#define BMA023_HG_THRES__MSK 0xFF +#define BMA023_HG_THRES__REG BMA023_HG_THRESHOLD_REG + + + + + + + + +#define BMA023_LG_HYST__POS 0 +#define BMA023_LG_HYST__LEN 3 +#define BMA023_LG_HYST__MSK 0x07 +#define BMA023_LG_HYST__REG BMA023_HYSTERESIS_REG + + + + +#define BMA023_HG_HYST__POS 3 +#define BMA023_HG_HYST__LEN 3 +#define BMA023_HG_HYST__MSK 0x38 +#define BMA023_HG_HYST__REG BMA023_HYSTERESIS_REG + + +/* ANY MOTION and ALERT settings */ + +#define BMA023_EN_ANY_MOTION__POS 6 +#define BMA023_EN_ANY_MOTION__LEN 1 +#define BMA023_EN_ANY_MOTION__MSK 0x40 +#define BMA023_EN_ANY_MOTION__REG BMA023_CONF1_REG + + +/* ALERT settings */ + + +#define BMA023_ALERT__POS 7 +#define BMA023_ALERT__LEN 1 +#define BMA023_ALERT__MSK 0x80 +#define BMA023_ALERT__REG BMA023_CONF1_REG + + +/* ANY MOTION Duration */ + + + + +#define BMA023_ANY_MOTION_THRES__POS 0 +#define BMA023_ANY_MOTION_THRES__LEN 8 +#define BMA023_ANY_MOTION_THRES__MSK 0xFF +#define BMA023_ANY_MOTION_THRES__REG BMA023_MOTION_THRS_REG + + + + +#define BMA023_ANY_MOTION_DUR__POS 6 +#define BMA023_ANY_MOTION_DUR__LEN 2 +#define BMA023_ANY_MOTION_DUR__MSK 0xC0 +#define BMA023_ANY_MOTION_DUR__REG BMA023_HYSTERESIS_REG + + +#define BMA023_CUSTOMER_RESERVED1__POS 0 +#define BMA023_CUSTOMER_RESERVED1__LEN 8 +#define BMA023_CUSTOMER_RESERVED1__MSK 0xFF +#define BMA023_CUSTOMER_RESERVED1__REG BMA023_CUSTOMER1_REG + +#define BMA023_CUSTOMER_RESERVED2__POS 0 +#define BMA023_CUSTOMER_RESERVED2__LEN 8 +#define BMA023_CUSTOMER_RESERVED2__MSK 0xFF +#define BMA023_CUSTOMER_RESERVED2__REG BMA023_CUSTOMER2_REG + + + +/* BANDWIDTH dependend definitions */ + +#define BMA023_BANDWIDTH__POS 0 +#define BMA023_BANDWIDTH__LEN 3 +#define BMA023_BANDWIDTH__MSK 0x07 +#define BMA023_BANDWIDTH__REG BMA023_RANGE_BWIDTH_REG + + + + +/* RANGE */ + +#define BMA023_RANGE__POS 3 +#define BMA023_RANGE__LEN 2 +#define BMA023_RANGE__MSK 0x18 +#define BMA023_RANGE__REG BMA023_RANGE_BWIDTH_REG + + +/* WAKE UP */ + + + +#define BMA023_WAKE_UP__POS 0 +#define BMA023_WAKE_UP__LEN 1 +#define BMA023_WAKE_UP__MSK 0x01 +#define BMA023_WAKE_UP__REG BMA023_CONF2_REG + + + + +#define BMA023_WAKE_UP_PAUSE__POS 1 +#define BMA023_WAKE_UP_PAUSE__LEN 2 +#define BMA023_WAKE_UP_PAUSE__MSK 0x06 +#define BMA023_WAKE_UP_PAUSE__REG BMA023_CONF2_REG + + +/* ACCELERATION DATA SHADOW */ + + + +#define BMA023_SHADOW_DIS__POS 3 +#define BMA023_SHADOW_DIS__LEN 1 +#define BMA023_SHADOW_DIS__MSK 0x08 +#define BMA023_SHADOW_DIS__REG BMA023_CONF2_REG + + +/* LATCH Interrupt */ + + + +#define BMA023_LATCH_INT__POS 4 +#define BMA023_LATCH_INT__LEN 1 +#define BMA023_LATCH_INT__MSK 0x10 +#define BMA023_LATCH_INT__REG BMA023_CONF2_REG + +/* new data interrupt */ + + +#define BMA023_NEW_DATA_INT__POS 5 +#define BMA023_NEW_DATA_INT__LEN 1 +#define BMA023_NEW_DATA_INT__MSK 0x20 +#define BMA023_NEW_DATA_INT__REG BMA023_CONF2_REG + + + +#define BMA023_ENABLE_ADV_INT__POS 6 +#define BMA023_ENABLE_ADV_INT__LEN 1 +#define BMA023_ENABLE_ADV_INT__MSK 0x40 +#define BMA023_ENABLE_ADV_INT__REG BMA023_CONF2_REG + + +#define BMA023_BMA023_SPI4_OFF 0 +#define BMA023_BMA023_SPI4_ON 1 + +#define BMA023_SPI4__POS 7 +#define BMA023_SPI4__LEN 1 +#define BMA023_SPI4__MSK 0x80 +#define BMA023_SPI4__REG BMA023_CONF2_REG + + +#define BMA023_OFFSET_X_LSB__POS 6 +#define BMA023_OFFSET_X_LSB__LEN 2 +#define BMA023_OFFSET_X_LSB__MSK 0xC0 +#define BMA023_OFFSET_X_LSB__REG BMA023_OFFS_GAIN_X_REG + +#define BMA023_GAIN_X__POS 0 +#define BMA023_GAIN_X__LEN 6 +#define BMA023_GAIN_X__MSK 0x3f +#define BMA023_GAIN_X__REG BMA023_OFFS_GAIN_X_REG + + +#define BMA023_OFFSET_Y_LSB__POS 6 +#define BMA023_OFFSET_Y_LSB__LEN 2 +#define BMA023_OFFSET_Y_LSB__MSK 0xC0 +#define BMA023_OFFSET_Y_LSB__REG BMA023_OFFS_GAIN_Y_REG + +#define BMA023_GAIN_Y__POS 0 +#define BMA023_GAIN_Y__LEN 6 +#define BMA023_GAIN_Y__MSK 0x3f +#define BMA023_GAIN_Y__REG BMA023_OFFS_GAIN_Y_REG + + +#define BMA023_OFFSET_Z_LSB__POS 6 +#define BMA023_OFFSET_Z_LSB__LEN 2 +#define BMA023_OFFSET_Z_LSB__MSK 0xC0 +#define BMA023_OFFSET_Z_LSB__REG BMA023_OFFS_GAIN_Z_REG + +#define BMA023_GAIN_Z__POS 0 +#define BMA023_GAIN_Z__LEN 6 +#define BMA023_GAIN_Z__MSK 0x3f +#define BMA023_GAIN_Z__REG BMA023_OFFS_GAIN_Z_REG + +#define BMA023_OFFSET_T_LSB__POS 6 +#define BMA023_OFFSET_T_LSB__LEN 2 +#define BMA023_OFFSET_T_LSB__MSK 0xC0 +#define BMA023_OFFSET_T_LSB__REG BMA023_OFFS_GAIN_T_REG + +#define BMA023_GAIN_T__POS 0 +#define BMA023_GAIN_T__LEN 6 +#define BMA023_GAIN_T__MSK 0x3f +#define BMA023_GAIN_T__REG BMA023_OFFS_GAIN_T_REG + +#define BMA023_OFFSET_X_MSB__POS 0 +#define BMA023_OFFSET_X_MSB__LEN 8 +#define BMA023_OFFSET_X_MSB__MSK 0xFF +#define BMA023_OFFSET_X_MSB__REG BMA023_OFFSET_X_REG + + +#define BMA023_OFFSET_Y_MSB__POS 0 +#define BMA023_OFFSET_Y_MSB__LEN 8 +#define BMA023_OFFSET_Y_MSB__MSK 0xFF +#define BMA023_OFFSET_Y_MSB__REG BMA023_OFFSET_Y_REG + +#define BMA023_OFFSET_Z_MSB__POS 0 +#define BMA023_OFFSET_Z_MSB__LEN 8 +#define BMA023_OFFSET_Z_MSB__MSK 0xFF +#define BMA023_OFFSET_Z_MSB__REG BMA023_OFFSET_Z_REG + +#define BMA023_OFFSET_T_MSB__POS 0 +#define BMA023_OFFSET_T_MSB__LEN 8 +#define BMA023_OFFSET_T_MSB__MSK 0xFF +#define BMA023_OFFSET_T_MSB__REG BMA023_OFFSET_T_REG + + + + + +#define BMA023_GET_BITSLICE(regvar, bitname)\ + (regvar & bitname##__MSK) >> bitname##__POS + + +#define BMA023_SET_BITSLICE(regvar, bitname, val)\ + (regvar & ~bitname##__MSK) | ((val<<bitname##__POS)&bitname##__MSK) + + +/** \endcond */ + + +/* CONSTANTS */ + + +/* range and bandwidth */ + +#define BMA023_RANGE_2G 0 /**< sets range to 2G mode \see bma023_set_range() */ +#define BMA023_RANGE_4G 1 /**< sets range to 4G mode \see bma023_set_range() */ +#define BMA023_RANGE_8G 2 /**< sets range to 8G mode \see bma023_set_range() */ + + +#define BMA023_BW_25HZ 0 /**< sets bandwidth to 25HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_50HZ 1 /**< sets bandwidth to 50HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_100HZ 2 /**< sets bandwidth to 100HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_190HZ 3 /**< sets bandwidth to 190HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_375HZ 4 /**< sets bandwidth to 375HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_750HZ 5 /**< sets bandwidth to 750HZ \see bma023_set_bandwidth() */ +#define BMA023_BW_1500HZ 6 /**< sets bandwidth to 1500HZ \see bma023_set_bandwidth() */ + +/* mode settings */ + +#define BMA023_MODE_NORMAL 0 +#define BMA023_MODE_SLEEP 2 +#define BMA023_MODE_WAKE_UP 3 + +/* wake up */ + +#define BMA023_WAKE_UP_PAUSE_20MS 0 +#define BMA023_WAKE_UP_PAUSE_80MS 1 +#define BMA023_WAKE_UP_PAUSE_320MS 2 +#define BMA023_WAKE_UP_PAUSE_2560MS 3 + + +/* LG/HG thresholds are in LSB and depend on RANGE setting */ +/* no range check on threshold calculation */ + +#define BMA023_SELF_TEST0_ON 1 +#define BMA023_SELF_TEST1_ON 2 + +#define BMA023_EE_W_OFF 0 +#define BMA023_EE_W_ON 1 + + + +/* low-g, high-g, any_motion */ + + +#define BMA023_COUNTER_LG_RST 0 +#define BMA023_COUNTER_LG_0LSB BMA023_COUNTER_LG_RST +#define BMA023_COUNTER_LG_1LSB 1 +#define BMA023_COUNTER_LG_2LSB 2 +#define BMA023_COUNTER_LG_3LSB 3 + +#define BMA023_COUNTER_HG_RST 0 +#define BMA023_COUNTER_HG_0LSB BMA023_COUNTER_HG_RST +#define BMA023_COUNTER_HG_1LSB 1 +#define BMA023_COUNTER_HG_2LSB 2 +#define BMA023_COUNTER_HG_3LSB 3 + +#define BMA023_COUNTER_RST 0 +#define BMA023_COUNTER_0LSB BMA023_COUNTER_RST +#define BMA023_COUNTER_1LSB 1 +#define BMA023_COUNTER_2LSB 2 +#define BMA023_COUNTER_3LSB 3 + + + +/** Macro to convert floating point low-g-thresholds in G to 8-bit register values.<br> + * Example: BMA023_LG_THRES_IN_G( 0.3, 2.0) generates the register value for 0.3G threshold in 2G mode. + * \brief convert g-values to 8-bit value + */ +#define BMA023_LG_THRES_IN_G( gthres, range) ((256 * gthres ) / range) + +/** Macro to convert floating point high-g-thresholds in G to 8-bit register values.<br> + * Example: BMA023_HG_THRES_IN_G( 1.4, 2.0) generates the register value for 1.4G threshold in 2G mode. + * \brief convert g-values to 8-bit value + */ +#define BMA023_HG_THRES_IN_G(gthres, range) ((256 * gthres ) / range) + +/** Macro to convert floating point low-g-hysteresis in G to 8-bit register values.<br> + * Example: BMA023_LG_HYST_THRES_IN_G( 0.2, 2.0) generates the register value for 0.2G threshold in 2G mode. + * \brief convert g-values to 8-bit value + */ +#define BMA023_LG_HYST_IN_G( ghyst, range ) ((32 * ghyst) / range) + +/** Macro to convert floating point high-g-hysteresis in G to 8-bit register values.<br> + * Example: BMA023_HG_HYST_THRES_IN_G( 0.2, 2.0) generates the register value for 0.2G threshold in 2G mode. + * \brief convert g-values to 8-bit value + */ +#define BMA023_HG_HYST_IN_G( ghyst, range ) ((32 * ghyst) / range) + + +/** Macro to convert floating point G-thresholds to 8-bit register values<br> + * Example: BMA023_ANY_MOTION_THRES_IN_G( 1.2, 2.0) generates the register value for 1.2G threshold in 2G mode. + * \brief convert g-values to 8-bit value + */ + +#define BMA023_ANY_MOTION_THRES_IN_G( gthres, range) ((128 * gthres ) / range) + + +#define BMA023_ANY_MOTION_DUR_1 0 +#define BMA023_ANY_MOTION_DUR_3 1 +#define BMA023_ANY_MOTION_DUR_5 2 +#define BMA023_ANY_MOTION_DUR_7 3 + + + +#define BMA023_SHADOW_DIS_OFF 0 +#define BMA023_SHADOW_DIS_ON 1 + +#define BMA023_LATCH_INT_OFF 0 +#define BMA023_LATCH_INT_ON 1 + +#define BMA023_NEW_DATA_INT_OFF 0 +#define BMA023_NEW_DATA_INT_ON 1 + +#define BMA023_ENABLE_ADV_INT_OFF 0 +#define BMA023_ENABLE_ADV_INT_ON 1 + +#define BMA023_EN_ANY_MOTION_OFF 0 +#define BMA023_EN_ANY_MOTION_ON 1 + + +#define BMA023_ALERT_OFF 0 +#define BMA023_ALERT_ON 1 + +#define BMA023_ENABLE_LG_OFF 0 +#define BMA023_ENABLE_LG_ON 1 + +#define BMA023_ENABLE_HG_OFF 0 +#define BMA023_ENABLE_HG_ON 1 + + + +#define BMA023_INT_ALERT (1<<7) +#define BMA023_INT_ANY_MOTION (1<<6) +#define BMA023_INT_EN_ADV_INT (1<<5) +#define BMA023_INT_NEW_DATA (1<<4) +#define BMA023_INT_LATCH (1<<3) +#define BMA023_INT_HG (1<<1) +#define BMA023_INT_LG (1<<0) + + +#define BMA023_INT_STATUS_HG (1<<0) +#define BMA023_INT_STATUS_LG (1<<1) +#define BMA023_INT_STATUS_HG_LATCHED (1<<2) +#define BMA023_INT_STATUS_LG_LATCHED (1<<3) +#define BMA023_INT_STATUS_ALERT (1<<4) +#define BMA023_INT_STATUS_ST_RESULT (1<<7) + + +#define BMA023_CONF1_INT_MSK ((1<<BMA023_ALERT__POS) | (1<<BMA023_EN_ANY_MOTION__POS) | (1<<BMA023_ENABLE_HG__POS) | (1<<BMA023_ENABLE_LG__POS)) +#define BMA023_CONF2_INT_MSK ((1<<BMA023_ENABLE_ADV_INT__POS) | (1<<BMA023_NEW_DATA_INT__POS) | (1<<BMA023_LATCH_INT__POS)) + + + Index: linux-2.6.35/drivers/misc/mpu3050/log.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.35/drivers/misc/mpu3050/log.h 2010-12-22 14:09:28.000000000 +0800 @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2010 InvenSense Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * C/C++ logging functions. See the logging documentation for API details. + * + * We'd like these to be available from C code (in case we import some from + * somewhere), so this has a C interface. + * + * The output will be correct when the log file is shared between multiple + * threads and/or multiple processes so long as the operating system + * supports O_APPEND. These calls have mutex-protected data structures + * and so are NOT reentrant. Do not use MPL_LOG in a signal handler. + */ +#ifndef _LIBS_CUTILS_MPL_LOG_H +#define _LIBS_CUTILS_MPL_LOG_H + +#include <stdarg.h> + +#ifdef ANDROID +#include <utils/Log.h> /* For the LOG macro */ +#endif + +#ifdef __KERNEL__ +#include <linux/kernel.h> +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* --------------------------------------------------------------------- */ + +/* + * Normally we strip MPL_LOGV (VERBOSE messages) from release builds. + * You can modify this (for example with "#define MPL_LOG_NDEBUG 0" + * at the top of your source file) to change that behavior. + */ +#define MPL_LOGV /* comment this out to enable VERBOSE level logging */ +#ifndef MPL_LOG_NDEBUG +#ifdef NDEBUG +#define MPL_LOG_NDEBUG 1 +#else +#define MPL_LOG_NDEBUG 0 +#endif +#endif + +#ifdef __KERNEL__ +#define MPL_LOG_UNKNOWN MPL_LOG_VERBOSE +#define MPL_LOG_DEFAULT KERN_DEFAULT +#define MPL_LOG_VERBOSE KERN_CONT +#define MPL_LOG_DEBUG KERN_NOTICE +#define MPL_LOG_INFO KERN_INFO +#define MPL_LOG_WARN KERN_WARNING +#define MPL_LOG_ERROR KERN_ERR +#define MPL_LOG_SILENT MPL_LOG_VERBOSE + +#else + /* Based off the log priorities in android + /system/core/include/android/log.h */ +#define MPL_LOG_UNKNOWN (0) +#define MPL_LOG_DEFAULT (1) +#define MPL_LOG_VERBOSE (2) +#define MPL_LOG_DEBUG (3) +#define MPL_LOG_INFO (4) +#define MPL_LOG_WARN (5) +#define MPL_LOG_ERROR (6) +#define MPL_LOG_SILENT (8) +#endif + + +/* + * This is the local tag used for the following simplified + * logging macros. You can change this preprocessor definition + * before using the other macros to change the tag. + */ +#ifndef MPL_LOG_TAG +#ifdef __KERNEL__ +#define MPL_LOG_TAG +#else +#define MPL_LOG_TAG NULL +#endif +#endif + +/* --------------------------------------------------------------------- */ + +/* + * Simplified macro to send a verbose log message using the current MPL_LOG_TAG. + */ +#define MPL_LOGV +#ifndef MPL_LOGV +#if MPL_LOG_NDEBUG +#define MPL_LOGV(...) ((void)0) +#else +#define MPL_LOGV(...) ((void)MPL_LOG(LOG_VERBOSE, MPL_LOG_TAG, __VA_ARGS__)) +#endif +#endif + +#ifndef CONDITION +#define CONDITION(cond) ((cond) != 0) +#endif + +#ifndef MPL_LOGV_IF +#if MPL_LOG_NDEBUG +#define MPL_LOGV_IF(cond, ...) ((void)0) +#else +#define MPL_LOGV_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)MPL_LOG(LOG_VERBOSE, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) +#endif +#endif + +/* + * Simplified macro to send a debug log message using the current MPL_LOG_TAG. + */ +#ifndef MPL_LOGD +#define MPL_LOGD(...) ((void)MPL_LOG(LOG_DEBUG, MPL_LOG_TAG, __VA_ARGS__)) +#endif + +#ifndef MPL_LOGD_IF +#define MPL_LOGD_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)MPL_LOG(LOG_DEBUG, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) +#endif + +/* + * Simplified macro to send an info log message using the current MPL_LOG_TAG. + */ +#ifndef MPL_LOGI +#define MPL_LOGI(...) ((void)MPL_LOG(LOG_INFO, MPL_LOG_TAG, __VA_ARGS__)) +#endif + +#ifndef MPL_LOGI_IF +#define MPL_LOGI_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)MPL_LOG(LOG_INFO, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) +#endif + +/* + * Simplified macro to send a warning log message using the current MPL_LOG_TAG. + */ +#ifndef MPL_LOGW +#define MPL_LOGW(...) ((void)MPL_LOG(LOG_WARN, MPL_LOG_TAG, __VA_ARGS__)) +#endif + +#ifndef MPL_LOGW_IF +#define MPL_LOGW_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)MPL_LOG(LOG_WARN, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) +#endif + +/* + * Simplified macro to send an error log message using the current MPL_LOG_TAG. + */ +#ifndef MPL_LOGE +#define MPL_LOGE(...) ((void)MPL_LOG(LOG_ERROR, MPL_LOG_TAG, __VA_ARGS__)) +#endif + +#ifndef MPL_LOGE_IF +#define MPL_LOGE_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)MPL_LOG(LOG_ERROR, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) +#endif + +/* --------------------------------------------------------------------- */ + +/* + * Log a fatal error. If the given condition fails, this stops program + * execution like a normal assertion, but also generating the given message. + * It is NOT stripped from release builds. Note that the condition test + * is -inverted- from the normal assert() semantics. + */ +#define MPL_LOG_ALWAYS_FATAL_IF(cond, ...) \ + ((CONDITION(cond)) \ + ? ((void)android_printAssert(#cond, MPL_LOG_TAG, __VA_ARGS__)) \ + : (void)0) + +#define MPL_LOG_ALWAYS_FATAL(...) \ + (((void)android_printAssert(NULL, MPL_LOG_TAG, __VA_ARGS__))) + +/* + * Versions of MPL_LOG_ALWAYS_FATAL_IF and MPL_LOG_ALWAYS_FATAL that + * are stripped out of release builds. + */ +#if MPL_LOG_NDEBUG + +#define MPL_LOG_FATAL_IF(cond, ...) ((void)0) +#define MPL_LOG_FATAL(...) ((void)0) + +#else + +#define MPL_LOG_FATAL_IF(cond, ...) MPL_LOG_ALWAYS_FATAL_IF(cond, __VA_ARGS__) +#define MPL_LOG_FATAL(...) MPL_LOG_ALWAYS_FATAL(__VA_ARGS__) + +#endif + +/* + * Assertion that generates a log message when the assertion fails. + * Stripped out of release builds. Uses the current MPL_LOG_TAG. + */ +#define MPL_LOG_ASSERT(cond, ...) MPL_LOG_FATAL_IF(!(cond), __VA_ARGS__) + +/* --------------------------------------------------------------------- */ + +/* + * Basic log message macro. + * + * Example: + * MPL_LOG(MPL_LOG_WARN, NULL, "Failed with error %d", errno); + * + * The second argument may be NULL or "" to indicate the "global" tag. + */ +#ifndef MPL_LOG +#define MPL_LOG(priority, tag, ...) \ + MPL_LOG_PRI(priority, tag, __VA_ARGS__) +#endif + +/* + * Log macro that allows you to specify a number for the priority. + */ +#ifndef MPL_LOG_PRI +#ifdef ANDROID +#define MPL_LOG_PRI(priority, tag, ...) \ + LOG(priority, tag, __VA_ARGS__) +#elif defined __KERNEL__ +#define MPL_LOG_PRI(priority, tag, ...) \ + printk(MPL_##priority tag __VA_ARGS__) +#else +#define MPL_LOG_PRI(priority, tag, ...) \ + _MLPrintLog(MPL_##priority, tag, __VA_ARGS__) +#endif +#endif + +/* + * Log macro that allows you to pass in a varargs ("args" is a va_list). + */ +#ifndef MPL_LOG_PRI_VA +#ifdef ANDROID +#define MPL_LOG_PRI_VA(priority, tag, fmt, args) \ + android_vprintLog(priority, NULL, tag, fmt, args) +#elif defined __KERNEL__ +#define MPL_LOG_PRI_VA(priority, tag, fmt, args) \ + vprintk(MPL_##priority tag fmt, args) +#else +#define MPL_LOG_PRI_VA(priority, tag, fmt, args) \ + _MLPrintVaLog(priority, NULL, tag, fmt, args) +#endif +#endif + +/* --------------------------------------------------------------------- */ + +/* + * =========================================================================== + * + * The stuff in the rest of this file should not be used directly. + */ + +#ifndef ANDROID + int _MLPrintLog(int priority, const char *tag, const char *fmt, + ...); + int _MLPrintVaLog(int priority, const char *tag, const char *fmt, + va_list args); +/* Final implementation of actual writing to a character device */ + int _MLWriteLog(const char *buf, int buflen); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _LIBS_CUTILS_MPL_LOG_H */ Index: linux-2.6.35/drivers/misc/mpu3050/mlos-kernel.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.35/drivers/misc/mpu3050/mlos-kernel.c 2010-12-22 14:09:28.000000000 +0800 @@ -0,0 +1,89 @@ +/* + $License: + Copyright (C) 2010 InvenSense Corporation, All Rights Reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + $ + */ +/** + * @defgroup + * @brief + * + * @{ + * @file mlos-kernel.c + * @brief + * + * + */ + +#include "mlos.h" +#include <linux/delay.h> +#include <linux/slab.h> + +void *MLOSMalloc(unsigned int numBytes) +{ + return kmalloc(numBytes, GFP_KERNEL); +} + +tMLError MLOSFree(void *ptr) +{ + kfree(ptr); + return ML_SUCCESS; +} + +tMLError MLOSCreateMutex(HANDLE *mutex) +{ + /* @todo implement if needed */ + return ML_ERROR_FEATURE_NOT_IMPLEMENTED; +} + +tMLError MLOSLockMutex(HANDLE mutex) +{ + /* @todo implement if needed */ + return ML_ERROR_FEATURE_NOT_IMPLEMENTED; +} + +tMLError MLOSUnlockMutex(HANDLE mutex) +{ + /* @todo implement if needed */ + return ML_ERROR_FEATURE_NOT_IMPLEMENTED; +} + +tMLError MLOSDestroyMutex(HANDLE handle) +{ + /* @todo implement if needed */ + return ML_ERROR_FEATURE_NOT_IMPLEMENTED; +} + +FILE *MLOSFOpen(char *filename) +{ + /* @todo implement if needed */ + return NULL; +} + +void MLOSFClose(FILE *fp) +{ + /* @todo implement if needed */ +} + +void MLOSSleep(int mSecs) +{ + msleep(mSecs); +} + +unsigned long MLOSGetTickCount(void) +{ + /* @todo implement if needed */ + return ML_ERROR_FEATURE_NOT_IMPLEMENTED; +} Index: linux-2.6.35/drivers/misc/mpu3050/Makefile =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.35/drivers/misc/mpu3050/Makefile 2010-12-22 14:09:28.000000000 +0800 @@ -0,0 +1,114 @@ + +# Kernel makefile for motions sensors +# +# + +# MPU +obj-$(CONFIG_SENSORS_MPU3050) += mpu3050.o +mpu3050-objs += mpuirq.o \ + mpu-sysfs.o \ + mpu-dev.o \ + mpu-i2c.o \ + mlsl-kernel.o \ + mlos-kernel.o \ + $(MLLITE_DIR)mldl_cfg.o + +# +# Accel options +# +ifdef CONFIG_SENSORS_ADXL346 +mpu3050-objs += $(MLLITE_DIR)accel/adxl346.o +endif + +ifdef CONFIG_SENSORS_BMA023 +mpu3050-objs += $(MLLITE_DIR)accel/bma023.o +endif + +ifdef CONFIG_SENSORS_BMA150 +mpu3050-objs += $(MLLITE_DIR)accel/bma150.o +endif + +ifdef CONFIG_SENSORS_BMA222 +mpu3050-objs += $(MLLITE_DIR)accel/bma222.o +endif + +ifdef CONFIG_SENSORS_KXSD9 +mpu3050-objs += $(MLLITE_DIR)accel/kxsd9.o +endif + +ifdef CONFIG_SENSORS_KXTF9 +mpu3050-objs += $(MLLITE_DIR)accel/kxtf9.o +endif + +ifdef CONFIG_SENSORS_LIS331DLH +mpu3050-objs += $(MLLITE_DIR)accel/lis331.o +endif + +ifdef CONFIG_SENSORS_LSM303DLHA +mpu3050-objs += $(MLLITE_DIR)accel/lsm303a.o +endif + +ifdef CONFIG_SENSORS_MMA8450 +mpu3050-objs += $(MLLITE_DIR)accel/mma8450.o +endif + +ifdef CONFIG_SENSORS_MMA8451 +mpu3050-objs += $(MLLITE_DIR)accel/mma8451.o +endif + +# +# Compass options +# +ifdef CONFIG_SENSORS_AK8975 +mpu3050-objs += $(MLLITE_DIR)compass/ak8975.o +endif + +ifdef CONFIG_SENSORS_AMI304 +mpu3050-objs += $(MLLITE_DIR)compass/ami304.o +endif + +ifdef CONFIG_SENSORS_HMC5883 +mpu3050-objs += $(MLLITE_DIR)compass/hmc5883.o +endif + +ifdef CONFIG_SENSORS_LSM303DLHM +mpu3050-objs += $(MLLITE_DIR)compass/lsm303m.o +endif + +ifdef CONFIG_SENSORS_MMC314X +mpu3050-objs += $(MLLITE_DIR)compass/mmc314x.o +endif + +ifdef CONFIG_SENSORS_YAS529 +mpu3050-objs += $(MLLITE_DIR)compass/yas529-kernel.o +endif + +ifdef CONFIG_SENSORS_HSCDTD002B +mpu3050-objs += $(MLLITE_DIR)compass/hscdtd002b.o +endif + +EXTRA_CFLAGS += -I$(M)/$(MLLITE_DIR) \ + -I$(M)/../../include \ + -Idrivers/misc/mpu3050 \ + -Iinclude/linux + +ifdef CONFIG_SENSORS_MPU_DEBUG +EXTRA_CFLAGS += -DDEBUG +endif + +obj-$(CONFIG_SENSORS_MPU6000)= mpu6000.o +mpu6000-objs += mpuirq.o \ + mpu-dev.o \ + mpu-i2c.o \ + mlsl-kernel.o \ + mlos-kernel.o \ + $(MLLITE_DIR)mldl_cfg.o \ + $(MLLITE_DIR)accel/mantis.o + +ifdef CONFIG_SENSORS_AK8975 +mpu6000-objs += $(MLLITE_DIR)compass/ak8975.o +endif + +ifdef CONFIG_SENSORS_MPU6000 +EXTRA_CFLAGS += -DM_HW +endif Index: linux-2.6.35/drivers/misc/Makefile =================================================================== --- linux-2.6.35.orig/drivers/misc/Makefile 2010-12-22 14:09:27.000000000 +0800 +++ linux-2.6.35/drivers/misc/Makefile 2010-12-22 14:09:47.000000000 +0800 @@ -46,3 +46,7 @@ obj-y += ti-st/ obj-$(CONFIG_CMT) += cmt/ + +obj-y += mpu3050/ + + _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
