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

Reply via email to