Lines Matching refs:navpoint

34 struct navpoint {  struct
82 static void navpoint_packet(struct navpoint *navpoint) in navpoint_packet() argument
88 switch (navpoint->data[0]) { in navpoint_packet()
94 finger = (navpoint->data[1] & 0x01); in navpoint_packet()
95 gesture = (navpoint->data[1] & 0x02); in navpoint_packet()
96 x = ((navpoint->data[2] & 0x1f) << 8) | navpoint->data[3]; in navpoint_packet()
97 y = ((navpoint->data[4] & 0x1f) << 8) | navpoint->data[5]; in navpoint_packet()
98 z = navpoint->data[6]; in navpoint_packet()
99 input_report_key(navpoint->input, BTN_TOUCH, finger); in navpoint_packet()
100 input_report_abs(navpoint->input, ABS_X, x); in navpoint_packet()
101 input_report_abs(navpoint->input, ABS_Y, y); in navpoint_packet()
102 input_report_abs(navpoint->input, ABS_PRESSURE, z); in navpoint_packet()
103 input_report_key(navpoint->input, BTN_TOOL_FINGER, finger); in navpoint_packet()
104 input_report_key(navpoint->input, BTN_LEFT, gesture); in navpoint_packet()
105 input_sync(navpoint->input); in navpoint_packet()
109 if ((navpoint->data[1] & 0xf0) == 0x10) in navpoint_packet()
113 dev_warn(navpoint->dev, in navpoint_packet()
115 navpoint->data[0], navpoint->data[1]); in navpoint_packet()
122 struct navpoint *navpoint = dev_id; in navpoint_irq() local
123 struct ssp_device *ssp = navpoint->ssp; in navpoint_irq()
129 dev_warn(navpoint->dev, in navpoint_irq()
139 navpoint->data[navpoint->index + 0] = (data >> 8); in navpoint_irq()
140 navpoint->data[navpoint->index + 1] = data; in navpoint_irq()
141 navpoint->index += 2; in navpoint_irq()
142 if (HEADER_LENGTH(navpoint->data[0]) < navpoint->index) { in navpoint_irq()
143 navpoint_packet(navpoint); in navpoint_irq()
144 navpoint->index = 0; in navpoint_irq()
153 static void navpoint_up(struct navpoint *navpoint) in navpoint_up() argument
155 struct ssp_device *ssp = navpoint->ssp; in navpoint_up()
173 dev_err(navpoint->dev, in navpoint_up()
176 if (gpio_is_valid(navpoint->gpio)) in navpoint_up()
177 gpio_set_value(navpoint->gpio, 1); in navpoint_up()
180 static void navpoint_down(struct navpoint *navpoint) in navpoint_down() argument
182 struct ssp_device *ssp = navpoint->ssp; in navpoint_down()
184 if (gpio_is_valid(navpoint->gpio)) in navpoint_down()
185 gpio_set_value(navpoint->gpio, 0); in navpoint_down()
194 struct navpoint *navpoint = input_get_drvdata(input); in navpoint_open() local
196 navpoint_up(navpoint); in navpoint_open()
203 struct navpoint *navpoint = input_get_drvdata(input); in navpoint_close() local
205 navpoint_down(navpoint); in navpoint_close()
214 struct navpoint *navpoint; in navpoint_probe() local
241 navpoint = kzalloc(sizeof(*navpoint), GFP_KERNEL); in navpoint_probe()
243 if (!navpoint || !input) { in navpoint_probe()
248 navpoint->ssp = ssp; in navpoint_probe()
249 navpoint->input = input; in navpoint_probe()
250 navpoint->dev = &pdev->dev; in navpoint_probe()
251 navpoint->gpio = pdata->gpio; in navpoint_probe()
273 input_set_drvdata(input, navpoint); in navpoint_probe()
275 error = request_irq(ssp->irq, navpoint_irq, 0, pdev->name, navpoint); in navpoint_probe()
283 platform_set_drvdata(pdev, navpoint); in navpoint_probe()
289 free_irq(ssp->irq, navpoint); in navpoint_probe()
292 kfree(navpoint); in navpoint_probe()
305 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_remove() local
306 struct ssp_device *ssp = navpoint->ssp; in navpoint_remove()
308 free_irq(ssp->irq, navpoint); in navpoint_remove()
310 input_unregister_device(navpoint->input); in navpoint_remove()
311 kfree(navpoint); in navpoint_remove()
324 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_suspend() local
325 struct input_dev *input = navpoint->input; in navpoint_suspend()
329 navpoint_down(navpoint); in navpoint_suspend()
338 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_resume() local
339 struct input_dev *input = navpoint->input; in navpoint_resume()
343 navpoint_up(navpoint); in navpoint_resume()