mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
drivers/periph&cpu: add and use common periph_init()
This commit is contained in:
parent
ed4cb561bb
commit
4bfce892d3
@ -18,12 +18,13 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
*/
|
||||
void cpu_init(void)
|
||||
{
|
||||
/* Right now we need to do nothing here */
|
||||
;
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -18,12 +18,13 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
*/
|
||||
void cpu_init(void)
|
||||
{
|
||||
/* Right now we need to do nothing here */
|
||||
;
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -18,12 +18,13 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
*/
|
||||
void cpu_init(void)
|
||||
{
|
||||
/* Right now we need to do nothing here */
|
||||
;
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
#define BIT(n) ( 1UL << (n) )
|
||||
|
||||
@ -47,6 +48,8 @@ void cpu_init(void)
|
||||
SYS_CTRL->I_MAP = 1;
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,8 +17,9 @@
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
#ifndef HF_CLOCK_SOURCE
|
||||
#define HF_CLOCK_SOURCE DDI_0_OSC_CTL0_SCLK_HF_SRC_SEL_RCOSC /* set 48MHz RCOSC */
|
||||
@ -42,6 +43,9 @@ void cpu_init(void)
|
||||
|
||||
/* initialize the system clock */
|
||||
cpu_clock_init();
|
||||
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
static void cpu_clock_init(void)
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Configure clock sources and the CPU frequency
|
||||
@ -59,4 +60,6 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* Initialise clock sources and generic clocks */
|
||||
clk_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <stdint.h>
|
||||
#include "cpu.h"
|
||||
#include "board.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @ingroup cpu_k60
|
||||
@ -48,6 +49,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* Check that we are running on the CPU that this code was built for */
|
||||
check_running_cpu_revision();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
static void check_running_cpu_revision(void)
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "cpu.h"
|
||||
#include "mcg.h"
|
||||
#include "cpu_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
#define SIM_CLKDIV1_60MHZ (SIM_CLKDIV1_OUTDIV1(0) | \
|
||||
SIM_CLKDIV1_OUTDIV2(0) | \
|
||||
@ -40,6 +41,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "cpu.h"
|
||||
#include "mcg.h"
|
||||
#include "cpu_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
#define FLASH_BASE (0x00000000)
|
||||
|
||||
@ -37,6 +38,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
static inline void modem_clock_init(void)
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "thread.h"
|
||||
#include "arch/thread_arch.h"
|
||||
#include "arch/irq_arch.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
@ -34,6 +35,9 @@ void cpu_init(void)
|
||||
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init(CLOCK_SOURCE);
|
||||
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
void setup_fpu(void)
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
|
||||
#define SYSOSCCTRL_Val 0x00000000 /* Reset: 0x000 */
|
||||
@ -111,4 +112,6 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock */
|
||||
clk_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
@ -26,4 +27,6 @@ void cpu_init(void)
|
||||
{
|
||||
/* initialize the Cortex-M core */
|
||||
cortexm_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Initialize the CPU, set IRQ priorities
|
||||
@ -39,4 +40,6 @@ void cpu_init(void)
|
||||
NRF_CLOCK->TASKS_HFCLKSTART = 1;
|
||||
while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0) {}
|
||||
#endif
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* FTPAN helper functions */
|
||||
static bool ftpan_32(void);
|
||||
@ -82,6 +83,9 @@ void cpu_init(void)
|
||||
NVIC_EnableIRQ(SWI0_EGU0_IRQn);
|
||||
NVIC_SetPriority(SWI0_EGU0_IRQn, 6);
|
||||
#endif
|
||||
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Keys needed for editing certain PMC registers
|
||||
@ -88,4 +89,7 @@ void cpu_init(void)
|
||||
PMC->PMC_MCKR = PMC_MCKR_CSS_PLLA_CLK;
|
||||
/* wait for master clock to be ready */
|
||||
while (!(PMC->PMC_SR & PMC_SR_MCKRDY));
|
||||
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/**
|
||||
* @brief Configure clock sources and the cpu frequency
|
||||
|
@ -19,6 +19,7 @@
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
static void _gclk_setup(int gclk, uint32_t reg)
|
||||
{
|
||||
@ -77,4 +78,7 @@ void cpu_init(void)
|
||||
*/
|
||||
SUPC->BOD33.bit.ENABLE=0;
|
||||
#endif
|
||||
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* Check the source to be used for the PLL */
|
||||
#if defined(CLOCK_HSI) && defined(CLOCK_HSE)
|
||||
@ -54,6 +55,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock system */
|
||||
clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* Configuration of flash access cycles */
|
||||
#if CLOCK_CORECLOCK <= 24000000
|
||||
@ -103,6 +104,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize system clocks */
|
||||
clk_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
#ifdef HSI_VALUE
|
||||
# define RCC_CR_SOURCE RCC_CR_HSION
|
||||
@ -38,6 +39,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize system clocks */
|
||||
clk_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <stdint.h>
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* Check the source to be used for the PLL */
|
||||
#if defined(CLOCK_HSI) && defined(CLOCK_HSE)
|
||||
@ -57,6 +58,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <stdint.h>
|
||||
#include "cpu.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* Check the source to be used for the PLL */
|
||||
#if defined(CLOCK_HSI) && defined(CLOCK_HSE)
|
||||
@ -50,6 +51,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize the clock system */
|
||||
cpu_clock_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "cpu.h"
|
||||
#include "board.h"
|
||||
#include "periph_conf.h"
|
||||
#include "periph/init.h"
|
||||
|
||||
/* Check the source to be used for the PLL */
|
||||
#if defined(CLOCK_HSI) && defined(CLOCK_HSE)
|
||||
@ -46,6 +47,8 @@ void cpu_init(void)
|
||||
cortexm_init();
|
||||
/* initialize system clocks */
|
||||
clk_init();
|
||||
/* trigger static peripheral initialization */
|
||||
periph_init();
|
||||
}
|
||||
|
||||
/**
|
||||
|
47
drivers/include/periph/init.h
Normal file
47
drivers/include/periph/init.h
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup drivers_periph_init Common peripheral initialization
|
||||
* @ingroup drivers_periph
|
||||
* @brief Common static peripheral driver initialization
|
||||
*
|
||||
* This interface provides a central hook for any static peripheral
|
||||
* initialization that might be needed. Typical drivers that need this are
|
||||
* shared peripherals like SPI and I2C.
|
||||
*
|
||||
* @{
|
||||
* @file
|
||||
* @brief Common peripheral driver initialization interface
|
||||
*
|
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||
*/
|
||||
|
||||
#ifndef PERIPH_INIT_H
|
||||
#define PERIPH_INIT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Common peripheral initialization function
|
||||
*
|
||||
* This function should call all needed static initialization functions for
|
||||
* configured peripheral drivers like SPI or I2C. This function SHOULD be called
|
||||
* early in the boot process, e.g. before the actual kernel initialization is
|
||||
* started.
|
||||
*/
|
||||
void periph_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PERIPH_INIT_H */
|
||||
/** @} */
|
31
drivers/periph_common/init.c
Normal file
31
drivers/periph_common/init.c
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser General
|
||||
* Public License v2.1. See the file LICENSE in the top level directory for more
|
||||
* details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup drivers_periph_init
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Common static peripheral driver initialization implementation
|
||||
*
|
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "periph/spi.h"
|
||||
|
||||
void periph_init(void)
|
||||
{
|
||||
/* initialize configured SPI devices */
|
||||
#ifdef SPI_NUMOF
|
||||
for (unsigned i = 0; i < SPI_NUMOF; i++) {
|
||||
spi_init(SPI_DEV(i));
|
||||
}
|
||||
#endif
|
||||
}
|
Loading…
Reference in New Issue
Block a user