ARM: mali400: r5p2_rel0: add sc8830 platform codes
[profile/mobile/platform/kernel/linux-3.10-sc7730.git] / drivers / sensor / bst_sensor_common.c
1 /*
2  * (C) Copyright 2013 Bosch Sensortec GmbH All Rights Reserved
3  *
4  * This software program is licensed subject to the GNU General Public License
5  * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
6  *
7  * @date        Sep 19th, 2012
8  * @version     v1.0
9  * @brief       Common APIs for Bosch MEMS sensor drivers
10  */
11
12 #include <linux/bst_sensor_common.h>
13
14 #define MAX_AXIS_REMAP_TAB_SZ 8    /*P0~P7*/
15 static const struct bosch_sensor_axis_remap
16 bst_axis_remap_tab_dft[MAX_AXIS_REMAP_TAB_SZ] = {
17         /* src_x src_y src_z  sign_x  sign_y  sign_z */
18         {  0,    1,    2,     1,      1,      1 }, /* P0 */
19         {  1,    0,    2,     1,     -1,      1 }, /* P1 */
20         {  0,    1,    2,    -1,     -1,      1 }, /* P2 */
21         {  1,    0,    2,    -1,      1,      1 }, /* P3 */
22
23         {  0,    1,    2,    -1,      1,     -1 }, /* P4 */
24         {  1,    0,    2,    -1,     -1,     -1 }, /* P5 */
25         {  0,    1,    2,     1,     -1,     -1 }, /* P6 */
26         {  1,    0,    2,     1,      1,     -1 }, /* P7 */
27 };
28
29
30 void bst_remap_sensor_data(struct bosch_sensor_data *data,
31                 const struct bosch_sensor_axis_remap *remap)
32 {
33         struct bosch_sensor_data tmp;
34
35         tmp.x = data->v[remap->src_x] * remap->sign_x;
36         tmp.y = data->v[remap->src_y] * remap->sign_y;
37         tmp.z = data->v[remap->src_z] * remap->sign_z;
38
39         memcpy(data, &tmp, sizeof(*data));
40 }
41 EXPORT_SYMBOL(bst_remap_sensor_data);
42
43
44 void bst_remap_sensor_data_dft_tab(struct bosch_sensor_data *data,
45                 int place)
46 {
47         /* sensor with place 0 needs not to be remapped */
48         if ((place <= 0) || (place >= MAX_AXIS_REMAP_TAB_SZ))
49                 return;
50
51         bst_remap_sensor_data(data, &bst_axis_remap_tab_dft[place]);
52 }
53 EXPORT_SYMBOL(bst_remap_sensor_data_dft_tab);
54
55
56 MODULE_LICENSE("GPL");