You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					192 lines
				
				8.5 KiB
			
		
		
			
		
	
	
					192 lines
				
				8.5 KiB
			|   
											8 years ago
										 | /*
 | ||
|  |     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) { | ||
|  | } |