Lines Matching refs:capdev

83 static int atmel_read(struct atmel_captouch_device *capdev,
86 struct i2c_client *client = capdev->client;
91 if (len > sizeof(capdev->xfer_buf) - 2)
94 capdev->xfer_buf[0] = reg;
95 capdev->xfer_buf[1] = len;
99 msg[0].buf = capdev->xfer_buf;
104 msg[1].buf = capdev->xfer_buf;
111 if (capdev->xfer_buf[0] != reg) {
114 capdev->xfer_buf[0], reg);
118 memcpy(data, &capdev->xfer_buf[2], len);
130 struct atmel_captouch_device *capdev = data;
131 struct device *dev = &capdev->client->dev;
137 error = atmel_read(capdev, REG_KEY_STATE, &new_btn, 1);
145 changed_btn = new_btn ^ capdev->prev_btn;
146 capdev->prev_btn = new_btn;
148 for (i = 0; i < capdev->num_btn; i++) {
150 input_report_key(capdev->input,
151 capdev->keycodes[i],
155 input_sync(capdev->input);
166 struct atmel_captouch_device *capdev;
180 capdev = devm_kzalloc(dev, sizeof(*capdev), GFP_KERNEL);
181 if (!capdev)
184 capdev->client = client;
186 err = atmel_read(capdev, REG_KEY_STATE,
187 &capdev->prev_btn, sizeof(capdev->prev_btn));
193 capdev->input = devm_input_allocate_device(dev);
194 if (!capdev->input) {
199 capdev->input->id.bustype = BUS_I2C;
200 capdev->input->id.product = 0x880A;
201 capdev->input->id.version = 0;
202 capdev->input->name = "ATMegaXX Capacitive Button Controller";
203 __set_bit(EV_KEY, capdev->input->evbit);
212 __set_bit(EV_REP, capdev->input->evbit);
214 capdev->num_btn = of_property_count_u32_elems(node, "linux,keymap");
215 if (capdev->num_btn > MAX_NUM_OF_BUTTONS)
216 capdev->num_btn = MAX_NUM_OF_BUTTONS;
219 capdev->keycodes,
220 capdev->num_btn);
227 for (i = 0; i < capdev->num_btn; i++)
228 __set_bit(capdev->keycodes[i], capdev->input->keybit);
230 capdev->input->keycode = capdev->keycodes;
231 capdev->input->keycodesize = sizeof(capdev->keycodes[0]);
232 capdev->input->keycodemax = capdev->num_btn;
234 err = input_register_device(capdev->input);
241 "atmel_captouch", capdev);