Lines Matching refs:navpoint
31 struct navpoint { struct
79 static void navpoint_packet(struct navpoint *navpoint) in navpoint_packet() argument
85 switch (navpoint->data[0]) { in navpoint_packet()
91 finger = (navpoint->data[1] & 0x01); in navpoint_packet()
92 gesture = (navpoint->data[1] & 0x02); in navpoint_packet()
93 x = ((navpoint->data[2] & 0x1f) << 8) | navpoint->data[3]; in navpoint_packet()
94 y = ((navpoint->data[4] & 0x1f) << 8) | navpoint->data[5]; in navpoint_packet()
95 z = navpoint->data[6]; in navpoint_packet()
96 input_report_key(navpoint->input, BTN_TOUCH, finger); in navpoint_packet()
97 input_report_abs(navpoint->input, ABS_X, x); in navpoint_packet()
98 input_report_abs(navpoint->input, ABS_Y, y); in navpoint_packet()
99 input_report_abs(navpoint->input, ABS_PRESSURE, z); in navpoint_packet()
100 input_report_key(navpoint->input, BTN_TOOL_FINGER, finger); in navpoint_packet()
101 input_report_key(navpoint->input, BTN_LEFT, gesture); in navpoint_packet()
102 input_sync(navpoint->input); in navpoint_packet()
106 if ((navpoint->data[1] & 0xf0) == 0x10) in navpoint_packet()
110 dev_warn(navpoint->dev, in navpoint_packet()
112 navpoint->data[0], navpoint->data[1]); in navpoint_packet()
119 struct navpoint *navpoint = dev_id; in navpoint_irq() local
120 struct ssp_device *ssp = navpoint->ssp; in navpoint_irq()
126 dev_warn(navpoint->dev, in navpoint_irq()
136 navpoint->data[navpoint->index + 0] = (data >> 8); in navpoint_irq()
137 navpoint->data[navpoint->index + 1] = data; in navpoint_irq()
138 navpoint->index += 2; in navpoint_irq()
139 if (HEADER_LENGTH(navpoint->data[0]) < navpoint->index) { in navpoint_irq()
140 navpoint_packet(navpoint); in navpoint_irq()
141 navpoint->index = 0; in navpoint_irq()
150 static void navpoint_up(struct navpoint *navpoint) in navpoint_up() argument
152 struct ssp_device *ssp = navpoint->ssp; in navpoint_up()
170 dev_err(navpoint->dev, in navpoint_up()
173 if (gpio_is_valid(navpoint->gpio)) in navpoint_up()
174 gpio_set_value(navpoint->gpio, 1); in navpoint_up()
177 static void navpoint_down(struct navpoint *navpoint) in navpoint_down() argument
179 struct ssp_device *ssp = navpoint->ssp; in navpoint_down()
181 if (gpio_is_valid(navpoint->gpio)) in navpoint_down()
182 gpio_set_value(navpoint->gpio, 0); in navpoint_down()
191 struct navpoint *navpoint = input_get_drvdata(input); in navpoint_open() local
193 navpoint_up(navpoint); in navpoint_open()
200 struct navpoint *navpoint = input_get_drvdata(input); in navpoint_close() local
202 navpoint_down(navpoint); in navpoint_close()
211 struct navpoint *navpoint; in navpoint_probe() local
238 navpoint = kzalloc(sizeof(*navpoint), GFP_KERNEL); in navpoint_probe()
240 if (!navpoint || !input) { in navpoint_probe()
245 navpoint->ssp = ssp; in navpoint_probe()
246 navpoint->input = input; in navpoint_probe()
247 navpoint->dev = &pdev->dev; in navpoint_probe()
248 navpoint->gpio = pdata->gpio; in navpoint_probe()
270 input_set_drvdata(input, navpoint); in navpoint_probe()
272 error = request_irq(ssp->irq, navpoint_irq, 0, pdev->name, navpoint); in navpoint_probe()
280 platform_set_drvdata(pdev, navpoint); in navpoint_probe()
286 free_irq(ssp->irq, navpoint); in navpoint_probe()
289 kfree(navpoint); in navpoint_probe()
302 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_remove() local
303 struct ssp_device *ssp = navpoint->ssp; in navpoint_remove()
305 free_irq(ssp->irq, navpoint); in navpoint_remove()
307 input_unregister_device(navpoint->input); in navpoint_remove()
308 kfree(navpoint); in navpoint_remove()
321 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_suspend() local
322 struct input_dev *input = navpoint->input; in navpoint_suspend()
326 navpoint_down(navpoint); in navpoint_suspend()
335 struct navpoint *navpoint = platform_get_drvdata(pdev); in navpoint_resume() local
336 struct input_dev *input = navpoint->input; in navpoint_resume()
340 navpoint_up(navpoint); in navpoint_resume()