2 * (C) Copyright 2013 Bosch Sensortec GmbH All Rights Reserved
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
9 * @brief Common APIs for Bosch MEMS sensor drivers
12 #include <linux/bst_sensor_common.h>
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 */
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 */
30 void bst_remap_sensor_data(struct bosch_sensor_data *data,
31 const struct bosch_sensor_axis_remap *remap)
33 struct bosch_sensor_data tmp;
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;
39 memcpy(data, &tmp, sizeof(*data));
41 EXPORT_SYMBOL(bst_remap_sensor_data);
44 void bst_remap_sensor_data_dft_tab(struct bosch_sensor_data *data,
47 /* sensor with place 0 needs not to be remapped */
48 if ((place <= 0) || (place >= MAX_AXIS_REMAP_TAB_SZ))
51 bst_remap_sensor_data(data, &bst_axis_remap_tab_dft[place]);
53 EXPORT_SYMBOL(bst_remap_sensor_data_dft_tab);
56 MODULE_LICENSE("GPL");