Commit 3988e8977b8267a468377a03cc9afb643615a8fa
1 parent
7483750d
ADB reset support (Joceylin Mayer)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1295 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
28 additions
and
4 deletions
hw/adb.c
@@ -248,13 +248,25 @@ static int adb_kbd_request(ADBDevice *d, uint8_t *obuf, | @@ -248,13 +248,25 @@ static int adb_kbd_request(ADBDevice *d, uint8_t *obuf, | ||
248 | return olen; | 248 | return olen; |
249 | } | 249 | } |
250 | 250 | ||
251 | +static int adb_kbd_reset(ADBDevice *d) | ||
252 | +{ | ||
253 | + KBDState *s = d->opaque; | ||
254 | + | ||
255 | + d->handler = 1; | ||
256 | + d->devaddr = ADB_KEYBOARD; | ||
257 | + memset(s, 0, sizeof(KBDState)); | ||
258 | + | ||
259 | + return 0; | ||
260 | +} | ||
261 | + | ||
251 | void adb_kbd_init(ADBBusState *bus) | 262 | void adb_kbd_init(ADBBusState *bus) |
252 | { | 263 | { |
253 | ADBDevice *d; | 264 | ADBDevice *d; |
254 | KBDState *s; | 265 | KBDState *s; |
255 | s = qemu_mallocz(sizeof(KBDState)); | 266 | s = qemu_mallocz(sizeof(KBDState)); |
256 | - d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request, NULL, s); | ||
257 | - d->handler = 1; | 267 | + d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request, |
268 | + adb_kbd_reset, s); | ||
269 | + adb_kbd_reset(d); | ||
258 | qemu_add_kbd_event_handler(adb_kbd_put_keycode, d); | 270 | qemu_add_kbd_event_handler(adb_kbd_put_keycode, d); |
259 | } | 271 | } |
260 | 272 | ||
@@ -374,13 +386,25 @@ static int adb_mouse_request(ADBDevice *d, uint8_t *obuf, | @@ -374,13 +386,25 @@ static int adb_mouse_request(ADBDevice *d, uint8_t *obuf, | ||
374 | return olen; | 386 | return olen; |
375 | } | 387 | } |
376 | 388 | ||
389 | +static int adb_mouse_reset(ADBDevice *d) | ||
390 | +{ | ||
391 | + MouseState *s = d->opaque; | ||
392 | + | ||
393 | + d->handler = 2; | ||
394 | + d->devaddr = ADB_MOUSE; | ||
395 | + memset(s, 0, sizeof(MouseState)); | ||
396 | + | ||
397 | + return 0; | ||
398 | +} | ||
399 | + | ||
377 | void adb_mouse_init(ADBBusState *bus) | 400 | void adb_mouse_init(ADBBusState *bus) |
378 | { | 401 | { |
379 | ADBDevice *d; | 402 | ADBDevice *d; |
380 | MouseState *s; | 403 | MouseState *s; |
381 | 404 | ||
382 | s = qemu_mallocz(sizeof(MouseState)); | 405 | s = qemu_mallocz(sizeof(MouseState)); |
383 | - d = adb_register_device(bus, ADB_MOUSE, adb_mouse_request, NULL, s); | ||
384 | - d->handler = 2; | 406 | + d = adb_register_device(bus, ADB_MOUSE, adb_mouse_request, |
407 | + adb_mouse_reset, s); | ||
408 | + adb_mouse_reset(d); | ||
385 | qemu_add_mouse_event_handler(adb_mouse_event, d); | 409 | qemu_add_mouse_event_handler(adb_mouse_event, d); |
386 | } | 410 | } |