logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

ps2_io.c (1169B)


  1. #include <stdbool.h>
  2. #include "ps2_io.h"
  3. // chibiOS headers
  4. #include "ch.h"
  5. #include "hal.h"
  6. #include "gpio.h"
  7. /* Check port settings for clock and data line */
  8. #if !(defined(PS2_CLOCK_PIN))
  9. # error "PS/2 clock setting is required in config.h"
  10. #endif
  11. #if !(defined(PS2_DATA_PIN))
  12. # error "PS/2 data setting is required in config.h"
  13. #endif
  14. /*
  15. * Clock
  16. */
  17. void clock_init(void) {}
  18. void clock_lo(void) {
  19. palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
  20. palWriteLine(PS2_CLOCK_PIN, PAL_LOW);
  21. }
  22. void clock_hi(void) {
  23. palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
  24. palWriteLine(PS2_CLOCK_PIN, PAL_HIGH);
  25. }
  26. bool clock_in(void) {
  27. palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT);
  28. return palReadLine(PS2_CLOCK_PIN);
  29. }
  30. /*
  31. * Data
  32. */
  33. void data_init(void) {}
  34. void data_lo(void) {
  35. palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
  36. palWriteLine(PS2_DATA_PIN, PAL_LOW);
  37. }
  38. void data_hi(void) {
  39. palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
  40. palWriteLine(PS2_DATA_PIN, PAL_HIGH);
  41. }
  42. bool data_in(void) {
  43. palSetLineMode(PS2_DATA_PIN, PAL_MODE_INPUT);
  44. return palReadLine(PS2_DATA_PIN);
  45. }