forked from mfulz_github/qmk_firmware
		
	First version of Infinity Ergodox
Mostly just adding the files from the fredizzimo repository. Still needs some fixing until it works
This commit is contained in:
		
							parent
							
								
									94d3159d9d
								
							
						
					
					
						commit
						74847a84f8
					
				
							
								
								
									
										385
									
								
								keyboards/infinity_ergodox/MEMO.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										385
									
								
								keyboards/infinity_ergodox/MEMO.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,385 @@ | |||||||
|  | flabbergast's TMK/ChibiOS port | ||||||
|  | ============================== | ||||||
|  | 2015/10/16 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Build | ||||||
|  | ----- | ||||||
|  | $ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git | ||||||
|  | 
 | ||||||
|  | $ cd tmk_keyboard | ||||||
|  | $ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios | ||||||
|  | or | ||||||
|  | $ cd tmk_keyboard/tmk_core/tool/chibios | ||||||
|  | $ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios | ||||||
|  | 
 | ||||||
|  | $ cd tmk_keyboard/keyboard/infinity_chibios | ||||||
|  | $ make | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Chibios Configuration | ||||||
|  | --------------------- | ||||||
|  | halconf.h: for HAL configuration | ||||||
|  |     placed in project directory | ||||||
|  |     read in chibios/os/hal/hal.mk | ||||||
|  |     included in chibios/os/hal/include/hal.h | ||||||
|  | mcuconf.h: for MCU configuration | ||||||
|  |     placed in project directory | ||||||
|  |     included in halconf.h | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Chibios Term | ||||||
|  | ------------ | ||||||
|  | PAL = Port Abstraction Layer | ||||||
|  |     palWritePad | ||||||
|  |     palReadPad | ||||||
|  |     palSetPad | ||||||
|  |     chibios/os/hal/include/pal.h | ||||||
|  | 
 | ||||||
|  | LLD = Low Level Driver | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Makefile | ||||||
|  | -------- | ||||||
|  |     #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) | ||||||
|  |     MCU_FAMILY = KINETIS | ||||||
|  |     MCU_SERIES = KL2x | ||||||
|  | 
 | ||||||
|  |     # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ | ||||||
|  |     #   or <this_dir>/ld/ | ||||||
|  |     MCU_LDSCRIPT = MKL26Z64 | ||||||
|  | 
 | ||||||
|  |     #  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/ | ||||||
|  |     MCU_STARTUP = kl2x | ||||||
|  | 
 | ||||||
|  |     # Board: it should exist either in <chibios>/os/hal/boards/ | ||||||
|  |     #  or <this_dir>/boards | ||||||
|  |     BOARD = PJRC_TEENSY_LC | ||||||
|  | 
 | ||||||
|  |     MCU  = cortex-m0 | ||||||
|  | 
 | ||||||
|  |     # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 | ||||||
|  |     ARMV = 6 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | halconf.h | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | mcuconf.h | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | chconf.h | ||||||
|  | -------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ld script | ||||||
|  | --------- | ||||||
|  | --- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld     2015-10-15 09:08:58.732904304 +0900 | ||||||
|  | +++ ld/MKL26Z64.ld      2015-10-15 08:48:06.430215496 +0900 | ||||||
|  | @@ -27,7 +27,8 @@ | ||||||
|  |  { | ||||||
|  |    flash0   :  org = 0x00000000,  len = 0xc0 | ||||||
|  |    flashcfg :  org = 0x00000400,  len = 0x10 | ||||||
|  | -  flash    :  org = 0x00000410,  len = 64k - 0x410 | ||||||
|  | +  flash    :  org = 0x00000410,  len = 62k - 0x410 | ||||||
|  | +  eeprom_emu : org = 0x0000F800, len = 2k | ||||||
|  |    ram      :  org = 0x1FFFF800,  len = 8k | ||||||
|  |  } | ||||||
|  | 
 | ||||||
|  | @@ -35,6 +36,10 @@ | ||||||
|  |  __ram_size__            = LENGTH(ram); | ||||||
|  |  __ram_end__             = __ram_start__ + __ram_size__; | ||||||
|  | 
 | ||||||
