Initial K-Type support (#1963)
* Initial K-Type support
* Copy PJRC_TEENSY_3_1 to work around watchdog issues
* K-Type: Remove bootloader offset in rules.mk
* Ensure matrix and scan quantum functions are called when needed
This is porting a fix from f5422a70b6
			
			
This commit is contained in:
		
				
					committed by
					
						 Jack Humbert
						Jack Humbert
					
				
			
			
				
	
			
			
			
						parent
						
							1226c69f4f
						
					
				
				
					commit
					ab197af2ea
				
			
							
								
								
									
										191
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										191
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,191 @@ | ||||
| /* | ||||
|     ChibiOS - Copyright (C) 2015 RedoX https://github.com/RedoXyde | ||||
|  | ||||
|     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. | ||||
| */ | ||||
| #include "hal.h" | ||||
|  | ||||
| #if HAL_USE_PAL || defined(__DOXYGEN__) | ||||
| /** | ||||
|  * @brief   PAL setup. | ||||
|  * @details Digital I/O ports static configuration as defined in @p board.h. | ||||
|  *          This variable is used by the HAL when initializing the PAL driver. | ||||
|  */ | ||||
| const PALConfig pal_default_config = | ||||
| { | ||||
|     .ports = { | ||||
|         { | ||||
|             /* | ||||
|              * PORTA setup. | ||||
|              * | ||||
|              * PTA4  - PIN33 | ||||
|              * PTA5  - PIN24 | ||||
|              * PTA12 - PIN3 | ||||
|              * PTA13 - PIN4 | ||||
|              * | ||||
|              * PTA18/19 crystal | ||||
|              * PTA0/3 SWD | ||||
|              */ | ||||
|             .port = IOPORT1, | ||||
|             .pads = { | ||||
|                 PAL_MODE_ALTERNATIVE_7,     PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_ALTERNATIVE_7,     PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_INPUT_ANALOG,      PAL_MODE_INPUT_ANALOG,      PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             /* | ||||
|              * PORTB setup. | ||||
|              * | ||||
|              * PTB0  - PIN16 | ||||
|              * PTB1  - PIN17 | ||||
|              * PTB2  - PIN19 | ||||
|              * PTB3  - PIN18 | ||||
|              * PTB16 - PIN0 - UART0_TX | ||||
|              * PTB17 - PIN1 - UART0_RX | ||||
|              * PTB18 - PIN32 | ||||
|              * PTB19 - PIN25 | ||||
|              */ | ||||
|             .port = IOPORT2, | ||||
|             .pads = { | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_ALTERNATIVE_3,     PAL_MODE_ALTERNATIVE_3, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             /* | ||||
|              * PORTC setup. | ||||
|              * | ||||
|              * PTC0  - PIN15 | ||||
|              * PTC1  - PIN22 | ||||
|              * PTC2  - PIN23 | ||||
|              * PTC3  - PIN9 | ||||
|              * PTC4  - PIN10 | ||||
|              * PTC5  - PIN13 | ||||
|              * PTC6  - PIN11 | ||||
|              * PTC7  - PIN12 | ||||
|              * PTC8  - PIN28 | ||||
|              * PTC9  - PIN27 | ||||
|              * PTC10 - PIN29 | ||||
|              * PTC11 - PIN30 | ||||
|              */ | ||||
|             .port = IOPORT3, | ||||
|             .pads = { | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             /* | ||||
|              * PORTD setup. | ||||
|              * | ||||
|              * PTD0  - PIN2 | ||||
|              * PTD1  - PIN14 | ||||
|              * PTD2  - PIN7 | ||||
|              * PTD3  - PIN8 | ||||
|              * PTD4  - PIN6 | ||||
|              * PTD5  - PIN20 | ||||
|              * PTD6  - PIN21 | ||||
|              * PTD7  - PIN5 | ||||
|              */ | ||||
|             .port = IOPORT4, | ||||
|             .pads = { | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL, | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             /* | ||||
|              * PORTE setup. | ||||
|              * | ||||
|              * PTE0  - PIN31 | ||||
|              * PTE1  - PIN26 | ||||
|              */ | ||||
|             .port = IOPORT5, | ||||
|             .pads = { | ||||
|                 PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_OUTPUT_PUSHPULL,   PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|                 PAL_MODE_UNCONNECTED,       PAL_MODE_UNCONNECTED, | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| // NOTE: This value comes from kiibohd/controller and is the location of a value | ||||
| // which needs to be checked before disabling the watchdog (which happens in | ||||
| // k20x_clock_init) | ||||
| #define WDOG_TMROUTL            *(volatile uint16_t *)0x40052012 | ||||
|  | ||||
| /** | ||||
|  * @brief   Early initialization code. | ||||
|  * @details This initialization must be performed just after stack setup | ||||
|  *          and before any other initialization. | ||||
|  */ | ||||
| void __early_init(void) { | ||||
|   // This is a dirty hack and should only be used as a temporary fix until this | ||||
|   // is upstreamed. | ||||
|   while (WDOG_TMROUTL < 2); // Must wait for WDOG timer if already running, before jumping | ||||
|  | ||||
|   k20x_clock_init(); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief   Board-specific initialization code. | ||||
|  * @todo    Add your board-specific code, if any. | ||||
|  */ | ||||
| void boardInit(void) { | ||||
| } | ||||
							
								
								
									
										295
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										295
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,295 @@ | ||||
| /* | ||||
|     ChibiOS - Copyright (C) 2015 RedoX https://github.com/RedoXyde | ||||
|  | ||||
|     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 _BOARD_H_ | ||||
| #define _BOARD_H_ | ||||
|  | ||||
| /* | ||||
|  * Setup for the PJRC Teensy 3.1 board. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Board identifier. | ||||
|  */ | ||||
| #define BOARD_PJRC_TEENSY_3_1 | ||||
| #define BOARD_NAME                  "PJRC Teensy 3.1" | ||||
|  | ||||
| /* External 16 MHz crystal */ | ||||
| #define KINETIS_XTAL_FREQUENCY      16000000UL | ||||
|  | ||||
| /* Use internal capacitors for the crystal */ | ||||
| #define KINETIS_BOARD_OSCILLATOR_SETTING OSC_CR_SC8P|OSC_CR_SC2P | ||||
|  | ||||
| /* | ||||
|  * MCU type | ||||
|  */ | ||||
| #define K20x7 | ||||
|  | ||||
| /* | ||||
|  * IO pins assignments. | ||||
|  */ | ||||
| #define PORTA_PIN0                  0 | ||||
| #define PORTA_PIN1                  1 | ||||
| #define PORTA_PIN2                  2 | ||||
| #define PORTA_PIN3                  3 | ||||
| #define TEENSY_PIN33                4 | ||||
| #define TEENSY_PIN24                5 | ||||
| #define PORTA_PIN6                  6 | ||||
| #define PORTA_PIN7                  7 | ||||
| #define PORTA_PIN8                  8 | ||||
| #define PORTA_PIN9                  9 | ||||
| #define PORTA_PIN10                 10 | ||||
| #define PORTA_PIN11                 11 | ||||
| #define TEENSY_PIN3                 12 | ||||
| #define TEENSY_PIN4                 13 | ||||
| #define PORTA_PIN14                 14 | ||||
| #define PORTA_PIN15                 15 | ||||
| #define PORTA_PIN16                 16 | ||||
| #define PORTA_PIN17                 17 | ||||
| #define PORTA_PIN18                 18 | ||||
| #define PORTA_PIN19                 19 | ||||
| #define PORTA_PIN20                 20 | ||||
| #define PORTA_PIN21                 21 | ||||
| #define PORTA_PIN22                 22 | ||||
| #define PORTA_PIN23                 23 | ||||
| #define PORTA_PIN24                 24 | ||||
| #define PORTA_PIN25                 25 | ||||
| #define PORTA_PIN26                 26 | ||||
| #define PORTA_PIN27                 27 | ||||
| #define PORTA_PIN28                 28 | ||||
| #define PORTA_PIN29                 29 | ||||
| #define PORTA_PIN30                 30 | ||||
| #define PORTA_PIN31                 31 | ||||
|  | ||||
| #define TEENSY_PIN3_IOPORT  IOPORT1 | ||||
| #define TEENSY_PIN4_IOPORT  IOPORT1 | ||||
| #define TEENSY_PIN24_IOPORT IOPORT1 | ||||
| #define TEENSY_PIN33_IOPORT IOPORT1 | ||||
|  | ||||
| #define TEENSY_PIN16                0 | ||||
| #define TEENSY_PIN17                1 | ||||
| #define TEENSY_PIN19                2 | ||||
| #define TEENSY_PIN18                3 | ||||
| #define PORTB_PIN4                  4 | ||||
| #define PORTB_PIN5                  5 | ||||
| #define PORTB_PIN6                  6 | ||||
| #define PORTB_PIN7                  7 | ||||
| #define PORTB_PIN8                  8 | ||||
| #define PORTB_PIN9                  9 | ||||
| #define PORTB_PIN10                 10 | ||||
| #define PORTB_PIN11                 11 | ||||
| #define PORTB_PIN12                 12 | ||||
| #define PORTB_PIN13                 13 | ||||
| #define PORTB_PIN14                 14 | ||||
| #define PORTB_PIN15                 15 | ||||
| #define TEENSY_PIN0                 16 | ||||
| #define TEENSY_PIN1                 17 | ||||
| #define TEENSY_PIN32                18 | ||||
| #define TEENSY_PIN25                19 | ||||
| #define PORTB_PIN20                 20 | ||||
| #define PORTB_PIN21                 21 | ||||
| #define PORTB_PIN22                 22 | ||||
| #define PORTB_PIN23                 23 | ||||
| #define PORTB_PIN24                 24 | ||||
| #define PORTB_PIN25                 25 | ||||
| #define PORTB_PIN26                 26 | ||||
| #define PORTB_PIN27                 27 | ||||
| #define PORTB_PIN28                 28 | ||||
| #define PORTB_PIN29                 29 | ||||
| #define PORTB_PIN30                 30 | ||||
| #define PORTB_PIN31                 31 | ||||
|  | ||||
| #define TEENSY_PIN0_IOPORT  IOPORT2 | ||||
| #define TEENSY_PIN1_IOPORT  IOPORT2 | ||||
| #define TEENSY_PIN16_IOPORT IOPORT2 | ||||
| #define TEENSY_PIN17_IOPORT IOPORT2 | ||||
| #define TEENSY_PIN18_IOPORT IOPORT2 | ||||
| #define TEENSY_PIN19_IOPORT IOPORT2 | ||||
| #define TEENSY_PIN25_IOPORT IOPORT2 | ||||
| #define TEENSY_PIN32_IOPORT IOPORT2 | ||||
|  | ||||
| #define TEENSY_PIN15                0 | ||||
| #define TEENSY_PIN22                1 | ||||
| #define TEENSY_PIN23                2 | ||||
| #define TEENSY_PIN9                 3 | ||||
| #define TEENSY_PIN10                4 | ||||
| #define TEENSY_PIN13                5 | ||||
| #define TEENSY_PIN11                6 | ||||
| #define TEENSY_PIN12                7 | ||||
| #define TEENSY_PIN28                8 | ||||
| #define TEENSY_PIN27                9 | ||||
| #define TEENSY_PIN29                10 | ||||
| #define TEENSY_PIN30                11 | ||||
| #define PORTC_PIN12                 12 | ||||
| #define PORTC_PIN13                 13 | ||||
| #define PORTC_PIN14                 14 | ||||
| #define PORTC_PIN15                 15 | ||||
| #define PORTC_PIN16                 16 | ||||
| #define PORTC_PIN17                 17 | ||||
| #define PORTC_PIN18                 18 | ||||
| #define PORTC_PIN19                 19 | ||||
| #define PORTC_PIN20                 20 | ||||
| #define PORTC_PIN21                 21 | ||||
| #define PORTC_PIN22                 22 | ||||
| #define PORTC_PIN23                 23 | ||||
| #define PORTC_PIN24                 24 | ||||
| #define PORTC_PIN25                 25 | ||||
| #define PORTC_PIN26                 26 | ||||
| #define PORTC_PIN27                 27 | ||||
| #define PORTC_PIN28                 28 | ||||
| #define PORTC_PIN29                 29 | ||||
| #define PORTC_PIN30                 30 | ||||
| #define PORTC_PIN31                 31 | ||||
|  | ||||
| #define TEENSY_PIN9_IOPORT  IOPORT3 | ||||
| #define TEENSY_PIN10_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN11_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN12_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN13_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN15_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN22_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN23_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN27_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN28_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN29_IOPORT IOPORT3 | ||||
| #define TEENSY_PIN30_IOPORT IOPORT3 | ||||
|  | ||||
| #define TEENSY_PIN2                 0 | ||||
| #define TEENSY_PIN14                1 | ||||
| #define TEENSY_PIN7                 2 | ||||
| #define TEENSY_PIN8                 3 | ||||
| #define TEENSY_PIN6                 4 | ||||
| #define TEENSY_PIN20                5 | ||||
| #define TEENSY_PIN21                6 | ||||
| #define TEENSY_PIN5                 7 | ||||
| #define PORTD_PIN8                  8 | ||||
| #define PORTD_PIN9                  9 | ||||
| #define PORTD_PIN10                 10 | ||||
| #define PORTD_PIN11                 11 | ||||
| #define PORTD_PIN12                 12 | ||||
| #define PORTD_PIN13                 13 | ||||
| #define PORTD_PIN14                 14 | ||||
| #define PORTD_PIN15                 15 | ||||
| #define PORTD_PIN16                 16 | ||||
| #define PORTD_PIN17                 17 | ||||
| #define PORTD_PIN18                 18 | ||||
| #define PORTD_PIN19                 19 | ||||
| #define PORTD_PIN20                 20 | ||||
| #define PORTD_PIN21                 21 | ||||
| #define PORTD_PIN22                 22 | ||||
| #define PORTD_PIN23                 23 | ||||
| #define PORTD_PIN24                 24 | ||||
| #define PORTD_PIN25                 25 | ||||
| #define PORTD_PIN26                 26 | ||||
| #define PORTD_PIN27                 27 | ||||
| #define PORTD_PIN28                 28 | ||||
| #define PORTD_PIN29                 29 | ||||
| #define PORTD_PIN30                 30 | ||||
| #define PORTD_PIN31                 31 | ||||
|  | ||||
| #define TEENSY_PIN2_IOPORT  IOPORT4 | ||||
| #define TEENSY_PIN5_IOPORT  IOPORT4 | ||||
| #define TEENSY_PIN6_IOPORT  IOPORT4 | ||||
| #define TEENSY_PIN7_IOPORT  IOPORT4 | ||||
| #define TEENSY_PIN8_IOPORT  IOPORT4 | ||||
| #define TEENSY_PIN14_IOPORT IOPORT4 | ||||
| #define TEENSY_PIN20_IOPORT IOPORT4 | ||||
| #define TEENSY_PIN21_IOPORT IOPORT4 | ||||
|  | ||||
| #define TEENSY_PIN31                0 | ||||
| #define TEENSY_PIN26                1 | ||||
| #define PORTE_PIN2                  2 | ||||
| #define PORTE_PIN3                  3 | ||||
| #define PORTE_PIN4                  4 | ||||
| #define PORTE_PIN5                  5 | ||||
| #define PORTE_PIN6                  6 | ||||
| #define PORTE_PIN7                  7 | ||||
| #define PORTE_PIN8                  8 | ||||
| #define PORTE_PIN9                  9 | ||||
| #define PORTE_PIN10                 10 | ||||
| #define PORTE_PIN11                 11 | ||||
| #define PORTE_PIN12                 12 | ||||
| #define PORTE_PIN13                 13 | ||||
| #define PORTE_PIN14                 14 | ||||
| #define PORTE_PIN15                 15 | ||||
| #define PORTE_PIN16                 16 | ||||
| #define PORTE_PIN17                 17 | ||||
| #define PORTE_PIN18                 18 | ||||
| #define PORTE_PIN19                 19 | ||||
| #define PORTE_PIN20                 20 | ||||
| #define PORTE_PIN21                 21 | ||||
| #define PORTE_PIN22                 22 | ||||
| #define PORTE_PIN23                 23 | ||||
| #define PORTE_PIN24                 24 | ||||
| #define PORTE_PIN25                 25 | ||||
| #define PORTE_PIN26                 26 | ||||
| #define PORTE_PIN27                 27 | ||||
| #define PORTE_PIN28                 28 | ||||
| #define PORTE_PIN29                 29 | ||||
| #define PORTE_PIN30                 30 | ||||
| #define PORTE_PIN31                 31 | ||||
|  | ||||
| #define TEENSY_PIN26_IOPORT IOPORT5 | ||||
| #define TEENSY_PIN31_IOPORT IOPORT5 | ||||
|  | ||||
| #define LINE_PIN1           PAL_LINE(TEENSY_PIN1_IOPORT, TEENSY_PIN1) | ||||
| #define LINE_PIN2           PAL_LINE(TEENSY_PIN2_IOPORT, TEENSY_PIN2) | ||||
| #define LINE_PIN3           PAL_LINE(TEENSY_PIN3_IOPORT, TEENSY_PIN3) | ||||
| #define LINE_PIN4           PAL_LINE(TEENSY_PIN4_IOPORT, TEENSY_PIN4) | ||||
| #define LINE_PIN5           PAL_LINE(TEENSY_PIN5_IOPORT, TEENSY_PIN5) | ||||
| #define LINE_PIN6           PAL_LINE(TEENSY_PIN6_IOPORT, TEENSY_PIN6) | ||||
| #define LINE_PIN7           PAL_LINE(TEENSY_PIN7_IOPORT, TEENSY_PIN7) | ||||
| #define LINE_PIN8           PAL_LINE(TEENSY_PIN8_IOPORT, TEENSY_PIN8) | ||||
| #define LINE_PIN9           PAL_LINE(TEENSY_PIN9_IOPORT, TEENSY_PIN9) | ||||
| #define LINE_PIN10          PAL_LINE(TEENSY_PIN10_IOPORT, TEENSY_PIN10) | ||||
| #define LINE_PIN11          PAL_LINE(TEENSY_PIN11_IOPORT, TEENSY_PIN11) | ||||
| #define LINE_PIN12          PAL_LINE(TEENSY_PIN12_IOPORT, TEENSY_PIN12) | ||||
| #define LINE_PIN13          PAL_LINE(TEENSY_PIN13_IOPORT, TEENSY_PIN13) | ||||
| #define LINE_PIN14          PAL_LINE(TEENSY_PIN14_IOPORT, TEENSY_PIN14) | ||||
| #define LINE_PIN15          PAL_LINE(TEENSY_PIN15_IOPORT, TEENSY_PIN15) | ||||
| #define LINE_PIN16          PAL_LINE(TEENSY_PIN16_IOPORT, TEENSY_PIN16) | ||||
| #define LINE_PIN17          PAL_LINE(TEENSY_PIN17_IOPORT, TEENSY_PIN17) | ||||
| #define LINE_PIN18          PAL_LINE(TEENSY_PIN18_IOPORT, TEENSY_PIN18) | ||||
| #define LINE_PIN19          PAL_LINE(TEENSY_PIN19_IOPORT, TEENSY_PIN19) | ||||
| #define LINE_PIN20          PAL_LINE(TEENSY_PIN20_IOPORT, TEENSY_PIN20) | ||||
| #define LINE_PIN21          PAL_LINE(TEENSY_PIN21_IOPORT, TEENSY_PIN21) | ||||
| #define LINE_PIN22          PAL_LINE(TEENSY_PIN22_IOPORT, TEENSY_PIN22) | ||||
| #define LINE_PIN23          PAL_LINE(TEENSY_PIN23_IOPORT, TEENSY_PIN23) | ||||
| #define LINE_PIN24          PAL_LINE(TEENSY_PIN24_IOPORT, TEENSY_PIN24) | ||||
| #define LINE_PIN25          PAL_LINE(TEENSY_PIN25_IOPORT, TEENSY_PIN25) | ||||
| #define LINE_PIN25          PAL_LINE(TEENSY_PIN25_IOPORT, TEENSY_PIN25) | ||||
| #define LINE_PIN26          PAL_LINE(TEENSY_PIN26_IOPORT, TEENSY_PIN26) | ||||
| #define LINE_PIN27          PAL_LINE(TEENSY_PIN27_IOPORT, TEENSY_PIN27) | ||||
| #define LINE_PIN28          PAL_LINE(TEENSY_PIN28_IOPORT, TEENSY_PIN28) | ||||
| #define LINE_PIN29          PAL_LINE(TEENSY_PIN29_IOPORT, TEENSY_PIN29) | ||||
| #define LINE_PIN30          PAL_LINE(TEENSY_PIN30_IOPORT, TEENSY_PIN30) | ||||
| #define LINE_PIN31          PAL_LINE(TEENSY_PIN31_IOPORT, TEENSY_PIN31) | ||||
| #define LINE_PIN32          PAL_LINE(TEENSY_PIN32_IOPORT, TEENSY_PIN32) | ||||
| #define LINE_PIN33          PAL_LINE(TEENSY_PIN33_IOPORT, TEENSY_PIN33) | ||||
|  | ||||
| #define LINE_LED            LINE_PIN13 | ||||
|  | ||||
| #if !defined(_FROM_ASM_) | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|   void boardInit(void); | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif /* _FROM_ASM_ */ | ||||
|  | ||||
| #endif /* _BOARD_H_ */ | ||||
							
								
								
									
										5
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/k_type/boards/K_TYPE_TEENSY_3_1/board.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # List of all the board related files. | ||||
| BOARDSRC = $(BOARD_PATH)/boards/K_TYPE_TEENSY_3_1/board.c | ||||
|  | ||||
| # Required include directories | ||||
| BOARDINC = $(BOARD_PATH)/boards/K_TYPE_TEENSY_3_1 | ||||
							
								
								
									
										1
									
								
								keyboards/k_type/bootloader_defs.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/k_type/bootloader_defs.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| #define KIIBOHD_BOOTLOADER | ||||
							
								
								
									
										524
									
								
								keyboards/k_type/chconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										524
									
								
								keyboards/k_type/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 | ||||
|  | ||||
| /* Use __WFI in the idle thread for waiting. Does lower the power | ||||
|  * consumption. */ | ||||
| #define CORTEX_ENABLE_WFI_IDLE              TRUE | ||||
|  | ||||
| /** @} */ | ||||
|  | ||||
| /*===========================================================================*/ | ||||
| /** | ||||
|  * @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   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 trace buffer is activated. | ||||
|  * | ||||
|  * @note    The default is @p CH_DBG_TRACE_MASK_DISABLED. | ||||
|  */ | ||||
| #define CH_DBG_TRACE_MASK                   CH_DBG_TRACE_MASK_DISABLED | ||||
|  | ||||
| /** | ||||
|  * @brief   Trace buffer entries. | ||||
|  * @note    The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is | ||||
|  *          different from @p CH_DBG_TRACE_MASK_DISABLED. | ||||
|  */ | ||||
| #define CH_DBG_TRACE_BUFFER_SIZE            128 | ||||
|  | ||||
| /** | ||||
|  * @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. | ||||
|  */ | ||||
| #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() {                                          \ | ||||
|   /* Idle-enter code here.*/                                                \ | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @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() {                                          \ | ||||
|   /* Idle-leave code here.*/                                                \ | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @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 */ | ||||
|  | ||||
| /** @} */ | ||||
							
								
								
									
										71
									
								
								keyboards/k_type/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								keyboards/k_type/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| /* | ||||
| 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 | ||||
|  | ||||
| #define PREVENT_STUCK_MODIFIERS | ||||
|  | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID       0x1c11 | ||||
| #define PRODUCT_ID      0xb04d | ||||
| #define DEVICE_VER      673 | ||||
| /* in python2: list(u"whatever".encode('utf-16-le')) */ | ||||
| /*   at most 32 characters or the ugly hack in usb_main.c borks */ | ||||
| #define MANUFACTURER "Input Club" | ||||
| #define USBSTR_MANUFACTURER    'I', '\x00', 'n', '\x00', 'p', '\x00', 'u', '\x00', 't', '\x00', ' ', '\x00', 'C', '\x00', 'l', '\x00', 'u', '\x00', 'b', '\x00' | ||||
| #define PRODUCT "K-Type/QMK" | ||||
| #define USBSTR_PRODUCT         'K', '\x00', '-', '\x00', 'T', '\x00', 'y', '\x00', 'p', '\x00', 'e', '\x00', '/', '\x00', 'Q', '\x00', 'M', '\x00', 'K', '\x00' | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 10 | ||||
| #define MATRIX_COLS 10 | ||||
|  | ||||
| /* 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)) \ | ||||
| ) | ||||
|  | ||||
| /* | ||||
|  * 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/k_type/halconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										353
									
								
								keyboards/k_type/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              FALSE | ||||
| #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                 FALSE | ||||
| #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         16 | ||||
| #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_ */ | ||||
|  | ||||
| /** @} */ | ||||
							
								
								
									
										33
									
								
								keyboards/k_type/k_type.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/k_type/k_type.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| /* | ||||
| Copyright 2012,2013 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 "k_type.h" | ||||
|  | ||||
| __attribute__ ((weak)) | ||||
| void matrix_init_user(void) { | ||||
| } | ||||
|  | ||||
| __attribute__ ((weak)) | ||||
| void matrix_scan_user(void) { | ||||
| } | ||||
|  | ||||
| void matrix_init_kb(void) { | ||||
|   matrix_init_user(); | ||||
| }; | ||||
|  | ||||
| void matrix_scan_kb(void) { | ||||
|   matrix_scan_user(); | ||||
| }; | ||||
							
								
								
									
										42
									
								
								keyboards/k_type/k_type.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								keyboards/k_type/k_type.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| /* | ||||
| Copyright 2017 Input Club | ||||
|  | ||||
| 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 K_TYPE_H | ||||
| #define K_TYPE_H | ||||
|  | ||||
| #include "quantum.h" | ||||
|  | ||||
| #define KEYMAP( \ | ||||
|     K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, K16, \ | ||||
|     K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, \ | ||||
|     K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, \ | ||||
|     K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62, K63, \ | ||||
|     K64, K65, K66, K67, K68, K69, K70, K71, K72, K73, K74, K75, K76, \ | ||||
|     K77, K78, K79, K80, K81, K82, K83, K84, K85, K86, K87 \ | ||||
| ) { \ | ||||
|     {   K01,   K11,   K21,   K30,   K39,   K48,   K58,   K65, KC_NO,   K83, }, \ | ||||
|     {   K02,   K12,   K22, KC_NO,   K40,   K49,   K59,   K66,   K75,   K84, }, \ | ||||
|     {   K03,   K13,   K23,   K31,   K41,   K50,   K60,   K67, KC_NO,   K85, }, \ | ||||
|     {   K04,   K14,   K24,   K32,   K42,   K51,   K61,   K68,   K76,   K86, }, \ | ||||
|     {   K05,   K15,   K25,   K33,   K43,   K52,   K62,   K69,   K77,   K87, }, \ | ||||
|     {   K06,   K16,   K26,   K34,   K44,   K53, KC_NO,   K70,   K78, KC_NO, }, \ | ||||
|     {   K07,   K17,   K27,   K35,   K45,   K54,   K63,   K71,   K79, KC_NO, }, \ | ||||
|     {   K08,   K18,   K28,   K36,   K46,   K55, KC_NO,   K72,   K80, KC_NO, }, \ | ||||
|     {   K09,   K19,   K29,   K37,   K47,   K56,   K64,   K73,   K81, KC_NO, }, \ | ||||
|     {   K10,   K20, KC_NO,   K38, KC_NO,   K57, KC_NO,   K74,   K82, KC_NO, }, \ | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										25
									
								
								keyboards/k_type/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/k_type/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| #include "k_type.h" | ||||
|  | ||||
| const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|     [0] = KEYMAP( | ||||
|       KC_ESC,  KC_F1,   KC_F2,   KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,           KC_PSCR, KC_SLCK, KC_PAUS, \ | ||||
|       KC_GRV,  KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,   KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_INS,  KC_HOME, KC_PGUP, \ | ||||
|       KC_TAB,  KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,  KC_END,  KC_PGDN, \ | ||||
|       KC_CAPS, KC_A,    KC_S,    KC_D,   KC_F,   KC_G,   KC_H,   KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT, \ | ||||
|       KC_LSFT, KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,                            KC_UP, \ | ||||
|       KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,                KC_RALT, KC_RGUI, KC_MENU, KC_RCTL,                            KC_LEFT, KC_DOWN, KC_RGHT), | ||||
| }; | ||||
|  | ||||
| const uint16_t fn_actions[] = { | ||||
|  | ||||
| }; | ||||
|  | ||||
| // Runs just one time when the keyboard initializes. | ||||
| void matrix_init_user(void) { | ||||
|  | ||||
| }; | ||||
|  | ||||
| // Runs constantly in the background, in a loop. | ||||
| void matrix_scan_user(void) { | ||||
|  | ||||
| }; | ||||
							
								
								
									
										138
									
								
								keyboards/k_type/matrix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								keyboards/k_type/matrix.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | ||||
| //#include <stdint.h> | ||||
| //#include <stdbool.h> | ||||
| #include <string.h> | ||||
| #include "hal.h" | ||||
| #include "timer.h" | ||||
| #include "wait.h" | ||||
| #include "print.h" | ||||
| #include "matrix.h" | ||||
| #include "debug.h" | ||||
|  | ||||
| /* matrix state(1:on, 0:off) */ | ||||
| static matrix_row_t matrix[MATRIX_ROWS]; | ||||
| static matrix_row_t matrix_debouncing[MATRIX_ROWS]; | ||||
| static bool debouncing = false; | ||||
| static uint16_t debouncing_time = 0; | ||||
|  | ||||
| void matrix_init(void) | ||||
| { | ||||
|     debug_matrix = true; | ||||
|  | ||||
|     /* Column(sense) */ | ||||
|     palSetPadMode(GPIOD, 5,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOD, 6,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOD, 7,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 1,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 2,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 3,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 4,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 5,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 6,  PAL_MODE_INPUT_PULLDOWN); | ||||
|     palSetPadMode(GPIOC, 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, 8,   PAL_MODE_OUTPUT_PUSHPULL); | ||||
|     palSetPadMode(GPIOC, 9,   PAL_MODE_OUTPUT_PUSHPULL); | ||||
|     palSetPadMode(GPIOD, 0,   PAL_MODE_OUTPUT_PUSHPULL); | ||||
|     palSetPadMode(GPIOD, 1,   PAL_MODE_OUTPUT_PUSHPULL); | ||||
|     palSetPadMode(GPIOD, 4,   PAL_MODE_OUTPUT_PUSHPULL); | ||||
|  | ||||
|     memset(matrix, 0, MATRIX_ROWS); | ||||
|     memset(matrix_debouncing, 0, MATRIX_ROWS); | ||||
|  | ||||
|     matrix_init_quantum(); | ||||
| } | ||||
|  | ||||
| uint8_t matrix_scan(void) | ||||
| { | ||||
|     for (int row = 0; row < 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, 8);    break; | ||||
|             case 6: palSetPad(GPIOC, 9);    break; | ||||
|             case 7: palSetPad(GPIOD, 0);    break; | ||||
|             case 8: palSetPad(GPIOD, 1);    break; | ||||
|             case 9: palSetPad(GPIOD, 4);    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: { PTD5, PTD6, PTD7, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7 } | ||||
|         data = ((palReadPort(GPIOC) & 0xFEUL) << 2) | | ||||
|                ((palReadPort(GPIOD) & 0xE0UL) >> 5); | ||||
|  | ||||
|         // 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, 8);  break; | ||||
|             case 6: palClearPad(GPIOC, 9);  break; | ||||
|             case 7: palClearPad(GPIOD, 0);  break; | ||||
|             case 8: palClearPad(GPIOD, 1);  break; | ||||
|             case 9: palClearPad(GPIOD, 4);  break; | ||||
|         } | ||||
|  | ||||
|         if (matrix_debouncing[row] != data) { | ||||
|             matrix_debouncing[row] = data; | ||||
|             debouncing = true; | ||||
|             debouncing_time = timer_read(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { | ||||
|         for (int row = 0; row < MATRIX_ROWS; row++) { | ||||
|             matrix[row] = matrix_debouncing[row]; | ||||
|         } | ||||
|         debouncing = false; | ||||
|     } | ||||
|  | ||||
|     matrix_scan_quantum(); | ||||
|     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("%02X: ", 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"); | ||||
|     } | ||||
|  | ||||
|     wait_ms(50); | ||||
| } | ||||
							
								
								
									
										54
									
								
								keyboards/k_type/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								keyboards/k_type/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| /* | ||||
|     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. | ||||
|  */ | ||||
|  | ||||
| /* 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 | ||||
|  | ||||
| /* | ||||
|  * SERIAL driver system settings. | ||||
|  */ | ||||
| #define KINETIS_SERIAL_USE_UART0            TRUE | ||||
|  | ||||
| /* | ||||
|  * USB driver settings | ||||
|  */ | ||||
| #define KINETIS_USB_USE_USB0                TRUE | ||||
| #define KINETIS_USB_USB0_IRQ_PRIORITY       5 | ||||
|  | ||||
| /* | ||||
|  * I2C driver settings | ||||
|  */ | ||||
| #define KINETIS_I2C_USE_I2C0                TRUE | ||||
| #define KINETIS_I2C_I2C0_PRIORITY           4 | ||||
|  | ||||
| #endif /* _MCUCONF_H_ */ | ||||
							
								
								
									
										73
									
								
								keyboards/k_type/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								keyboards/k_type/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| # project specific files | ||||
| SRC =	matrix.c | ||||
|  | ||||
| ## 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 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 KB | ||||
| #   - k20x7 for Teensy 3.1 and 3.2 | ||||
| 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 | ||||
|  | ||||
| # This board was copied from PJRC_TEENSY_3_1. The only difference should be a | ||||
| # hack to ensure the watchdog has started before trying to disable it. | ||||
| BOARD = K_TYPE_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 bootloader.*/ | ||||
| # The CORTEX_VTOR... is needed only for MCHCK/Infinity KB | ||||
| #OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000 | ||||
| OPT_DEFS = | ||||
|  | ||||
| DFU_ARGS = -d 1c11:b007 | ||||
|  | ||||
| # Build Options | ||||
| #   comment out to disable the options. | ||||
| # | ||||
| BOOTMAGIC_ENABLE = no	# 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 | ||||
| DEBUG_ENABLE = yes | ||||
		Reference in New Issue
	
	Block a user