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.

138 lines
4.0 KiB

Merge ChibiOS and LUFA descriptor support (#2362) * Move lufa descriptor to protocol/usb_descriptor * Try to compile usb_descriptor on ChibiOS * Add lufa_utils for ChibiOS Lufa USB descriptors for ChibiOS * More lufa_util compatibility fixes * First compiling version of shared USB descriptor * Send the usb descriptors * Fix the CONSOLE output on ChibiOS * Add errors for unsupported interfaces * Enable support for vitual serial port USB descriptors * Implement virtual serial port for ChibiOS * Cleanup the lufa_utils Use the default lufa header files * Add raw hid support for ChibiOS This is completely untested * Enable midi compilation on ChibiOS * Move midi functionality out of lufa.c * Don't register sysex callback when not needed * ChibiOS compilation fixes * Update ChibiOS submodule * Fix the Midi USB descriptor It didn't work properly when both Midi and Virtual serial port was enabled. * Add MIDI support for ChibiOS * Fix USB descriptor strings on ChibiOS * Use serial usb driver for raw hid * Generalize the ChibiOS stream like drivers This makes the initialization much more simple and eliminates a lot of the code duplication. * Convert console output to chibios stream driver * Fixes for ChibiOS update * Update the ChibiOS contrib submodule To include the usb data toggle synchronization fixes * Fix duplicate reset enumeration on ChibiOS * Add missing include * Add number of endpoints check for ChibiOS * Enable serial USB driver on all keyboards * Add missing includes when API is enabled withot midi * Add another missing inlcude
6 years ago
  1. /*
  2. Copyright 2015 Jun Wako <wakojun@gmail.com>
  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. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #ifndef INFINITY_ERGODOX_CONFIG_H
  15. #define INFINITY_ERGODOX_CONFIG_H
  16. /* USB Device descriptor parameter */
  17. #define VENDOR_ID 0x1c11
  18. #define PRODUCT_ID 0xb04d
  19. #define DEVICE_VER 0x0001
  20. #define MANUFACTURER Input Club
  21. #define PRODUCT Infinity_Ergodox/QMK
  22. #define MOUSEKEY_INTERVAL 20
  23. #define MOUSEKEY_DELAY 0
  24. #define MOUSEKEY_TIME_TO_MAX 60
  25. #define MOUSEKEY_MAX_SPEED 7
  26. #define MOUSEKEY_WHEEL_DELAY 0
  27. #define TAPPING_TOGGLE 1
  28. /* define if matrix has ghost */
  29. //#define MATRIX_HAS_GHOST
  30. #define TAPPING_TERM 200
  31. #define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
  32. /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
  33. #define LOCKING_SUPPORT_ENABLE
  34. /* Locking resynchronize hack */
  35. #define LOCKING_RESYNC_ENABLE
  36. /* key combination for command */
  37. #define IS_COMMAND() ( \
  38. get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
  39. get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
  40. )
  41. /* key matrix size */
  42. #define MATRIX_ROWS 18
  43. #define MATRIX_COLS 5
  44. // For some reason, the rows are colums in the schematic, and vice versa
  45. #define MATRIX_ROW_PINS { B2, B3, B18, B19, C0, C9, C10, C11, D0 }
  46. #define MATRIX_COL_PINS { D1, D4, D5, D6, D7 }
  47. #define UNUSED_PINS
  48. /* COL2ROW, ROW2COL */
  49. #define DIODE_DIRECTION ROW2COL
  50. /* Serial config (for communication between halves) */
  51. #define SERIAL_USART_DRIVER SD1 // Only true for the master half
  52. #define SERIAL_USART_CONFIG { (SERIAL_USART_SPEED), } // Only field is speed
  53. #define SERIAL_USART_FULL_DUPLEX
  54. /* number of backlight levels */
  55. #define BACKLIGHT_LEVELS 3
  56. #define LED_BRIGHTNESS_LO 100
  57. #define LED_BRIGHTNESS_HI 255
  58. /* LED matrix driver */
  59. #define LED_DRIVER_ADDR_1 0x74
  60. #define LED_DRIVER_COUNT 1
  61. #define DRIVER_LED_TOTAL 76
  62. #define LED_MATRIX_SPLIT { 38, 38 }
  63. #define LED_DISABLE_WHEN_USB_SUSPENDED
  64. /* i2c (for LED matrix) */
  65. #define I2C1_CLOCK_SPEED 400000
  66. #define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
  67. #define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
  68. #define I2C1_BANK GPIOB
  69. #define I2C1_SCL 0
  70. #define I2C1_SDA 1
  71. #ifdef ST7565_ENABLE
  72. /* LCD driver */
  73. # define ST7565_A0_PIN C7
  74. # define ST7565_RST_PIN C8
  75. # define ST7565_SS_PIN C4
  76. # define ST7565_SPI_CLK_DIVISOR 2
  77. # define ST7565_CONTRAST 22
  78. # define ST7565_DISPLAY_WIDTH 128
  79. # define ST7565_DISPLAY_HEIGHT 32
  80. /* SPI (for LCD) */
  81. # define SPI_DRIVER SPID1
  82. # define SPI_SCK_PIN C5
  83. # define SPI_SCK_PAL_MODE PAL_MODE_ALTERNATIVE_2
  84. # define SPI_MOSI_PIN C6
  85. # define SPI_MOSI_PAL_MODE PAL_MODE_ALTERNATIVE_2
  86. # define SPI_MISO_PIN A4 // Just an unused pin, the "normal" MISO pin (C7) is used for other things
  87. # define SPI_MISO_PAL_MODE PAL_MODE_ALTERNATIVE_7 // Default for A4
  88. #endif
  89. /* define if matrix has ghost */
  90. //#define MATRIX_HAS_GHOST
  91. /* Set 0 if debouncing isn't needed */
  92. #define DEBOUNCE 5
  93. #define VISUALIZER_USER_DATA_SIZE 16
  94. /*
  95. * Feature disable options
  96. * These options are also useful to firmware size reduction.
  97. */
  98. /* disable debug print */
  99. //#define NO_DEBUG
  100. /* disable print */
  101. //#define NO_PRINT
  102. /* disable action features */
  103. //#define NO_ACTION_LAYER
  104. //#define NO_ACTION_TAPPING
  105. //#define NO_ACTION_ONESHOT
  106. //#define NO_ACTION_MACRO
  107. //#define NO_ACTION_FUNCTION
  108. #endif