|  | +__eeprom_workarea_start__ = ORIGIN(eeprom_emu); | ||||||
|  | +__eeprom_workarea_size__  = LENGTH(eeprom_emu); | ||||||
|  | +__eeprom_workarea_end__   = __eeprom_workarea_start__ + __eeprom_workarea_size__; | ||||||
|  | + | ||||||
|  |  SECTIONS | ||||||
|  |  { | ||||||
|  |    . = 0; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Configuration/Startup for Infinity 60% | ||||||
|  | -------------------------------------- | ||||||
|  | Configuration: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Clock: | ||||||
|  | Inifinity    | ||||||
|  |     FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz | ||||||
|  |     Clock dividor: | ||||||
|  |     SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock | ||||||
|  |     SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock | ||||||
|  |     SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock | ||||||
|  |     Internal reference clock: | ||||||
|  |     MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL | ||||||
|  |     MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable | ||||||
|  |     FLL multipilication: | ||||||
|  |     MCG_C4[DMX32] = 1 | ||||||
|  |     MCG_C4[DRST_DRS] = 01   FLL factor 1464 * 32.768kHz = 48MHz | ||||||
|  | 
 | ||||||
|  | chibios/os/hal/ports/KINETIS/K20x/hal_lld.c | ||||||
|  |     k20x_clock_init(): called in __early_init() defined in board.c | ||||||
|  |         disable watchdog and configure clock | ||||||
|  | 
 | ||||||
|  |         configurable macros: | ||||||
|  |         KINETIS_NO_INIT: whether init or not | ||||||
|  |         KINETIS_MCG_MODE: clock mode    | ||||||
|  |             KINETIS_MCG_MODE_FEI | ||||||
|  |             KINETIS_MCG_MODE_PEE | ||||||
|  |                 hal/ports/KINETIS/K20x/hal_lld.h | ||||||
|  |              | ||||||
|  | 
 | ||||||
|  | chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h | ||||||
|  |     PALConfig pal_default_config | ||||||
|  |     boardInit() | ||||||
|  |     __early_init() | ||||||
|  |     macro definitions for board infos, freq and mcu type | ||||||
|  | 
 | ||||||
|  | chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c | ||||||
|  | 
 | ||||||
|  | USB | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Startup | ||||||
|  | ------- | ||||||
|  |     common/ports/ARMCMx/GCC/crt0_v[67]m.s | ||||||
|  |         Reset_Handler: startup code | ||||||
|  |     common/ports/ARMCMx/GCC/crt1.c | ||||||
|  |         __core_init(): weak | ||||||
|  |         __early_init(): weak | ||||||
|  |         __late_init(): weak | ||||||
|  |         __default_exit(): weak | ||||||
|  |             called from Reset_Handler of crt0 | ||||||
|  |     common/ports/ARMCMx/GCC/vector.c | ||||||
|  |     common/ports/ARMCMx/GCC/ld/*.ld | ||||||
|  | 
 | ||||||
|  | chibios/os/common/ports/ARMCMx/compilers/GCC/ | ||||||
|  | ├── crt0_v6m.s | ||||||
|  | ├── crt0_v7m.s | ||||||
|  | ├── crt1.c | ||||||
|  | ├── ld | ||||||
|  | │   ├── MK20DX128BLDR3.ld | ||||||
|  | │   ├── MK20DX128BLDR4.ld | ||||||
|  | │   ├── MK20DX128.ld | ||||||
|  | │   ├── MK20DX256.ld | ||||||
|  | │   ├── MKL25Z128.ld | ||||||
|  | │   ├── MKL26Z128.ld | ||||||
|  | │   ├── MKL26Z64.ld | ||||||
|  | │   └── STM32L476xG.ld | ||||||
|  | ├── mk | ||||||
|  | │   ├── startup_k20x5.mk | ||||||
|  | │   ├── startup_k20x7.mk | ||||||
|  | │   ├── startup_k20x.mk | ||||||
|  | │   ├── startup_kl2x.mk | ||||||
|  | │   └── startup_stm32l4xx.mk | ||||||
|  | ├── rules.ld | ||||||
|  | ├── rules.mk | ||||||
|  | └── vectors.c | ||||||
|  | 
 | ||||||
|  | chibios/os/hal/ | ||||||
|  | ├── boards | ||||||
|  | │   ├── FREESCALE_FREEDOM_K20D50M | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── MCHCK_K20 | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── PJRC_TEENSY_3 | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── PJRC_TEENSY_3_1 | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── PJRC_TEENSY_LC | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── readme.txt | ||||||
|  | │   ├── simulator | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   └── board.mk | ||||||
|  | │   ├── ST_NUCLEO_F030R8 | ||||||
|  | │   │   ├── board.c | ||||||
|  | │   │   ├── board.h | ||||||
|  | │   │   ├── board.mk | ||||||
|  | │   │   └── cfg | ||||||
|  | │   │       └── board.chcfg | ||||||
|  | ├── hal.mk | ||||||
|  | ├── include | ||||||
|  | │   ├── adc.h | ||||||
|  | │   ├── can.h | ||||||
|  | │   ├── dac.h | ||||||
|  | │   ├── ext.h | ||||||
|  | │   ├── gpt.h | ||||||
|  | │   ├── hal_channels.h | ||||||
|  | │   ├── hal_files.h | ||||||
|  | │   ├── hal.h | ||||||
|  | │   ├── hal_ioblock.h | ||||||
|  | │   ├── hal_mmcsd.h | ||||||
|  | │   ├── hal_queues.h | ||||||
|  | │   ├── hal_streams.h | ||||||
|  | │   ├── i2c.h | ||||||
|  | │   ├── i2s.h | ||||||
|  | │   ├── icu.h | ||||||
|  | │   ├── mac.h | ||||||
|  | │   ├── mii.h | ||||||
|  | │   ├── mmc_spi.h | ||||||
|  | │   ├── pal.h | ||||||
|  | │   ├── pwm.h | ||||||
|  | │   ├── rtc.h | ||||||
|  | │   ├── sdc.h | ||||||
|  | │   ├── serial.h | ||||||
|  | │   ├── serial_usb.h | ||||||
|  | │   ├── spi.h | ||||||
|  | │   ├── st.h | ||||||
|  | │   ├── uart.h | ||||||
|  | │   └── usb.h | ||||||
|  | ├── lib | ||||||
|  | │   └── streams | ||||||
|  | │       ├── chprintf.c | ||||||
|  | │       ├── chprintf.h | ||||||
|  | │       ├── memstreams.c | ||||||
|  | │       ├── memstreams.h | ||||||
|  | │       ├── nullstreams.c | ||||||
|  | │       └── nullstreams.h | ||||||
|  | ├── osal | ||||||
|  | │   ├── nil | ||||||
|  | │   │   ├── osal.c | ||||||
|  | │   │   ├── osal.h | ||||||
|  | │   │   └── osal.mk | ||||||
|  | │   ├── os-less | ||||||
|  | │   │   └── ARMCMx | ||||||
|  | │   │       ├── osal.c | ||||||
|  | │   │       ├── osal.h | ||||||
|  | │   │       └── osal.mk | ||||||
|  | │   └── rt | ||||||
|  | │       ├── osal.c | ||||||
|  | │       ├── osal.h | ||||||
|  | │       └── osal.mk | ||||||
|  | ├── ports | ||||||
|  | │   ├── AVR | ||||||
|  | │   ├── common | ||||||
|  | │   │   └── ARMCMx | ||||||
|  | │   │       ├── mpu.h | ||||||
|  | │   │       ├── nvic.c | ||||||
|  | │   │       └── nvic.h | ||||||
|  | │   ├── KINETIS | ||||||
|  | │   │   ├── K20x | ||||||
|  | │   │   │   ├── hal_lld.c | ||||||
|  | │   │   │   ├── hal_lld.h | ||||||
|  | │   │   │   ├── kinetis_registry.h | ||||||
|  | │   │   │   ├── platform.dox | ||||||
|  | │   │   │   ├── platform.mk | ||||||
|  | │   │   │   ├── pwm_lld.c | ||||||
|  | │   │   │   ├── pwm_lld.h | ||||||
|  | │   │   │   ├── spi_lld.c | ||||||
|  | │   │   │   └── spi_lld.h | ||||||
|  | │   │   ├── KL2x | ||||||
|  | │   │   │   ├── hal_lld.c | ||||||
|  | │   │   │   ├── hal_lld.h | ||||||
|  | │   │   │   ├── kinetis_registry.h | ||||||
|  | │   │   │   ├── platform.mk | ||||||
|  | │   │   │   ├── pwm_lld.c | ||||||
|  | │   │   │   └── pwm_lld.h | ||||||
|  | │   │   ├── LLD | ||||||
|  | │   │   │   ├── adc_lld.c | ||||||
|  | │   │   │   ├── adc_lld.h | ||||||
|  | │   │   │   ├── ext_lld.c | ||||||
|  | │   │   │   ├── ext_lld.h | ||||||
|  | │   │   │   ├── gpt_lld.c | ||||||
|  | │   │   │   ├── gpt_lld.h | ||||||
|  | │   │   │   ├── i2c_lld.c | ||||||
|  | │   │   │   ├── i2c_lld.h | ||||||
|  | │   │   │   ├── pal_lld.c | ||||||
|  | │   │   │   ├── pal_lld.h | ||||||
|  | │   │   │   ├── serial_lld.c | ||||||
|  | │   │   │   ├── serial_lld.h | ||||||
|  | │   │   │   ├── st_lld.c | ||||||
|  | │   │   │   ├── st_lld.h | ||||||
|  | │   │   │   ├── usb_lld.c | ||||||
|  | │   │   │   └── usb_lld.h | ||||||
|  | │   │   └── README.md | ||||||
|  | │   ├── LPC | ||||||
|  | │   ├── simulator | ||||||
|  | │   └── STM32 | ||||||
|  | ├── src | ||||||
|  | │   ├── adc.c | ||||||
|  | │   ├── can.c | ||||||
|  | │   ├── dac.c | ||||||
|  | │   ├── ext.c | ||||||
|  | │   ├── gpt.c | ||||||
|  | │   ├── hal.c | ||||||
|  | │   ├── hal_mmcsd.c | ||||||
|  | │   ├── hal_queues.c | ||||||
|  | │   ├── i2c.c | ||||||
|  | │   ├── i2s.c | ||||||
|  | │   ├── icu.c | ||||||
|  | │   ├── mac.c | ||||||
|  | │   ├── mmc_spi.c | ||||||
|  | │   ├── pal.c | ||||||
|  | │   ├── pwm.c | ||||||
|  | │   ├── rtc.c | ||||||
|  | │   ├── sdc.c | ||||||
|  | │   ├── serial.c | ||||||
|  | │   ├── serial_usb.c | ||||||
|  | │   ├── spi.c | ||||||
|  | │   ├── st.c | ||||||
|  | │   ├── uart.c | ||||||
|  | │   └── usb.c | ||||||
|  | └── templates | ||||||
|  |     ├── adc_lld.c | ||||||
|  |     ├── adc_lld.h | ||||||
|  |     ├── can_lld.c | ||||||
|  |     ├── can_lld.h | ||||||
|  |     ├── dac_lld.c | ||||||
|  |     ├── dac_lld.h | ||||||
|  |     ├── ext_lld.c | ||||||
|  |     ├── ext_lld.h | ||||||
|  |     ├── gpt_lld.c | ||||||
|  |     ├── gpt_lld.h | ||||||
|  |     ├── halconf.h | ||||||
|  |     ├── hal_lld.c | ||||||
|  |     ├── hal_lld.h | ||||||
|  |     ├── i2c_lld.c | ||||||
|  |     ├── i2c_lld.h | ||||||
|  |     ├── i2s_lld.c | ||||||
|  |     ├── i2s_lld.h | ||||||
|  |     ├── icu_lld.c | ||||||
|  |     ├── icu_lld.h | ||||||
|  |     ├── mac_lld.c | ||||||
|  |     ├── mac_lld.h | ||||||
|  |     ├── mcuconf.h | ||||||
|  |     ├── osal | ||||||
|  |     │   ├── osal.c | ||||||
|  |     │   ├── osal.h | ||||||
|  |     │   └── osal.mk | ||||||
|  |     ├── pal_lld.c | ||||||
|  |     ├── pal_lld.h | ||||||
|  |     ├── platform.mk | ||||||
|  |     ├── pwm_lld.c | ||||||
|  |     ├── pwm_lld.h | ||||||
|  |     ├── rtc_lld.c | ||||||
|  |     ├── rtc_lld.h | ||||||
|  |     ├── sdc_lld.c | ||||||
|  |     ├── sdc_lld.h | ||||||
|  |     ├── serial_lld.c | ||||||
|  |     ├── serial_lld.h | ||||||
|  |     ├── spi_lld.c | ||||||
|  |     ├── spi_lld.h | ||||||
|  |     ├── st_lld.c | ||||||
|  |     ├── st_lld.h | ||||||
|  |     ├── uart_lld.c | ||||||
|  |     ├── uart_lld.h | ||||||
|  |     ├── usb_lld.c | ||||||
|  |     └── usb_lld.h | ||||||
							
								
								
									
										68
									
								
								keyboards/infinity_ergodox/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								keyboards/infinity_ergodox/Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | ## chip/board settings
 | ||||||
|  | # - the next two should match the directories in
 | ||||||
|  | #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
 | ||||||
|  | # - For Teensies, FAMILY = KINETIS and SERIES is either
 | ||||||
|  | #   KL2x (LC) or K20x (3.0,3.1,3.2).
 | ||||||
|  | # - For Infinity KB, SERIES = K20x
 | ||||||
|  | MCU_FAMILY = KINETIS | ||||||
|  | MCU_SERIES = K20x | ||||||
|  | 
 | ||||||
|  | # Linker script to use
 | ||||||
|  | # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
 | ||||||
|  | #   or <this_dir>/ld/
 | ||||||
|  | # - NOTE: a custom ld script is needed for EEPROM on Teensy LC
 | ||||||
|  | # - LDSCRIPT =
 | ||||||
|  | #   - MKL26Z64 for Teensy LC
 | ||||||
|  | #   - MK20DX128 for Teensy 3.0
 | ||||||
|  | #   - MK20DX256 for Teensy 3.1 and 3.2
 | ||||||
|  | #   - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader
 | ||||||
|  | #   - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
 | ||||||
|  | MCU_LDSCRIPT = MK20DX256BLDR8 | ||||||
|  | 
 | ||||||
|  | # Startup code to use
 | ||||||
|  | #  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
 | ||||||
|  | # - STARTUP =
 | ||||||
|  | #   - kl2x for Teensy LC
 | ||||||
|  | #   - k20x5 for Teensy 3.0 and Infinity 60%
 | ||||||
|  | #   - k20x7 for Teensy 3.1, 3.2 and Infinity ErgoDox
 | ||||||
|  | MCU_STARTUP = k20x7 | ||||||
|  | 
 | ||||||
|  | # Board: it should exist either in <chibios>/os/hal/boards/
 | ||||||
|  | #  or <this_dir>/boards
 | ||||||
|  | # - BOARD =
 | ||||||
|  | #   - PJRC_TEENSY_LC for Teensy LC
 | ||||||
|  | #   - PJRC_TEENSY_3 for Teensy 3.0
 | ||||||
|  | #   - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2
 | ||||||
|  | #   - MCHCK_K20 for Infinity KB
 | ||||||
|  | #BOARD = MCHCK_K20
 | ||||||
|  | BOARD = PJRC_TEENSY_3_1 | ||||||
|  | 
 | ||||||
|  | # Cortex version
 | ||||||
|  | # Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
 | ||||||
|  | MCU  = cortex-m4 | ||||||
|  | 
 | ||||||
|  | # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
 | ||||||
|  | # I.e. 6 for Teensy LC; 7 for Teensy 3.x
 | ||||||
|  | ARMV = 7 | ||||||
|  | 
 | ||||||
|  | # Vector table for application
 | ||||||
|  | # 0x00000000-0x00001000 area is occupied by bootlaoder.*/
 | ||||||
|  | # The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
 | ||||||
|  | OPT_DEFS = -DCORTEX_VTOR_INIT=0x00002000 | ||||||
|  | 
 | ||||||
|  | # Build Options
 | ||||||
|  | #   comment out to disable the options.
 | ||||||
|  | #
 | ||||||
|  | BOOTMAGIC_ENABLE ?= yes	# Virtual DIP switch configuration | ||||||
|  | ## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
 | ||||||
|  | MOUSEKEY_ENABLE ?= yes	# Mouse keys | ||||||
|  | EXTRAKEY_ENABLE ?= yes	# Audio control and System control | ||||||
|  | CONSOLE_ENABLE ?= yes	# Console for debug | ||||||
|  | COMMAND_ENABLE ?= yes    # Commands for debug and configuration | ||||||
|  | SLEEP_LED_ENABLE ?= yes  # Breathing sleep LED during USB suspend | ||||||
|  | NKRO_ENABLE ?= yes	    # USB Nkey Rollover | ||||||
|  | CUSTOM_MATRIX ?= yes # Custom matrix file | ||||||
|  | 
 | ||||||
|  | ifndef QUANTUM_DIR | ||||||
|  | 	include ../../Makefile | ||||||
|  | endif | ||||||
							
								
								
									
										1
									
								
								keyboards/infinity_ergodox/bootloader_defs.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/infinity_ergodox/bootloader_defs.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | #define KIIBOHD_BOOTLOADER | ||||||
							
								
								
									
										524
									
								
								keyboards/infinity_ergodox/chconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										524
									
								
								keyboards/infinity_ergodox/chconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,524 @@ | |||||||
|  | /*
 | ||||||
|  |     ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio | ||||||
|  | 
 | ||||||
|  |     Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |     you may not use this file except in compliance with the License. | ||||||
|  |     You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |         http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | 
 | ||||||
|  |     Unless required by applicable law or agreed to in writing, software | ||||||
|  |     distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |     See the License for the specific language governing permissions and | ||||||
|  |     limitations under the License. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @file    templates/chconf.h | ||||||
|  |  * @brief   Configuration file template. | ||||||
|  |  * @details A copy of this file must be placed in each project directory, it | ||||||
|  |  *          contains the application specific kernel settings. | ||||||
|  |  * | ||||||
|  |  * @addtogroup config | ||||||
|  |  * @details Kernel related settings and hooks. | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _CHCONF_H_ | ||||||
|  | #define _CHCONF_H_ | ||||||
|  | 
 | ||||||
|  | #define _CHIBIOS_RT_CONF_ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name System timers settings | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   System time counter resolution. | ||||||
|  |  * @note    Allowed values are 16 or 32 bits. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_ST_RESOLUTION                32 | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   System tick frequency. | ||||||
|  |  * @details Frequency of the system timer that drives the system ticks. This | ||||||
|  |  *          setting also defines the system tick time unit. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_ST_FREQUENCY                 100000 | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Time delta constant for the tick-less mode. | ||||||
|  |  * @note    If this value is zero then the system uses the classic | ||||||
|  |  *          periodic tick. This value represents the minimum number | ||||||
|  |  *          of ticks that is safe to specify in a timeout directive. | ||||||
|  |  *          The value one is not valid, timeouts are rounded up to | ||||||
|  |  *          this value. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_ST_TIMEDELTA                 0 | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name Kernel parameters and options | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Round robin interval. | ||||||
|  |  * @details This constant is the number of system ticks allowed for the | ||||||
|  |  *          threads before preemption occurs. Setting this value to zero | ||||||
|  |  *          disables the preemption for threads with equal priority and the | ||||||
|  |  *          round robin becomes cooperative. Note that higher priority | ||||||
|  |  *          threads can still preempt, the kernel is always preemptive. | ||||||
|  |  * @note    Disabling the round robin preemption makes the kernel more compact | ||||||
|  |  *          and generally faster. | ||||||
|  |  * @note    The round robin preemption is not supported in tickless mode and | ||||||
|  |  *          must be set to zero in that case. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_TIME_QUANTUM                 20 | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Managed RAM size. | ||||||
|  |  * @details Size of the RAM area to be managed by the OS. If set to zero | ||||||
|  |  *          then the whole available RAM is used. The core memory is made | ||||||
|  |  *          available to the heap allocator and/or can be used directly through | ||||||
|  |  *          the simplified core memory allocator. | ||||||
|  |  * | ||||||
|  |  * @note    In order to let the OS manage the whole RAM the linker script must | ||||||
|  |  *          provide the @p __heap_base__ and @p __heap_end__ symbols. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_MEMCORE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_MEMCORE_SIZE                 0 | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Idle thread automatic spawn suppression. | ||||||
|  |  * @details When this option is activated the function @p chSysInit() | ||||||
|  |  *          does not spawn the idle thread. The application @p main() | ||||||
|  |  *          function becomes the idle thread and must implement an | ||||||
|  |  *          infinite loop. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_NO_IDLE_THREAD               FALSE | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name Performance options | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   OS optimization. | ||||||
|  |  * @details If enabled then time efficient rather than space efficient code | ||||||
|  |  *          is used when two possible implementations exist. | ||||||
|  |  * | ||||||
|  |  * @note    This is not related to the compiler optimization options. | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_OPTIMIZE_SPEED               TRUE | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name Subsystem options | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Time Measurement APIs. | ||||||
|  |  * @details If enabled then the time measurement APIs are included in | ||||||
|  |  *          the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_TM                       FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Threads registry APIs. | ||||||
|  |  * @details If enabled then the registry APIs are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_REGISTRY                 TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Threads synchronization APIs. | ||||||
|  |  * @details If enabled then the @p chThdWait() function is included in | ||||||
|  |  *          the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_WAITEXIT                 TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Semaphores APIs. | ||||||
|  |  * @details If enabled then the Semaphores APIs are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_SEMAPHORES               TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Semaphores queuing mode. | ||||||
|  |  * @details If enabled then the threads are enqueued on semaphores by | ||||||
|  |  *          priority rather than in FIFO order. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. Enable this if you have special | ||||||
|  |  *          requirements. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_SEMAPHORES. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Mutexes APIs. | ||||||
|  |  * @details If enabled then the mutexes APIs are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MUTEXES                  TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables recursive behavior on mutexes. | ||||||
|  |  * @note    Recursive mutexes are heavier and have an increased | ||||||
|  |  *          memory footprint. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_MUTEXES. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Conditional Variables APIs. | ||||||
|  |  * @details If enabled then the conditional variables APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_MUTEXES. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_CONDVARS                 TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Conditional Variables APIs with timeout. | ||||||
|  |  * @details If enabled then the conditional variables APIs with timeout | ||||||
|  |  *          specification are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_CONDVARS. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Events Flags APIs. | ||||||
|  |  * @details If enabled then the event flags APIs are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_EVENTS                   TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Events Flags APIs with timeout. | ||||||
|  |  * @details If enabled then the events APIs with timeout specification | ||||||
|  |  *          are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_EVENTS. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_EVENTS_TIMEOUT           TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Synchronous Messages APIs. | ||||||
|  |  * @details If enabled then the synchronous messages APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MESSAGES                 TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Synchronous Messages queuing mode. | ||||||
|  |  * @details If enabled then messages are served by priority rather than in | ||||||
|  |  *          FIFO order. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. Enable this if you have special | ||||||
|  |  *          requirements. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_MESSAGES. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MESSAGES_PRIORITY        FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Mailboxes APIs. | ||||||
|  |  * @details If enabled then the asynchronous messages (mailboxes) APIs are | ||||||
|  |  *          included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_SEMAPHORES. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MAILBOXES                TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   I/O Queues APIs. | ||||||
|  |  * @details If enabled then the I/O queues APIs are included in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_QUEUES                   TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Core Memory Manager APIs. | ||||||
|  |  * @details If enabled then the core memory manager APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MEMCORE                  TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Heap Allocator APIs. | ||||||
|  |  * @details If enabled then the memory heap allocator APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or | ||||||
|  |  *          @p CH_CFG_USE_SEMAPHORES. | ||||||
|  |  * @note    Mutexes are recommended. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_HEAP                     TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Memory Pools Allocator APIs. | ||||||
|  |  * @details If enabled then the memory pools allocator APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_MEMPOOLS                 TRUE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Dynamic Threads APIs. | ||||||
|  |  * @details If enabled then the dynamic threads creation APIs are included | ||||||
|  |  *          in the kernel. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p TRUE. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_WAITEXIT. | ||||||
|  |  * @note    Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_USE_DYNAMIC                  TRUE | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name Debug options | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, kernel statistics. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_STATISTICS                   FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, system state check. | ||||||
|  |  * @details If enabled the correct call protocol for system APIs is checked | ||||||
|  |  *          at runtime. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_SYSTEM_STATE_CHECK           FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, parameters checks. | ||||||
|  |  * @details If enabled then the checks on the API functions input | ||||||
|  |  *          parameters are activated. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_ENABLE_CHECKS                FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, consistency checks. | ||||||
|  |  * @details If enabled then all the assertions in the kernel code are | ||||||
|  |  *          activated. This includes consistency checks inside the kernel, | ||||||
|  |  *          runtime anomalies and port-defined checks. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_ENABLE_ASSERTS               FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, trace buffer. | ||||||
|  |  * @details If enabled then the context switch circular trace buffer is | ||||||
|  |  *          activated. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_ENABLE_TRACE                 FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, stack checks. | ||||||
|  |  * @details If enabled then a runtime stack check is performed. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  * @note    The stack check is performed in a architecture/port dependent way. | ||||||
|  |  *          It may not be implemented or some ports. | ||||||
|  |  * @note    The default failure mode is to halt the system with the global | ||||||
|  |  *          @p panic_msg variable set to @p NULL. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_ENABLE_STACK_CHECK           FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, stacks initialization. | ||||||
|  |  * @details If enabled then the threads working area is filled with a byte | ||||||
|  |  *          value when a thread is created. This can be useful for the | ||||||
|  |  *          runtime measurement of the used stack. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_FILL_THREADS                 FALSE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Debug option, threads profiling. | ||||||
|  |  * @details If enabled then a field is added to the @p thread_t structure that | ||||||
|  |  *          counts the system ticks occurred while executing the thread. | ||||||
|  |  * | ||||||
|  |  * @note    The default is @p FALSE. | ||||||
|  |  * @note    This debug option is not currently compatible with the | ||||||
|  |  *          tickless mode. | ||||||
|  |  */ | ||||||
|  | #define CH_DBG_THREADS_PROFILING            FALSE | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /**
 | ||||||
|  |  * @name Kernel hooks | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Threads descriptor structure extension. | ||||||
|  |  * @details User fields added to the end of the @p thread_t structure. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_THREAD_EXTRA_FIELDS                                          \ | ||||||
|  |   /* Add threads custom fields here.*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Threads initialization hook. | ||||||
|  |  * @details User initialization code added to the @p chThdInit() API. | ||||||
|  |  * | ||||||
|  |  * @note    It is invoked from within @p chThdInit() and implicitly from all | ||||||
|  |  *          the threads creation APIs. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \ | ||||||
|  |   /* Add threads initialization code here.*/                                \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Threads finalization hook. | ||||||
|  |  * @details User finalization code added to the @p chThdExit() API. | ||||||
|  |  * | ||||||
|  |  * @note    It is inserted into lock zone. | ||||||
|  |  * @note    It is also invoked when the threads simply return in order to | ||||||
|  |  *          terminate. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \ | ||||||
|  |   /* Add threads finalization code here.*/                                  \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Context switch hook. | ||||||
|  |  * @details This hook is invoked just before switching between threads. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \ | ||||||
|  |   /* Context switch code here.*/                                            \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   ISR enter hook. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \ | ||||||
|  |   /* IRQ prologue code here.*/                                              \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   ISR exit hook. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \ | ||||||
|  |   /* IRQ epilogue code here.*/                                              \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Idle thread enter hook. | ||||||
|  |  * @note    This hook is invoked within a critical zone, no OS functions | ||||||
|  |  *          should be invoked from here. | ||||||
|  |  * @note    This macro can be used to activate a power saving mode. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_IDLE_ENTER_HOOK() {                                          \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Idle thread leave hook. | ||||||
|  |  * @note    This hook is invoked within a critical zone, no OS functions | ||||||
|  |  *          should be invoked from here. | ||||||
|  |  * @note    This macro can be used to deactivate a power saving mode. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_IDLE_LEAVE_HOOK() {                                          \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Idle Loop hook. | ||||||
|  |  * @details This hook is continuously invoked by the idle thread loop. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_IDLE_LOOP_HOOK() {                                           \ | ||||||
|  |   /* Idle loop code here.*/                                                 \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   System tick event hook. | ||||||
|  |  * @details This hook is invoked in the system tick handler immediately | ||||||
|  |  *          after processing the virtual timers queue. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_SYSTEM_TICK_HOOK() {                                         \ | ||||||
|  |   /* System tick event code here.*/                                         \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   System halt hook. | ||||||
|  |  * @details This hook is invoked in case to a system halting error before | ||||||
|  |  *          the system is halted. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \ | ||||||
|  |   /* System halt code here.*/                                               \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Trace hook. | ||||||
|  |  * @details This hook is invoked each time a new record is written in the | ||||||
|  |  *          trace buffer. | ||||||
|  |  */ | ||||||
|  | #define CH_CFG_TRACE_HOOK(tep) {                                            \ | ||||||
|  |   /* Trace code here.*/                                                     \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* Port-specific settings (override port settings defaulted in chcore.h).    */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | #endif  /* _CHCONF_H_ */ | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
							
								
								
									
										80
									
								
								keyboards/infinity_ergodox/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								keyboards/infinity_ergodox/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | |||||||
|  | /*
 | ||||||
|  | Copyright 2015 Jun Wako <wakojun@gmail.com> | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #ifndef CONFIG_H | ||||||
|  | #define CONFIG_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* USB Device descriptor parameter */ | ||||||
|  | #define VENDOR_ID       0xFEED | ||||||
|  | #define PRODUCT_ID      0x6464 | ||||||
|  | #define DEVICE_VER      0x0001 | ||||||
|  | /* in python2: list(u"whatever".encode('utf-16-le')) */ | ||||||
|  | /*   at most 32 characters or the ugly hack in usb_main.c borks */ | ||||||
|  | #define MANUFACTURER "TMK" | ||||||
|  | #define USBSTR_MANUFACTURER    'T', '\x00', 'M', '\x00', 'K', '\x00', ' ', '\x00' | ||||||
|  | #define PRODUCT "Infinity keyboard/TMK" | ||||||
|  | #define USBSTR_PRODUCT         'I', '\x00', 'n', '\x00', 'f', '\x00', 'i', '\x00', 'n', '\x00', 'i', '\x00', 't', '\x00', 'y', '\x00', ' ', '\x00', 'k', '\x00', 'e', '\x00', 'y', '\x00', 'b', '\x00', 'o', '\x00', 'a', '\x00', 'r', '\x00', 'd', '\x00', '/', '\x00', 'T', '\x00', 'M', '\x00', 'K', '\x00' | ||||||
|  | 
 | ||||||
|  | /* key matrix size */ | ||||||
|  | #define MATRIX_ROWS 18 | ||||||
|  | #define MATRIX_COLS 5 | ||||||
|  | #define LOCAL_MATRIX_ROWS 9 | ||||||
|  | 
 | ||||||
|  | /* define if matrix has ghost */ | ||||||
|  | //#define MATRIX_HAS_GHOST
 | ||||||
|  | 
 | ||||||
|  | /* Set 0 if debouncing isn't needed */ | ||||||
|  | #define DEBOUNCE    5 | ||||||
|  | 
 | ||||||
|  | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||||
|  | //#define LOCKING_SUPPORT_ENABLE
 | ||||||
|  | /* Locking resynchronize hack */ | ||||||
|  | //#define LOCKING_RESYNC_ENABLE
 | ||||||
|  | 
 | ||||||
|  | /* key combination for command */ | ||||||
|  | #define IS_COMMAND() ( \ | ||||||
|  |     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | /* Keymap for Infiity prototype */ | ||||||
|  | #define INFINITY_PROTOTYPE | ||||||
|  | 
 | ||||||
|  | #define SERIAL_LINK_BAUD 562500 | ||||||
|  | #define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1) | ||||||
|  | // The visualizer needs gfx thread priorities
 | ||||||
|  | #define VISUALIZER_THREAD_PRIORITY (NORMAL_PRIORITY - 2) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Feature disable options | ||||||
|  |  *  These options are also useful to firmware size reduction. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* disable debug print */ | ||||||
|  | //#define NO_DEBUG
 | ||||||
|  | 
 | ||||||
|  | /* disable print */ | ||||||
|  | //#define NO_PRINT
 | ||||||
|  | 
 | ||||||
|  | /* disable action features */ | ||||||
|  | //#define NO_ACTION_LAYER
 | ||||||
|  | //#define NO_ACTION_TAPPING
 | ||||||
|  | //#define NO_ACTION_ONESHOT
 | ||||||
|  | //#define NO_ACTION_MACRO
 | ||||||
|  | //#define NO_ACTION_FUNCTION
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										353
									
								
								keyboards/infinity_ergodox/halconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										353
									
								
								keyboards/infinity_ergodox/halconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,353 @@ | |||||||
|  | /*
 | ||||||
|  |     ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio | ||||||
|  | 
 | ||||||
|  |     Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |     you may not use this file except in compliance with the License. | ||||||
|  |     You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |         http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | 
 | ||||||
|  |     Unless required by applicable law or agreed to in writing, software | ||||||
|  |     distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |     See the License for the specific language governing permissions and | ||||||
|  |     limitations under the License. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @file    templates/halconf.h | ||||||
|  |  * @brief   HAL configuration header. | ||||||
|  |  * @details HAL configuration file, this file allows to enable or disable the | ||||||
|  |  *          various device drivers from your application. You may also use | ||||||
|  |  *          this file in order to override the device drivers default settings. | ||||||
|  |  * | ||||||
|  |  * @addtogroup HAL_CONF | ||||||
|  |  * @{ | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _HALCONF_H_ | ||||||
|  | #define _HALCONF_H_ | ||||||
|  | 
 | ||||||
|  | #include "mcuconf.h" | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the PAL subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_PAL                 TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the ADC subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_ADC                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the CAN subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_CAN                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the DAC subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_DAC                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the EXT subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_EXT                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the GPT subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_GPT                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the I2C subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_I2C                 TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the I2S subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_I2S                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the ICU subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_ICU                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the MAC subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_MAC                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the MMC_SPI subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_MMC_SPI             FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the PWM subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_PWM                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the RTC subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_RTC                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the SDC subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_SDC                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the SERIAL subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_SERIAL              TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the SERIAL over USB subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_SERIAL_USB          TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the SPI subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_SPI                 TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the UART subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_UART) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_UART                FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the USB subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_USB) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_USB                 TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the WDG subsystem. | ||||||
|  |  */ | ||||||
|  | #if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) | ||||||
|  | #define HAL_USE_WDG                 FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* ADC driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables synchronous APIs. | ||||||
|  |  * @note    Disabling this option saves both code and data space. | ||||||
|  |  */ | ||||||
|  | #if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) | ||||||
|  | #define ADC_USE_WAIT                TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. | ||||||
|  |  * @note    Disabling this option saves both code and data space. | ||||||
|  |  */ | ||||||
|  | #if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) | ||||||
|  | #define ADC_USE_MUTUAL_EXCLUSION    TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* CAN driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Sleep mode related APIs inclusion switch. | ||||||
|  |  */ | ||||||
|  | #if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) | ||||||
|  | #define CAN_USE_SLEEP_MODE          TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* I2C driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the mutual exclusion APIs on the I2C bus. | ||||||
|  |  */ | ||||||
|  | #if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) | ||||||
|  | #define I2C_USE_MUTUAL_EXCLUSION    TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* MAC driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables an event sources for incoming packets. | ||||||
|  |  */ | ||||||
|  | #if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) | ||||||
|  | #define MAC_USE_ZERO_COPY           FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables an event sources for incoming packets. | ||||||
|  |  */ | ||||||
|  | #if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) | ||||||
|  | #define MAC_USE_EVENTS              TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* MMC_SPI driver related settings.                                          */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Delays insertions. | ||||||
|  |  * @details If enabled this options inserts delays into the MMC waiting | ||||||
|  |  *          routines releasing some extra CPU time for the threads with | ||||||
|  |  *          lower priority, this may slow down the driver a bit however. | ||||||
|  |  *          This option is recommended also if the SPI driver does not | ||||||
|  |  *          use a DMA channel and heavily loads the CPU. | ||||||
|  |  */ | ||||||
|  | #if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) | ||||||
|  | #define MMC_NICE_WAITING            TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* SDC driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Number of initialization attempts before rejecting the card. | ||||||
|  |  * @note    Attempts are performed at 10mS intervals. | ||||||
|  |  */ | ||||||
|  | #if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) | ||||||
|  | #define SDC_INIT_RETRY              100 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Include support for MMC cards. | ||||||
|  |  * @note    MMC support is not yet implemented so this option must be kept | ||||||
|  |  *          at @p FALSE. | ||||||
|  |  */ | ||||||
|  | #if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) | ||||||
|  | #define SDC_MMC_SUPPORT             FALSE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Delays insertions. | ||||||
|  |  * @details If enabled this options inserts delays into the MMC waiting | ||||||
|  |  *          routines releasing some extra CPU time for the threads with | ||||||
|  |  *          lower priority, this may slow down the driver a bit however. | ||||||
|  |  */ | ||||||
|  | #if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) | ||||||
|  | #define SDC_NICE_WAITING            TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* SERIAL driver related settings.                                           */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Default bit rate. | ||||||
|  |  * @details Configuration parameter, this is the baud rate selected for the | ||||||
|  |  *          default configuration. | ||||||
|  |  */ | ||||||
|  | #if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) | ||||||
|  | #define SERIAL_DEFAULT_BITRATE      38400 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Serial buffers size. | ||||||
|  |  * @details Configuration parameter, you can change the depth of the queue | ||||||
|  |  *          buffers depending on the requirements of your application. | ||||||
|  |  * @note    The default is 64 bytes for both the transmission and receive | ||||||
|  |  *          buffers. | ||||||
|  |  */ | ||||||
|  | #if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) | ||||||
|  | #define SERIAL_BUFFERS_SIZE         128 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* SERIAL_USB driver related setting.                                        */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Serial over USB buffers size. | ||||||
|  |  * @details Configuration parameter, the buffer size must be a multiple of | ||||||
|  |  *          the USB data endpoint maximum packet size. | ||||||
|  |  * @note    The default is 64 bytes for both the transmission and receive | ||||||
|  |  *          buffers. | ||||||
|  |  */ | ||||||
|  | #if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) | ||||||
|  | #define SERIAL_USB_BUFFERS_SIZE     256 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* SPI driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables synchronous APIs. | ||||||
|  |  * @note    Disabling this option saves both code and data space. | ||||||
|  |  */ | ||||||
|  | #if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) | ||||||
|  | #define SPI_USE_WAIT                TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. | ||||||
|  |  * @note    Disabling this option saves both code and data space. | ||||||
|  |  */ | ||||||
|  | #if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) | ||||||
|  | #define SPI_USE_MUTUAL_EXCLUSION    TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*===========================================================================*/ | ||||||
|  | /* USB driver related settings.                                              */ | ||||||
|  | /*===========================================================================*/ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief   Enables synchronous APIs. | ||||||
|  |  * @note    Disabling this option saves both code and data space. | ||||||
|  |  */ | ||||||
|  | #if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) | ||||||
|  | #define USB_USE_WAIT                TRUE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* _HALCONF_H_ */ | ||||||
|  | 
 | ||||||
|  | /** @} */ | ||||||
							
								
								
									
										1
									
								
								keyboards/infinity_ergodox/infinity_ergodox.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/infinity_ergodox/infinity_ergodox.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | #include "infinity_ergodox.h" | ||||||
							
								
								
									
										44
									
								
								keyboards/infinity_ergodox/infinity_ergodox.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								keyboards/infinity_ergodox/infinity_ergodox.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | #ifndef KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_ | ||||||
|  | #define KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_ | ||||||
|  | 
 | ||||||
|  | #include "quantum.h" | ||||||
|  | 
 | ||||||
|  | #define KEYMAP( \ | ||||||
|  |     A80, A70, A60, A50, A40, A30, A20,  \ | ||||||
|  |     A81, A71, A61, A51, A41, A31, A21,  \ | ||||||
|  |     A82, A72, A62, A52, A42, A32,       \ | ||||||
|  |     A83, A73, A63, A53, A43, A33, A23,  \ | ||||||
|  |     A84, A74, A64, A54, A44,            \ | ||||||
|  |                                   A13, A03, \ | ||||||
|  |                                        A04, \ | ||||||
|  |                              A34, A24, A14, \ | ||||||
|  |          B20, B30, B40, B50, B60, B70, B80, \ | ||||||
|  |          B21, B31, B41, B51, B61, B71, B81, \ | ||||||
|  |               B32, B42, B52, B62, B72, B82, \ | ||||||
|  |          B23, B33, B43, B53, B63, B73, B83, \ | ||||||
|  |                    B44, B54, B64, B74, B84, \ | ||||||
|  |     B03, B13,     \ | ||||||
|  |     B04,          \ | ||||||
|  |     B14, B24, B34 \ | ||||||
|  | ) { \ | ||||||
|  |     { KC_NO,    KC_NO,    KC_NO,    KC_##A03, KC_##A04 }, \ | ||||||
|  |     { KC_NO,    KC_NO,    KC_NO,    KC_##A13, KC_##A14 }, \ | ||||||
|  |     { KC_##A20, KC_##A21, KC_NO,    KC_##A23, KC_##A24 }, \ | ||||||
|  |     { KC_##A30, KC_##A31, KC_##A32, KC_##A33, KC_##A34 }, \ | ||||||
|  |     { KC_##A40, KC_##A41, KC_##A42, KC_##A43, KC_##A44 }, \ | ||||||
|  |     { KC_##A50, KC_##A51, KC_##A52, KC_##A53, KC_##A54 }, \ | ||||||
|  |     { KC_##A60, KC_##A61, KC_##A62, KC_##A63, KC_##A64 }, \ | ||||||
|  |     { KC_##A70, KC_##A71, KC_##A72, KC_##A73, KC_##A74 }, \ | ||||||
|  |     { KC_##A80, KC_##A81, KC_##A82, KC_##A83, KC_##A84 }, \ | ||||||
|  |     { KC_NO,    KC_NO,    KC_NO,    KC_##B03, KC_##B04 }, \ | ||||||
|  |     { KC_NO,    KC_NO,    KC_NO,    KC_##B13, KC_##B14 }, \ | ||||||
|  |     { KC_##B20, KC_##B21, KC_NO,    KC_##B23, KC_##B24 }, \ | ||||||
|  |     { KC_##B30, KC_##B31, KC_##B32, KC_##B33, KC_##B34 }, \ | ||||||
|  |     { KC_##B40, KC_##B41, KC_##B42, KC_##B43, KC_##B44 }, \ | ||||||
|  |     { KC_##B50, KC_##B51, KC_##B52, KC_##B53, KC_##B54 }, \ | ||||||
|  |     { KC_##B60, KC_##B61, KC_##B62, KC_##B63, KC_##B64 }, \ | ||||||
|  |     { KC_##B70, KC_##B71, KC_##B72, KC_##B73, KC_##B74 }, \ | ||||||
|  |     { KC_##B80, KC_##B81, KC_##B82, KC_##B83, KC_##B84 }  \ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif /* KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_ */ | ||||||
							
								
								
									
										111
									
								
								keyboards/infinity_ergodox/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								keyboards/infinity_ergodox/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | |||||||
|  | /*
 | ||||||
|  | Copyright 2016 Fred Sundvik <fsundvik@gmail.com> | ||||||
|  | Jun Wako <wakojun@gmail.com> | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #include "infinity_ergodox.h" | ||||||
|  | 
 | ||||||
|  | const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |     KEYMAP(  // layer 0 : default
 | ||||||
|  |         // left hand
 | ||||||
|  |         EQL, 1,   2,   3,   4,   5,   ESC, | ||||||
|  |         BSLS,Q,   W,   E,   R,   T,   FN1, | ||||||
|  |         TAB, A,   S,   D,   F,   G, | ||||||
|  |         LSFT,Z,   X,   C,   V,   B,   FN0, | ||||||
|  |         LGUI,GRV, BSLS,LEFT,RGHT, | ||||||
|  |                                       LCTL,LALT, | ||||||
|  |                                            HOME, | ||||||
|  |                                  BSPC,DEL, END, | ||||||
|  |         // right hand
 | ||||||
|  |              FN2, 6,   7,   8,   9,   0,   MINS, | ||||||
|  |              LBRC,Y,   U,   I,   O,   P,   RBRC, | ||||||
|  |                   H,   J,   K,   L,   SCLN,QUOT, | ||||||
|  |              FN0, N,   M,   COMM,DOT, SLSH,RSFT, | ||||||
|  |                        LEFT,DOWN,UP,  RGHT,RGUI, | ||||||
|  |         RALT,RCTL, | ||||||
|  |         PGUP, | ||||||
|  |         PGDN,ENT, SPC | ||||||
|  |     ), | ||||||
|  | 
 | ||||||
|  |     KEYMAP(  // layer 1 : function and symbol keys
 | ||||||
|  |         // left hand
 | ||||||
|  |         TRNS,F1,  F2,  F3,  F4,  F5,  F11, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN3, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                                       TRNS,TRNS, | ||||||
|  |                                            TRNS, | ||||||
|  |                                  TRNS,TRNS,TRNS, | ||||||
|  |         // right hand
 | ||||||
|  |              F12, F6,  F7,  F8,  F9,  F10, TRNS, | ||||||
|  |              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                   TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                        TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS, | ||||||
|  |         TRNS, | ||||||
|  |         TRNS,TRNS,TRNS | ||||||
|  |     ), | ||||||
|  | 
 | ||||||
|  |     KEYMAP(  // layer 2 : keyboard functions
 | ||||||
|  |         // left hand
 | ||||||
|  |         BTLD,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, FN3, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                                       TRNS,TRNS, | ||||||
|  |                                            TRNS, | ||||||
|  |                                  TRNS,TRNS,TRNS, | ||||||
|  |         // right hand
 | ||||||
|  |              TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                   TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                        TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS, | ||||||
|  |         TRNS, | ||||||
|  |         TRNS,TRNS,TRNS | ||||||
|  |     ), | ||||||
|  | 
 | ||||||
|  |     KEYMAP(  // layer 3: numpad
 | ||||||
|  |         // left hand
 | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |         TRNS,TRNS,TRNS,TRNS,TRNS, | ||||||
|  |                                       TRNS,TRNS, | ||||||
|  |                                            TRNS, | ||||||
|  |                                  TRNS,TRNS,TRNS, | ||||||
|  |         // right hand
 | ||||||
|  |              TRNS,NLCK,PSLS,PAST,PAST,PMNS,BSPC, | ||||||
|  |              TRNS,NO,  P7,  P8,  P9,  PMNS,BSPC, | ||||||
|  |                   NO,  P4,  P5,  P6,  PPLS,PENT, | ||||||
|  |              TRNS,NO,  P1,  P2,  P3,  PPLS,PENT, | ||||||
|  |                        P0,  PDOT,SLSH,PENT,PENT, | ||||||
|  |         TRNS,TRNS, | ||||||
|  |         TRNS, | ||||||
|  |         TRNS,TRNS,TRNS | ||||||
|  |     ), | ||||||
|  | }; | ||||||
|  | const uint16_t fn_actions[] = { | ||||||
|  |     ACTION_LAYER_MOMENTARY(1),                      // FN0 - switch to Layer1
 | ||||||
|  |     ACTION_LAYER_SET(2, ON_PRESS),                  // FN1 - set Layer2
 | ||||||
|  |     ACTION_LAYER_TOGGLE(3),                         // FN2 - toggle Layer3 aka Numpad layer
 | ||||||
|  |     ACTION_LAYER_SET(0, ON_PRESS),                  // FN3 - set Layer0
 | ||||||
|  | }; | ||||||
							
								
								
									
										49
									
								
								keyboards/infinity_ergodox/led.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								keyboards/infinity_ergodox/led.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | /*
 | ||||||
|  | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #include "hal.h" | ||||||
|  | 
 | ||||||
|  | #include "led.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void led_set(uint8_t usb_led) { | ||||||
|  | // The LCD backlight functionality conflicts with this simple
 | ||||||
|  | // red backlight
 | ||||||
|  | #if !defined(LCD_BACKLIGHT_ENABLE) && defined(STATUS_LED_ENABLE) | ||||||
|  |     // PTC1: LCD Backlight Red(0:on/1:off)
 | ||||||
|  |     GPIOC->PDDR |= (1<<1); | ||||||
|  |     PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); | ||||||
|  |     if (usb_led & (1<<USB_LED_CAPS_LOCK)) { | ||||||
|  |         GPIOC->PCOR |= (1<<1); | ||||||
|  |     } else { | ||||||
|  |         GPIOC->PSOR |= (1<<1); | ||||||
|  |     } | ||||||
|  | #elif !defined(LCD_BACKLIGHT_ENABLE) | ||||||
|  |     (void)usb_led; | ||||||
|  |     GPIOC->PDDR |= (1<<1); | ||||||
|  |     PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); | ||||||
|  |     GPIOC->PSOR |= (1<<1); | ||||||
|  |     GPIOC->PDDR |= (1<<2); | ||||||
|  |     PORTC->PCR[2] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); | ||||||
|  |     GPIOC->PSOR |= (1<<2); | ||||||
|  |     GPIOC->PDDR |= (1<<3); | ||||||
|  |     PORTC->PCR[3] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); | ||||||
|  |     GPIOC->PSOR |= (1<<3); | ||||||
|  | #else | ||||||
|  |     (void)usb_led; | ||||||
|  | #endif | ||||||
|  | } | ||||||
							
								
								
									
										170
									
								
								keyboards/infinity_ergodox/matrix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								keyboards/infinity_ergodox/matrix.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,170 @@ | |||||||
|  | /*
 | ||||||
|  | Copyright 2016 Fred Sundvik <fsundvik@gmail.com> | ||||||
|  | Jun Wako <wakojun@gmail.com> | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <stdbool.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include "hal.h" | ||||||
|  | #include "timer.h" | ||||||
|  | #include "wait.h" | ||||||
|  | #include "print.h" | ||||||
|  | #include "debug.h" | ||||||
|  | #include "matrix.h" | ||||||
|  | #include "serial_link/system/serial_link.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Infinity ErgoDox Pinusage: | ||||||
|  |  * Column pins are input with internal pull-down. Row pins are output and strobe with high. | ||||||
|  |  * Key is high or 1 when it turns on. | ||||||
|  |  * | ||||||
|  |  *     col: { PTD1, PTD4, PTD5, PTD6, PTD7 } | ||||||
|  |  *     row: { PTB2, PTB3, PTB18, PTB19, PTC0, PTC9, PTC10, PTC11, PTD0 } | ||||||
|  |  */ | ||||||
|  | /* matrix state(1:on, 0:off) */ | ||||||
|  | static matrix_row_t matrix[MATRIX_ROWS]; | ||||||
|  | static matrix_row_t matrix_debouncing[LOCAL_MATRIX_ROWS]; | ||||||
|  | static bool debouncing = false; | ||||||
|  | static uint16_t debouncing_time = 0; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void matrix_init(void) | ||||||
|  | { | ||||||
|  |     /* Column(sense) */ | ||||||
|  |     palSetPadMode(GPIOD, 1,  PAL_MODE_INPUT_PULLDOWN); | ||||||
|  |     palSetPadMode(GPIOD, 4,  PAL_MODE_INPUT_PULLDOWN); | ||||||
|  |     palSetPadMode(GPIOD, 5,  PAL_MODE_INPUT_PULLDOWN); | ||||||
|  |     palSetPadMode(GPIOD, 6,  PAL_MODE_INPUT_PULLDOWN); | ||||||
|  |     palSetPadMode(GPIOD, 7,  PAL_MODE_INPUT_PULLDOWN); | ||||||
|  | 
 | ||||||
|  |     /* Row(strobe) */ | ||||||
|  |     palSetPadMode(GPIOB, 2,  PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOB, 3,  PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOB, 18, PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOB, 19, PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOC, 0,  PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOC, 9,  PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOC, 11, PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  |     palSetPadMode(GPIOD, 0,  PAL_MODE_OUTPUT_PUSHPULL); | ||||||
|  | 
 | ||||||
|  |     memset(matrix, 0, MATRIX_ROWS); | ||||||
|  |     memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | uint8_t matrix_scan(void) | ||||||
|  | { | ||||||
|  |     for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||||||
|  |         matrix_row_t data = 0; | ||||||
|  | 
 | ||||||
|  |         // strobe row
 | ||||||
|  |         switch (row) { | ||||||
|  |             case 0: palSetPad(GPIOB, 2);    break; | ||||||
|  |             case 1: palSetPad(GPIOB, 3);    break; | ||||||
|  |             case 2: palSetPad(GPIOB, 18);   break; | ||||||
|  |             case 3: palSetPad(GPIOB, 19);   break; | ||||||
|  |             case 4: palSetPad(GPIOC, 0);    break; | ||||||
|  |             case 5: palSetPad(GPIOC, 9);    break; | ||||||
|  |             case 6: palSetPad(GPIOC, 10);   break; | ||||||
|  |             case 7: palSetPad(GPIOC, 11);   break; | ||||||
|  |             case 8: palSetPad(GPIOD, 0);    break; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // need wait to settle pin state
 | ||||||
|  |         // if you wait too short, or have a too high update rate
 | ||||||
|  |         // the keyboard might freeze, or there might not be enough
 | ||||||
|  |         // processing power to update the LCD screen properly.
 | ||||||
|  |         // 20us, or two ticks at 100000Hz seems to be OK
 | ||||||
|  |         wait_us(20); | ||||||
|  | 
 | ||||||
|  |         // read col data: { PTD1, PTD4, PTD5, PTD6, PTD7 }
 | ||||||
|  |         data = ((palReadPort(GPIOD) & 0xF0) >> 3) | | ||||||
|  |                ((palReadPort(GPIOD) & 0x02) >> 1); | ||||||
|  | 
 | ||||||
|  |         // un-strobe row
 | ||||||
|  |         switch (row) { | ||||||
|  |             case 0: palClearPad(GPIOB, 2);  break; | ||||||
|  |             case 1: palClearPad(GPIOB, 3);  break; | ||||||
|  |             case 2: palClearPad(GPIOB, 18); break; | ||||||
|  |             case 3: palClearPad(GPIOB, 19); break; | ||||||
|  |             case 4: palClearPad(GPIOC, 0);  break; | ||||||
|  |             case 5: palClearPad(GPIOC, 9);  break; | ||||||
|  |             case 6: palClearPad(GPIOC, 10); break; | ||||||
|  |             case 7: palClearPad(GPIOC, 11); break; | ||||||
|  |             case 8: palClearPad(GPIOD, 0);  break; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (matrix_debouncing[row] != data) { | ||||||
|  |             matrix_debouncing[row] = data; | ||||||
|  |             debouncing = true; | ||||||
|  |             debouncing_time = timer_read(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     uint8_t offset = 0; | ||||||
|  | #ifdef MASTER_IS_ON_RIGHT | ||||||
|  |     if (is_serial_link_master()) { | ||||||
|  |         offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS; | ||||||
|  |     } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { | ||||||
|  |         for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||||||
|  |             matrix[offset + row] = matrix_debouncing[row]; | ||||||
|  |         } | ||||||
|  |         debouncing = false; | ||||||
|  |     } | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool matrix_is_on(uint8_t row, uint8_t col) | ||||||
|  | { | ||||||
|  |     return (matrix[row] & (1<<col)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | matrix_row_t matrix_get_row(uint8_t row) | ||||||
|  | { | ||||||
|  |     return matrix[row]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void matrix_print(void) | ||||||
|  | { | ||||||
|  |     xprintf("\nr/c 01234567\n"); | ||||||
|  |     for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | ||||||
|  |         xprintf("%X0: ", row); | ||||||
|  |         matrix_row_t data = matrix_get_row(row); | ||||||
|  |         for (int col = 0; col < MATRIX_COLS; col++) { | ||||||
|  |             if (data & (1<<col)) | ||||||
|  |                 xprintf("1"); | ||||||
|  |             else | ||||||
|  |                 xprintf("0"); | ||||||
|  |         } | ||||||
|  |         xprintf("\n"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void matrix_set_remote(matrix_row_t* rows, uint8_t index) { | ||||||
|  |     uint8_t offset = 0; | ||||||
|  | #ifdef MASTER_IS_ON_RIGHT | ||||||
|  |     offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2); | ||||||
|  | #else | ||||||
|  |     offset = LOCAL_MATRIX_ROWS * (index + 1); | ||||||
|  | #endif | ||||||
|  |     for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||||||
|  |         matrix[offset + row] = rows[row]; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										74
									
								
								keyboards/infinity_ergodox/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								keyboards/infinity_ergodox/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | |||||||
|  | /*
 | ||||||
|  |     ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio | ||||||
|  | 
 | ||||||
|  |     Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |     you may not use this file except in compliance with the License. | ||||||
|  |     You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |         http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | 
 | ||||||
|  |     Unless required by applicable law or agreed to in writing, software | ||||||
|  |     distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |     See the License for the specific language governing permissions and | ||||||
|  |     limitations under the License. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #ifndef _MCUCONF_H_ | ||||||
|  | #define _MCUCONF_H_ | ||||||
|  | 
 | ||||||
|  | #define K20x_MCUCONF | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * HAL driver system settings. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define K20x7 | ||||||
|  | 
 | ||||||
|  | /* Select the MCU clocking mode below by enabling the appropriate block. */ | ||||||
|  | 
 | ||||||
|  | #define KINETIS_NO_INIT             FALSE | ||||||
|  | 
 | ||||||
|  | /* PEE mode - 48MHz system clock driven by external crystal. */ | ||||||
|  | #define KINETIS_MCG_MODE            KINETIS_MCG_MODE_PEE | ||||||
|  | #define KINETIS_PLLCLK_FREQUENCY    72000000UL | ||||||
|  | #define KINETIS_SYSCLK_FREQUENCY    72000000UL | ||||||
|  | #define KINETIS_BUSCLK_FREQUENCY    36000000UL | ||||||
|  | #define KINETIS_FLASHCLK_FREQUENCY  24000000UL | ||||||
|  | 
 | ||||||
|  | #if 0 | ||||||
|  | /* FEI mode - 48 MHz with internal 32.768 kHz crystal */ | ||||||
|  | #define KINETIS_MCG_MODE            KINETIS_MCG_MODE_FEI | ||||||
|  | #define KINETIS_MCG_FLL_DMX32       1           /* Fine-tune for 32.768 kHz */ | ||||||
|  | #define KINETIS_MCG_FLL_DRS         1           /* 1464x FLL factor */ | ||||||
|  | #define KINETIS_SYSCLK_FREQUENCY    47972352UL  /* 32.768 kHz * 1464 (~48 MHz) */ | ||||||
|  | #define KINETIS_CLKDIV1_OUTDIV1     1 | ||||||
|  | #define KINETIS_CLKDIV1_OUTDIV2     1 | ||||||
|  | #define KINETIS_CLKDIV1_OUTDIV4     2 | ||||||
|  | #define KINETIS_BUSCLK_FREQUENCY    KINETIS_SYSCLK_FREQUENCY | ||||||
|  | #define KINETIS_FLASHCLK_FREQUENCY  KINETIS_SYSCLK_FREQUENCY/2 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * SERIAL driver system settings. | ||||||
|  |  */ | ||||||
|  | #define KINETIS_SERIAL_USE_UART0            TRUE | ||||||
|  | #define KINETIS_SERIAL_USE_UART1            TRUE | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * USB driver settings | ||||||
|  |  */ | ||||||
|  | #define KINETIS_USB_USE_USB0                TRUE | ||||||
|  | /* Need to redefine this, since the default is for K20x */ | ||||||
|  | /* This is for Teensy LC; you should comment it out (or change to 5)
 | ||||||
|  |  * for Teensy 3.x */ | ||||||
|  | #define KINETIS_USB_USB0_IRQ_PRIORITY       2 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * SPI driver system settings. | ||||||
|  |  */ | ||||||
|  | #define KINETIS_SPI_USE_SPI0                TRUE | ||||||
|  | 
 | ||||||
|  | #define KINETIS_I2C_USE_I2C0                TRUE | ||||||
|  | 
 | ||||||
|  | #endif /* _MCUCONF_H_ */ | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Fred Sundvik
						Fred Sundvik