Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. Index: dev/dnkbd.c
  2. ===================================================================
  3. RCS file: /cvsroot/src/sys/arch/hp300/dev/dnkbd.c,v
  4. retrieving revision 1.7
  5. diff -u -p -d -r1.7 dnkbd.c
  6. --- dev/dnkbd.c 24 Apr 2014 12:10:27 -0000 1.7
  7. +++ dev/dnkbd.c 23 Mar 2017 14:55:54 -0000
  8. @@ -263,6 +263,7 @@ static int dnkbd_probe(struct dnkbd_soft
  9. static void dnkbd_rawrepeat(void *);
  10. #endif
  11. static int dnkbd_send(struct dnkbd_softc *, const uint8_t *, size_t);
  12. +static void dnkbd_break(struct dnkbd_softc *, int);
  13.  
  14. int
  15. dnkbd_match(device_t parent, cfdata_t cf, void *aux)
  16. @@ -307,6 +308,11 @@ dnkbd_attach(device_t parent, device_t s
  17. /* reset the port */
  18. dnkbd_init(sc, 1200, LCR_8BITS | LCR_PEVEN | LCR_PENAB);
  19.  
  20. + /* send break to reset keyboard state */
  21. + dnkbd_break(sc, 1);
  22. + delay(10 * 1000);
  23. + dnkbd_break(sc, 0);
  24. +
  25. frodo_intr_establish(parent, dnkbd_intr, sc, fa->fa_line, IPL_VM);
  26.  
  27. /* probe for keyboard */
  28. @@ -869,6 +875,25 @@ dnkbd_send(struct dnkbd_softc *sc, const
  29. return 0;
  30. }
  31.  
  32. +void
  33. +dnkbd_break(struct dnkbd_softc *sc, int onoff)
  34. +{
  35. + bus_space_tag_t bst;
  36. + bus_space_handle_t bsh;
  37. + uint8_t reg;
  38. +
  39. + bst = sc->sc_bst;
  40. + bsh = sc->sc_bsh;
  41. +
  42. + reg = bus_space_read_1(bst, bsh, com_lctl);
  43. + if (onoff)
  44. + reg |= LCR_SBREAK;
  45. + else
  46. + reg &= ~LCR_SBREAK;
  47. +
  48. + bus_space_write_1(bst, bsh, com_lctl, reg);
  49. +}
  50. +
  51. int
  52. dnkbd_intr(void *v)
  53. {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement