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) {
							 | 
						||
| 
								 | 
							
								}
							 |