Lines Matching refs:tj9

80 static int kxtj9_i2c_read(struct kxtj9_data *tj9, u8 addr, u8 *data, int len)
84 .addr = tj9->client->addr,
85 .flags = tj9->client->flags,
90 .addr = tj9->client->addr,
91 .flags = tj9->client->flags | I2C_M_RD,
97 return i2c_transfer(tj9->client->adapter, msgs, 2);
100 static void kxtj9_report_acceleration_data(struct kxtj9_data *tj9)
106 err = kxtj9_i2c_read(tj9, XOUT_L, (u8 *)acc_data, 6);
108 dev_err(&tj9->client->dev, "accelerometer data read failed\n");
110 x = le16_to_cpu(acc_data[tj9->pdata.axis_map_x]);
111 y = le16_to_cpu(acc_data[tj9->pdata.axis_map_y]);
112 z = le16_to_cpu(acc_data[tj9->pdata.axis_map_z]);
114 x >>= tj9->shift;
115 y >>= tj9->shift;
116 z >>= tj9->shift;
118 input_report_abs(tj9->input_dev, ABS_X, tj9->pdata.negate_x ? -x : x);
119 input_report_abs(tj9->input_dev, ABS_Y, tj9->pdata.negate_y ? -y : y);
120 input_report_abs(tj9->input_dev, ABS_Z, tj9->pdata.negate_z ? -z : z);
121 input_sync(tj9->input_dev);
126 struct kxtj9_data *tj9 = dev;
130 kxtj9_report_acceleration_data(tj9);
132 err = i2c_smbus_read_byte_data(tj9->client, INT_REL);
134 dev_err(&tj9->client->dev,
140 static int kxtj9_update_g_range(struct kxtj9_data *tj9, u8 new_g_range)
144 tj9->shift = 4;
147 tj9->shift = 3;
150 tj9->shift = 2;
156 tj9->ctrl_reg1 &= 0xe7;
157 tj9->ctrl_reg1 |= new_g_range;
162 static int kxtj9_update_odr(struct kxtj9_data *tj9, unsigned int poll_interval)
169 tj9->data_ctrl = kxtj9_odr_table[i].mask;
174 err = i2c_smbus_write_byte_data(tj9->client, CTRL_REG1, 0);
178 err = i2c_smbus_write_byte_data(tj9->client, DATA_CTRL, tj9->data_ctrl);
182 err = i2c_smbus_write_byte_data(tj9->client, CTRL_REG1, tj9->ctrl_reg1);
189 static int kxtj9_device_power_on(struct kxtj9_data *tj9)
191 if (tj9->pdata.power_on)
192 return tj9->pdata.power_on();
197 static void kxtj9_device_power_off(struct kxtj9_data *tj9)
201 tj9->ctrl_reg1 &= PC1_OFF;
202 err = i2c_smbus_write_byte_data(tj9->client, CTRL_REG1, tj9->ctrl_reg1);
204 dev_err(&tj9->client->dev, "soft power off failed\n");
206 if (tj9->pdata.power_off)
207 tj9->pdata.power_off();
210 static int kxtj9_enable(struct kxtj9_data *tj9)
214 err = kxtj9_device_power_on(tj9);
219 err = i2c_smbus_write_byte_data(tj9->client, CTRL_REG1, 0);
224 if (tj9->client->irq) {
225 err = i2c_smbus_write_byte_data(tj9->client,
226 INT_CTRL1, tj9->int_ctrl);
231 err = kxtj9_update_g_range(tj9, tj9->pdata.g_range);
236 tj9->ctrl_reg1 |= PC1_ON;
237 err = i2c_smbus_write_byte_data(tj9->client, CTRL_REG1, tj9->ctrl_reg1);
241 err = kxtj9_update_odr(tj9, tj9->last_poll_interval);
246 if (tj9->client->irq) {
247 err = i2c_smbus_read_byte_data(tj9->client, INT_REL);
249 dev_err(&tj9->client->dev,
258 kxtj9_device_power_off(tj9);
262 static void kxtj9_disable(struct kxtj9_data *tj9)
264 kxtj9_device_power_off(tj9);
269 struct kxtj9_data *tj9 = input_get_drvdata(input);
271 return kxtj9_enable(tj9);
276 struct kxtj9_data *tj9 = input_get_drvdata(dev);
278 kxtj9_disable(tj9);
297 struct kxtj9_data *tj9 = i2c_get_clientdata(client);
299 return sprintf(buf, "%d\n", tj9->last_poll_interval);
307 struct kxtj9_data *tj9 = i2c_get_clientdata(client);
308 struct input_dev *input_dev = tj9->input_dev;
325 tj9->last_poll_interval = max(interval, tj9->pdata.min_interval);
327 kxtj9_update_odr(tj9, tj9->last_poll_interval);
348 struct kxtj9_data *tj9 = input_get_drvdata(input);
351 kxtj9_report_acceleration_data(tj9);
353 if (poll_interval != tj9->last_poll_interval) {
354 kxtj9_update_odr(tj9, poll_interval);
355 tj9->last_poll_interval = poll_interval;
361 struct kxtj9_data *tj9 = data;
363 if (tj9->pdata.exit)
364 tj9->pdata.exit();
367 static int kxtj9_verify(struct kxtj9_data *tj9)
371 retval = kxtj9_device_power_on(tj9);
375 retval = i2c_smbus_read_byte_data(tj9->client, WHO_AM_I);
377 dev_err(&tj9->client->dev, "read err int source\n");
384 kxtj9_device_power_off(tj9);
393 struct kxtj9_data *tj9;
408 tj9 = devm_kzalloc(&client->dev, sizeof(*tj9), GFP_KERNEL);
409 if (!tj9) {
415 tj9->client = client;
416 tj9->pdata = *pdata;
424 err = devm_add_action_or_reset(&client->dev, kxtj9_platform_exit, tj9);
428 err = kxtj9_verify(tj9);
434 i2c_set_clientdata(client, tj9);
436 tj9->ctrl_reg1 = tj9->pdata.res_12bit | tj9->pdata.g_range;
437 tj9->last_poll_interval = tj9->pdata.init_interval;
445 input_set_drvdata(input_dev, tj9);
446 tj9->input_dev = input_dev;
474 tj9->int_ctrl |= KXTJ9_IEN | KXTJ9_IEA | KXTJ9_IEL;
475 tj9->ctrl_reg1 |= DRDYE;
481 "kxtj9-irq", tj9);
501 struct kxtj9_data *tj9 = i2c_get_clientdata(client);
502 struct input_dev *input_dev = tj9->input_dev;
507 kxtj9_disable(tj9);
516 struct kxtj9_data *tj9 = i2c_get_clientdata(client);
517 struct input_dev *input_dev = tj9->input_dev;
522 kxtj9_enable(tj9);