Lines Matching refs:data

73 #define CMA3000_READ(data, reg, msg) \
74 (data->bus_ops->read(data->dev, reg, msg))
75 #define CMA3000_SET(data, reg, val, msg) \
76 ((data)->bus_ops->write(data->dev, reg, val, msg))
95 static void decode_mg(struct cma3000_accl_data *data, int *datax,
99 *datax = ((s8)*datax) * data->bit_to_mg;
100 *datay = ((s8)*datay) * data->bit_to_mg;
101 *dataz = ((s8)*dataz) * data->bit_to_mg;
106 struct cma3000_accl_data *data = dev_id;
110 intr_status = CMA3000_READ(data, CMA3000_INTSTATUS, "interrupt status");
116 input_report_abs(data->input_dev, ABS_MISC, 1);
117 input_sync(data->input_dev);
119 input_report_abs(data->input_dev, ABS_MISC, 0);
122 datax = CMA3000_READ(data, CMA3000_DOUTX, "X");
123 datay = CMA3000_READ(data, CMA3000_DOUTY, "Y");
124 dataz = CMA3000_READ(data, CMA3000_DOUTZ, "Z");
126 ctrl = CMA3000_READ(data, CMA3000_CTRL, "ctrl");
130 data->bit_to_mg = mode_to_mg[mode][range];
133 if (data->bit_to_mg == 0)
137 decode_mg(data, &datax, &datay, &dataz);
139 input_report_abs(data->input_dev, ABS_X, datax);
140 input_report_abs(data->input_dev, ABS_Y, datay);
141 input_report_abs(data->input_dev, ABS_Z, dataz);
142 input_sync(data->input_dev);
147 static int cma3000_reset(struct cma3000_accl_data *data)
152 CMA3000_SET(data, CMA3000_RSTR, 0x02, "Reset");
153 CMA3000_SET(data, CMA3000_RSTR, 0x0A, "Reset");
154 CMA3000_SET(data, CMA3000_RSTR, 0x04, "Reset");
159 val = CMA3000_READ(data, CMA3000_STATUS, "Status");
161 dev_err(data->dev, "Reset failed\n");
166 dev_err(data->dev, "Parity Error\n");
173 static int cma3000_poweron(struct cma3000_accl_data *data)
175 const struct cma3000_platform_data *pdata = data->pdata;
179 if (data->g_range == CMARANGE_2G) {
180 ctrl = (data->mode << 1) | CMA3000_RANGE2G;
181 } else if (data->g_range == CMARANGE_8G) {
182 ctrl = (data->mode << 1) | CMA3000_RANGE8G;
184 dev_info(data->dev,
186 ctrl = (data->mode << 1) | CMA3000_RANGE8G;
189 ctrl |= data->bus_ops->ctrl_mod;
191 CMA3000_SET(data, CMA3000_MDTHR, pdata->mdthr,
193 CMA3000_SET(data, CMA3000_MDFFTMR, pdata->mdfftmr,
195 CMA3000_SET(data, CMA3000_FFTHR, pdata->ffthr,
197 ret = CMA3000_SET(data, CMA3000_CTRL, ctrl, "Mode setting");
206 static int cma3000_poweroff(struct cma3000_accl_data *data)
210 ret = CMA3000_SET(data, CMA3000_CTRL, CMAMODE_POFF, "Mode setting");
218 struct cma3000_accl_data *data = input_get_drvdata(input_dev);
220 mutex_lock(&data->mutex);
222 if (!data->suspended)
223 cma3000_poweron(data);
225 data->opened = true;
227 mutex_unlock(&data->mutex);
234 struct cma3000_accl_data *data = input_get_drvdata(input_dev);
236 mutex_lock(&data->mutex);
238 if (!data->suspended)
239 cma3000_poweroff(data);
241 data->opened = false;
243 mutex_unlock(&data->mutex);
246 void cma3000_suspend(struct cma3000_accl_data *data)
248 mutex_lock(&data->mutex);
250 if (!data->suspended && data->opened)
251 cma3000_poweroff(data);
253 data->suspended = true;
255 mutex_unlock(&data->mutex);
260 void cma3000_resume(struct cma3000_accl_data *data)
262 mutex_lock(&data->mutex);
264 if (data->suspended && data->opened)
265 cma3000_poweron(data);
267 data->suspended = false;
269 mutex_unlock(&data->mutex);
277 struct cma3000_accl_data *data;
283 dev_err(dev, "platform data not found\n");
295 data = kzalloc(sizeof(struct cma3000_accl_data), GFP_KERNEL);
297 if (!data || !input_dev) {
302 data->dev = dev;
303 data->input_dev = input_dev;
304 data->bus_ops = bops;
305 data->pdata = pdata;
306 data->irq = irq;
307 mutex_init(&data->mutex);
309 data->mode = pdata->mode;
310 if (data->mode > CMAMODE_POFF) {
311 data->mode = CMAMODE_MOTDET;
316 data->g_range = pdata->g_range;
317 if (data->g_range != CMARANGE_2G && data->g_range != CMARANGE_8G) {
320 data->g_range = CMARANGE_8G;
329 -data->g_range, data->g_range, pdata->fuzz_x, 0);
331 -data->g_range, data->g_range, pdata->fuzz_y, 0);
333 -data->g_range, data->g_range, pdata->fuzz_z, 0);
336 input_set_drvdata(input_dev, data);
338 error = cma3000_reset(data);
342 rev = CMA3000_READ(data, CMA3000_REVID, "Revid");
352 "cma3000_d0x", data);
358 error = input_register_device(data->input_dev);
364 return data;
367 free_irq(irq, data);
370 kfree(data);
376 void cma3000_exit(struct cma3000_accl_data *data)
378 free_irq(data->irq, data);
379 input_unregister_device(data->input_dev);
380 kfree(data);