Developer World
Spresense SDK Library v3.3.0-375c679
cxd56_bmi160.h
1/****************************************************************************
2 * boards/arm/cxd56xx/spresense/include/cxd56_bmi160.h
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one or more
5 * contributor license agreements. See the NOTICE file distributed with
6 * this work for additional information regarding copyright ownership. The
7 * ASF licenses this file to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance with the
9 * License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 * License for the specific language governing permissions and limitations
17 * under the License.
18 *
19 ****************************************************************************/
20
21#ifndef __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_BMI160_H
22#define __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_BMI160_H
23
24/****************************************************************************
25 * Included Files
26 ****************************************************************************/
27
28#include <nuttx/config.h>
29
30/****************************************************************************
31 * Public Types
32 ****************************************************************************/
33
34#ifndef __ASSEMBLY__
35
36/****************************************************************************
37 * Public Data
38 ****************************************************************************/
39
40#undef EXTERN
41#if defined(__cplusplus)
42#define EXTERN extern "C"
43extern "C"
44{
45#else
46#define EXTERN extern
47#endif
48
49/****************************************************************************
50 * Public Function Prototypes
51 ****************************************************************************/
52
53/****************************************************************************
54 * Name: board_bmi160_initialize
55 *
56 * Description:
57 * Initialize BMI160 i2c driver and register the BMI160 device.
58 *
59 ****************************************************************************/
60
61int board_bmi160_initialize(int bus);
62
63#ifdef CONFIG_SENSORS_BMI160_SCU
64/****************************************************************************
65 * Name: bmi160_init
66 *
67 * Description:
68 * Initialize BMI160 accelerometer/gyro device
69 *
70 * Input Parameters:
71 * dev - An instance of the SPI or I2C interface to use to communicate
72 * with BMI160
73 * port - I2C port number
74 *
75 * Returned Value:
76 * Zero (OK) on success; a negated errno value on failure.
77 *
78 ****************************************************************************/
79
80#ifdef CONFIG_SENSORS_BMI160_SCU_I2C
81int bmi160_init(struct i2c_master_s *dev, int port);
82#else /* CONFIG_SENSORS_BMI160_SCU_SPI */
83int bmi160_init(struct spi_dev_s *dev);
84#endif
85
86/****************************************************************************
87 * Name: bmi160gyro_register
88 *
89 * Description:
90 * Register the BMI160 gyro character device as 'devpath'
91 *
92 * Input Parameters:
93 * devpath - The full path to the driver to register. E.g., "/dev/gyro"
94 * minor - The number of sequencer
95 * dev - An instance of the SPI or I2C interface to use to communicate
96 * with BMI160
97 * port - I2C port number
98 *
99 * Returned Value:
100 * Zero (OK) on success; a negated errno value on failure.
101 *
102 ****************************************************************************/
103
104#ifdef CONFIG_SENSORS_BMI160_SCU_I2C
105int bmi160gyro_register(const char *devpath, int minor,
106 struct i2c_master_s *dev, int port);
107#else /* CONFIG_SENSORS_BMI160_SCU_SPI */
108int bmi160gyro_register(const char *devpath, int minor,
109 struct spi_dev_s *dev);
110#endif
111
112/****************************************************************************
113 * Name: bmi160accel_register
114 *
115 * Description:
116 * Register the BMI160 accelerometer character device as 'devpath'
117 *
118 * Input Parameters:
119 * devpath - The full path to the driver to register. E.g., "/dev/accel"
120 * minor - The number of sequencer
121 * dev - An instance of the SPI or I2C interface to use to communicate
122 * with BMI160
123 * port - I2C port number
124 *
125 * Returned Value:
126 * Zero (OK) on success; a negated errno value on failure.
127 *
128 ****************************************************************************/
129
130#ifdef CONFIG_SENSORS_BMI160_SCU_I2C
131int bmi160accel_register(const char *devpath, int minor,
132 struct i2c_master_s *dev, int port);
133#else /* CONFIG_SENSORS_BMI160_SCU_SPI */
134int bmi160accel_register(const char *devpath, int minor,
135 struct spi_dev_s *dev);
136#endif
137
138#endif /* CONFIG_SENSORS_BMI160_SCU */
139
140#undef EXTERN
141#if defined(__cplusplus)
142}
143#endif
144
145#endif /* __ASSEMBLY__ */
146#endif /* __BOARDS_ARM_CXD56XX_SPRESENSE_INCLUDE_CXD56_BMI160_H */