Lines Matching refs:mouse

105 fifo_init(struct ps2mouse_info *mouse)  in fifo_init()  argument
109 fifo = &mouse->fifo; in fifo_init()
114 fifo_reset(struct ps2mouse_info *mouse) in fifo_reset() argument
118 fifo = &mouse->fifo; in fifo_reset()
124 fifo_put(struct ps2mouse_info *mouse, uint8_t val) in fifo_put() argument
128 fifo = &mouse->fifo; in fifo_put()
137 fifo_get(struct ps2mouse_info *mouse, uint8_t *val) in fifo_get() argument
141 fifo = &mouse->fifo; in fifo_get()
153 movement_reset(struct ps2mouse_info *mouse) in movement_reset() argument
155 mouse->delta_x = 0; in movement_reset()
156 mouse->delta_y = 0; in movement_reset()
160 movement_update(struct ps2mouse_info *mouse, int x, int y) in movement_update() argument
162 mouse->delta_x += x - mouse->cur_x; in movement_update()
163 mouse->delta_y += mouse->cur_y - y; in movement_update()
164 mouse->cur_x = x; in movement_update()
165 mouse->cur_y = y; in movement_update()
169 movement_get(struct ps2mouse_info *mouse) in movement_get() argument
174 val0 |= mouse->status & (PS2M_DATA_LEFT_BUTTON | in movement_get()
177 if (mouse->delta_x >= 0) { in movement_get()
178 if (mouse->delta_x > 255) { in movement_get()
182 val1 = mouse->delta_x; in movement_get()
185 if (mouse->delta_x < -255) { in movement_get()
189 val1 = mouse->delta_x; in movement_get()
191 mouse->delta_x = 0; in movement_get()
193 if (mouse->delta_y >= 0) { in movement_get()
194 if (mouse->delta_y > 255) { in movement_get()
198 val2 = mouse->delta_y; in movement_get()
201 if (mouse->delta_y < -255) { in movement_get()
205 val2 = mouse->delta_y; in movement_get()
207 mouse->delta_y = 0; in movement_get()
209 if (mouse->fifo.num < (mouse->fifo.size - 3)) { in movement_get()
210 fifo_put(mouse, val0); in movement_get()
211 fifo_put(mouse, val1); in movement_get()
212 fifo_put(mouse, val2); in movement_get()
217 ps2mouse_reset(struct ps2mouse_info *mouse) in ps2mouse_reset() argument
219 fifo_reset(mouse); in ps2mouse_reset()
220 movement_reset(mouse); in ps2mouse_reset()
221 mouse->status = PS2M_STS_ENABLE_DEV; in ps2mouse_reset()
222 mouse->resolution = 4; in ps2mouse_reset()
223 mouse->sampling_rate = 100; in ps2mouse_reset()
225 mouse->cur_x = 0; in ps2mouse_reset()
226 mouse->cur_y = 0; in ps2mouse_reset()
227 mouse->delta_x = 0; in ps2mouse_reset()
228 mouse->delta_y = 0; in ps2mouse_reset()
232 ps2mouse_read(struct ps2mouse_info *mouse, uint8_t *val) in ps2mouse_read() argument
236 pthread_mutex_lock(&mouse->mtx); in ps2mouse_read()
237 retval = fifo_get(mouse, val); in ps2mouse_read()
238 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_read()
244 ps2mouse_fifocnt(struct ps2mouse_info *mouse) in ps2mouse_fifocnt() argument
246 return mouse->fifo.num; in ps2mouse_fifocnt()
250 ps2mouse_toggle(struct ps2mouse_info *mouse, int enable) in ps2mouse_toggle() argument
252 pthread_mutex_lock(&mouse->mtx); in ps2mouse_toggle()
254 mouse->ctrlenable = 1; in ps2mouse_toggle()
256 mouse->ctrlenable = 0; in ps2mouse_toggle()
257 mouse->fifo.rindex = 0; in ps2mouse_toggle()
258 mouse->fifo.windex = 0; in ps2mouse_toggle()
259 mouse->fifo.num = 0; in ps2mouse_toggle()
261 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_toggle()
265 ps2mouse_write(struct ps2mouse_info *mouse, uint8_t val, int insert) in ps2mouse_write() argument
267 pthread_mutex_lock(&mouse->mtx); in ps2mouse_write()
268 fifo_reset(mouse); in ps2mouse_write()
269 if (mouse->curcmd) { in ps2mouse_write()
270 switch (mouse->curcmd) { in ps2mouse_write()
272 mouse->sampling_rate = val; in ps2mouse_write()
273 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
276 mouse->resolution = val; in ps2mouse_write()
277 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
284 mouse->curcmd = 0; in ps2mouse_write()
287 fifo_put(mouse, val); in ps2mouse_write()
291 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
294 ps2mouse_reset(mouse); in ps2mouse_write()
295 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
296 fifo_put(mouse, PS2MC_BAT_SUCCESS); in ps2mouse_write()
297 fifo_put(mouse, PS2MOUSE_DEV_ID); in ps2mouse_write()
300 ps2mouse_reset(mouse); in ps2mouse_write()
301 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
304 fifo_reset(mouse); in ps2mouse_write()
305 mouse->status &= ~PS2M_STS_ENABLE_DEV; in ps2mouse_write()
306 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
309 fifo_reset(mouse); in ps2mouse_write()
310 mouse->status |= PS2M_STS_ENABLE_DEV; in ps2mouse_write()
311 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
314 mouse->curcmd = val; in ps2mouse_write()
315 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
318 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
319 fifo_put(mouse, PS2MOUSE_DEV_ID); in ps2mouse_write()
322 mouse->status |= PS2M_STS_REMOTE_MODE; in ps2mouse_write()
323 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
326 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
327 movement_get(mouse); in ps2mouse_write()
330 mouse->status &= ~PS2M_STS_REMOTE_MODE; in ps2mouse_write()
331 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
334 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
335 fifo_put(mouse, mouse->status); in ps2mouse_write()
336 fifo_put(mouse, mouse->resolution); in ps2mouse_write()
337 fifo_put(mouse, mouse->sampling_rate); in ps2mouse_write()
340 mouse->curcmd = val; in ps2mouse_write()
341 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
345 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
348 fifo_put(mouse, PS2MC_ACK); in ps2mouse_write()
354 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_write()
360 struct ps2mouse_info *mouse = arg; in ps2mouse_event() local
362 pthread_mutex_lock(&mouse->mtx); in ps2mouse_event()
363 movement_update(mouse, x, y); in ps2mouse_event()
365 mouse->status &= ~(PS2M_STS_LEFT_BUTTON | in ps2mouse_event()
368 mouse->status |= PS2M_STS_LEFT_BUTTON; in ps2mouse_event()
370 mouse->status |= PS2M_STS_MID_BUTTON; in ps2mouse_event()
372 mouse->status |= PS2M_STS_RIGHT_BUTTON; in ps2mouse_event()
374 if ((mouse->status & PS2M_STS_ENABLE_DEV) == 0 || !mouse->ctrlenable) { in ps2mouse_event()
376 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_event()
380 movement_get(mouse); in ps2mouse_event()
381 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_event()
383 if (mouse->fifo.num > 0) in ps2mouse_event()
384 atkbdc_event(mouse->base, 0); in ps2mouse_event()
390 struct ps2mouse_info *mouse; in ps2mouse_init() local
392 mouse = calloc(1, sizeof(struct ps2mouse_info)); in ps2mouse_init()
393 if (!mouse) { in ps2mouse_init()
398 pthread_mutex_init(&mouse->mtx, NULL); in ps2mouse_init()
399 fifo_init(mouse); in ps2mouse_init()
400 mouse->base = base; in ps2mouse_init()
402 pthread_mutex_lock(&mouse->mtx); in ps2mouse_init()
403 ps2mouse_reset(mouse); in ps2mouse_init()
404 pthread_mutex_unlock(&mouse->mtx); in ps2mouse_init()
406 console_ptr_register(ps2mouse_event, mouse, 1); in ps2mouse_init()
408 return mouse; in ps2mouse_init()