You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.9 KiB

  1. /* Copyright 2018 REPLACE_WITH_YOUR_NAME
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #ifndef NEK_TYPE_A_H
  17. #define NEK_TYPE_A_H
  18. #include "quantum.h"
  19. #include <stdint.h>
  20. #include <stdbool.h>
  21. #include <util/delay.h>
  22. #define I2C_ADDR 0b0100000
  23. #define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
  24. #define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
  25. #define IODIRA 0x00 // i/o direction register
  26. #define IODIRB 0x01
  27. #define GPPUA 0x0C // GPIO pull-up resistor register
  28. #define GPPUB 0x0D
  29. #define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT)
  30. #define GPIOB 0x13
  31. #define OLATA 0x14 // output latch register
  32. #define OLATB 0x15
  33. extern uint8_t expander_status;
  34. extern uint8_t expander_input_pin_mask;
  35. extern bool i2c_initialized;
  36. void init_expander(void);
  37. #define LAYOUT( \
  38. L12, L14, L15, L16, L17, R11, R12, R13, R14, R15, R16, R17, R18, R19, R1A, R1B, \
  39. L21, L22, L23, L24, L25, L26, L27, R21, R22, R23, R24, R25, R26, R28, R29, R2A, R2B, \
  40. L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, R37, R38, R39, R3A, R3B, \
  41. L41, L42, L43, L44, L45, L46, R41, R42, R43, R44, R45, R46, R48, \
  42. L51, L52, L53, L54, L55, L56, R51, R52, R53, R54, R55, R58, R5A, \
  43. L61, L62, L63, L65, R61, R63, R65, R66, R68, R69, R6A, R6B \
  44. ) \
  45. { \
  46. { KC_NO, L12, KC_NO, L14, L15, L16, L17, R11, R12, R13, R14, R15, R16, R17, R18, R19, R1A, R1B }, \
  47. { L21, L22, L23, L24, L25, L26, L27, R21, R22, R23, R24, R25, R26, KC_NO, R28, R29, R2A, R2B }, \
  48. { L31, L32, L33, L34, L35, L36, KC_NO, R31, R32, R33, R34, R35, R36, R37, R38, R39, R3A, R3B }, \
  49. { L41, L42, L43, L44, L45, L46, KC_NO, R41, R42, R43, R44, R45, R46, KC_NO, R48, KC_NO, KC_NO, KC_NO }, \
  50. { L51, L52, L53, L54, L55, L56, KC_NO, R51, R52, R53, R54, R55, KC_NO, KC_NO, R58, KC_NO, R5A, KC_NO }, \
  51. { L61, L62, L63, KC_NO, L65, KC_NO, KC_NO, R61, KC_NO, R63, KC_NO, R65, R66, KC_NO, R68, R69, R6A, R6B }, \
  52. }
  53. #endif