Lines Matching refs:data
84 #define CMA3000_READ(data, reg, msg) \ argument
85 (data->bus_ops->read(data->dev, reg, msg))
86 #define CMA3000_SET(data, reg, val, msg) \ argument
87 ((data)->bus_ops->write(data->dev, reg, val, msg))
106 static void decode_mg(struct cma3000_accl_data *data, int *datax, in decode_mg() argument
110 *datax = ((s8)*datax) * data->bit_to_mg; in decode_mg()
111 *datay = ((s8)*datay) * data->bit_to_mg; in decode_mg()
112 *dataz = ((s8)*dataz) * data->bit_to_mg; in decode_mg()
117 struct cma3000_accl_data *data = dev_id; in cma3000_thread_irq() local
121 intr_status = CMA3000_READ(data, CMA3000_INTSTATUS, "interrupt status"); in cma3000_thread_irq()
127 input_report_abs(data->input_dev, ABS_MISC, 1); in cma3000_thread_irq()
128 input_sync(data->input_dev); in cma3000_thread_irq()
130 input_report_abs(data->input_dev, ABS_MISC, 0); in cma3000_thread_irq()
133 datax = CMA3000_READ(data, CMA3000_DOUTX, "X"); in cma3000_thread_irq()
134 datay = CMA3000_READ(data, CMA3000_DOUTY, "Y"); in cma3000_thread_irq()
135 dataz = CMA3000_READ(data, CMA3000_DOUTZ, "Z"); in cma3000_thread_irq()
137 ctrl = CMA3000_READ(data, CMA3000_CTRL, "ctrl"); in cma3000_thread_irq()
141 data->bit_to_mg = mode_to_mg[mode][range]; in cma3000_thread_irq()
144 if (data->bit_to_mg == 0) in cma3000_thread_irq()
148 decode_mg(data, &datax, &datay, &dataz); in cma3000_thread_irq()
150 input_report_abs(data->input_dev, ABS_X, datax); in cma3000_thread_irq()
151 input_report_abs(data->input_dev, ABS_Y, datay); in cma3000_thread_irq()
152 input_report_abs(data->input_dev, ABS_Z, dataz); in cma3000_thread_irq()
153 input_sync(data->input_dev); in cma3000_thread_irq()
158 static int cma3000_reset(struct cma3000_accl_data *data) in cma3000_reset() argument
163 CMA3000_SET(data, CMA3000_RSTR, 0x02, "Reset"); in cma3000_reset()
164 CMA3000_SET(data, CMA3000_RSTR, 0x0A, "Reset"); in cma3000_reset()
165 CMA3000_SET(data, CMA3000_RSTR, 0x04, "Reset"); in cma3000_reset()
170 val = CMA3000_READ(data, CMA3000_STATUS, "Status"); in cma3000_reset()
172 dev_err(data->dev, "Reset failed\n"); in cma3000_reset()
177 dev_err(data->dev, "Parity Error\n"); in cma3000_reset()
184 static int cma3000_poweron(struct cma3000_accl_data *data) in cma3000_poweron() argument
186 const struct cma3000_platform_data *pdata = data->pdata; in cma3000_poweron()
190 if (data->g_range == CMARANGE_2G) { in cma3000_poweron()
191 ctrl = (data->mode << 1) | CMA3000_RANGE2G; in cma3000_poweron()
192 } else if (data->g_range == CMARANGE_8G) { in cma3000_poweron()
193 ctrl = (data->mode << 1) | CMA3000_RANGE8G; in cma3000_poweron()
195 dev_info(data->dev, in cma3000_poweron()
197 ctrl = (data->mode << 1) | CMA3000_RANGE8G; in cma3000_poweron()
200 ctrl |= data->bus_ops->ctrl_mod; in cma3000_poweron()
202 CMA3000_SET(data, CMA3000_MDTHR, pdata->mdthr, in cma3000_poweron()
204 CMA3000_SET(data, CMA3000_MDFFTMR, pdata->mdfftmr, in cma3000_poweron()
206 CMA3000_SET(data, CMA3000_FFTHR, pdata->ffthr, in cma3000_poweron()
208 ret = CMA3000_SET(data, CMA3000_CTRL, ctrl, "Mode setting"); in cma3000_poweron()
217 static int cma3000_poweroff(struct cma3000_accl_data *data) in cma3000_poweroff() argument
221 ret = CMA3000_SET(data, CMA3000_CTRL, CMAMODE_POFF, "Mode setting"); in cma3000_poweroff()
229 struct cma3000_accl_data *data = input_get_drvdata(input_dev); in cma3000_open() local
231 mutex_lock(&data->mutex); in cma3000_open()
233 if (!data->suspended) in cma3000_open()
234 cma3000_poweron(data); in cma3000_open()
236 data->opened = true; in cma3000_open()
238 mutex_unlock(&data->mutex); in cma3000_open()
245 struct cma3000_accl_data *data = input_get_drvdata(input_dev); in cma3000_close() local
247 mutex_lock(&data->mutex); in cma3000_close()
249 if (!data->suspended) in cma3000_close()
250 cma3000_poweroff(data); in cma3000_close()
252 data->opened = false; in cma3000_close()
254 mutex_unlock(&data->mutex); in cma3000_close()
257 void cma3000_suspend(struct cma3000_accl_data *data) in cma3000_suspend() argument
259 mutex_lock(&data->mutex); in cma3000_suspend()
261 if (!data->suspended && data->opened) in cma3000_suspend()
262 cma3000_poweroff(data); in cma3000_suspend()
264 data->suspended = true; in cma3000_suspend()
266 mutex_unlock(&data->mutex); in cma3000_suspend()
271 void cma3000_resume(struct cma3000_accl_data *data) in cma3000_resume() argument
273 mutex_lock(&data->mutex); in cma3000_resume()
275 if (data->suspended && data->opened) in cma3000_resume()
276 cma3000_poweron(data); in cma3000_resume()
278 data->suspended = false; in cma3000_resume()
280 mutex_unlock(&data->mutex); in cma3000_resume()
288 struct cma3000_accl_data *data; in cma3000_init() local
306 data = kzalloc(sizeof(struct cma3000_accl_data), GFP_KERNEL); in cma3000_init()
308 if (!data || !input_dev) { in cma3000_init()
313 data->dev = dev; in cma3000_init()
314 data->input_dev = input_dev; in cma3000_init()
315 data->bus_ops = bops; in cma3000_init()
316 data->pdata = pdata; in cma3000_init()
317 data->irq = irq; in cma3000_init()
318 mutex_init(&data->mutex); in cma3000_init()
320 data->mode = pdata->mode; in cma3000_init()
321 if (data->mode > CMAMODE_POFF) { in cma3000_init()
322 data->mode = CMAMODE_MOTDET; in cma3000_init()
327 data->g_range = pdata->g_range; in cma3000_init()
328 if (data->g_range != CMARANGE_2G && data->g_range != CMARANGE_8G) { in cma3000_init()
331 data->g_range = CMARANGE_8G; in cma3000_init()
342 -data->g_range, data->g_range, pdata->fuzz_x, 0); in cma3000_init()
344 -data->g_range, data->g_range, pdata->fuzz_y, 0); in cma3000_init()
346 -data->g_range, data->g_range, pdata->fuzz_z, 0); in cma3000_init()
349 input_set_drvdata(input_dev, data); in cma3000_init()
351 error = cma3000_reset(data); in cma3000_init()
355 rev = CMA3000_READ(data, CMA3000_REVID, "Revid"); in cma3000_init()
365 "cma3000_d0x", data); in cma3000_init()
371 error = input_register_device(data->input_dev); in cma3000_init()
377 return data; in cma3000_init()
380 free_irq(irq, data); in cma3000_init()
383 kfree(data); in cma3000_init()
389 void cma3000_exit(struct cma3000_accl_data *data) in cma3000_exit() argument
391 free_irq(data->irq, data); in cma3000_exit()
392 input_unregister_device(data->input_dev); in cma3000_exit()
393 kfree(data); in cma3000_exit()