Lines Matching +full:settling +full:- +full:time +full:- +full:us

1 // SPDX-License-Identifier: GPL-2.0-only
41 /* Settling time delay in ms */
44 /* Delay for clearing interrupt in us */
74 (data->bus_ops->read(data->dev, reg, msg))
76 ((data)->bus_ops->write(data->dev, reg, val, msg))
99 *datax = ((s8)*datax) * data->bit_to_mg; in decode_mg()
100 *datay = ((s8)*datay) * data->bit_to_mg; in decode_mg()
101 *dataz = ((s8)*dataz) * data->bit_to_mg; in decode_mg()
116 input_report_abs(data->input_dev, ABS_MISC, 1); in cma3000_thread_irq()
117 input_sync(data->input_dev); in cma3000_thread_irq()
119 input_report_abs(data->input_dev, ABS_MISC, 0); in cma3000_thread_irq()
130 data->bit_to_mg = mode_to_mg[mode][range]; in cma3000_thread_irq()
133 if (data->bit_to_mg == 0) in cma3000_thread_irq()
139 input_report_abs(data->input_dev, ABS_X, datax); in cma3000_thread_irq()
140 input_report_abs(data->input_dev, ABS_Y, datay); in cma3000_thread_irq()
141 input_report_abs(data->input_dev, ABS_Z, dataz); in cma3000_thread_irq()
142 input_sync(data->input_dev); in cma3000_thread_irq()
156 /* Settling time delay */ in cma3000_reset()
161 dev_err(data->dev, "Reset failed\n"); in cma3000_reset()
166 dev_err(data->dev, "Parity Error\n"); in cma3000_reset()
167 return -EIO; in cma3000_reset()
175 const struct cma3000_platform_data *pdata = data->pdata; in cma3000_poweron()
179 if (data->g_range == CMARANGE_2G) { in cma3000_poweron()
180 ctrl = (data->mode << 1) | CMA3000_RANGE2G; in cma3000_poweron()
181 } else if (data->g_range == CMARANGE_8G) { in cma3000_poweron()
182 ctrl = (data->mode << 1) | CMA3000_RANGE8G; in cma3000_poweron()
184 dev_info(data->dev, in cma3000_poweron()
186 ctrl = (data->mode << 1) | CMA3000_RANGE8G; in cma3000_poweron()
189 ctrl |= data->bus_ops->ctrl_mod; in cma3000_poweron()
191 CMA3000_SET(data, CMA3000_MDTHR, pdata->mdthr, in cma3000_poweron()
193 CMA3000_SET(data, CMA3000_MDFFTMR, pdata->mdfftmr, in cma3000_poweron()
194 "Time register"); in cma3000_poweron()
195 CMA3000_SET(data, CMA3000_FFTHR, pdata->ffthr, in cma3000_poweron()
199 return -EIO; in cma3000_poweron()
220 guard(mutex)(&data->mutex); in cma3000_open()
222 if (!data->suspended) in cma3000_open()
225 data->opened = true; in cma3000_open()
234 guard(mutex)(&data->mutex); in cma3000_close()
236 if (!data->suspended) in cma3000_close()
239 data->opened = false; in cma3000_close()
244 guard(mutex)(&data->mutex); in cma3000_suspend()
246 if (!data->suspended && data->opened) in cma3000_suspend()
249 data->suspended = true; in cma3000_suspend()
256 guard(mutex)(&data->mutex); in cma3000_resume()
258 if (data->suspended && data->opened) in cma3000_resume()
261 data->suspended = false; in cma3000_resume()
276 error = -EINVAL; in cma3000_init()
283 error = -EINVAL; in cma3000_init()
290 error = -ENOMEM; in cma3000_init()
294 data->dev = dev; in cma3000_init()
295 data->input_dev = input_dev; in cma3000_init()
296 data->bus_ops = bops; in cma3000_init()
297 data->pdata = pdata; in cma3000_init()
298 data->irq = irq; in cma3000_init()
299 mutex_init(&data->mutex); in cma3000_init()
301 data->mode = pdata->mode; in cma3000_init()
302 if (data->mode > CMAMODE_POFF) { in cma3000_init()
303 data->mode = CMAMODE_MOTDET; in cma3000_init()
308 data->g_range = pdata->g_range; in cma3000_init()
309 if (data->g_range != CMARANGE_2G && data->g_range != CMARANGE_8G) { in cma3000_init()
312 data->g_range = CMARANGE_8G; in cma3000_init()
315 input_dev->name = "cma3000-accelerometer"; in cma3000_init()
316 input_dev->id.bustype = bops->bustype; in cma3000_init()
317 input_dev->open = cma3000_open; in cma3000_init()
318 input_dev->close = cma3000_close; in cma3000_init()
321 -data->g_range, data->g_range, pdata->fuzz_x, 0); in cma3000_init()
323 -data->g_range, data->g_range, pdata->fuzz_y, 0); in cma3000_init()
325 -data->g_range, data->g_range, pdata->fuzz_z, 0); in cma3000_init()
343 pdata->irqflags | IRQF_ONESHOT, in cma3000_init()
350 error = input_register_device(data->input_dev); in cma3000_init()
370 free_irq(data->irq, data); in cma3000_exit()
371 input_unregister_device(data->input_dev); in cma3000_exit()
376 MODULE_DESCRIPTION("CMA3000-D0x Accelerometer Driver");