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.
48 lines
1.2 KiB
48 lines
1.2 KiB
/* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
* |
|
* Copyright (C) 2022, Linaro Ltd |
|
* |
|
*/ |
|
|
|
#include <zephyr/drivers/clock_control.h> |
|
#include <zephyr/sys/util.h> |
|
#include <zephyr/drivers/clock_control/stm32_clock_control.h> |
|
|
|
#include <zephyr/logging/log.h> |
|
#include <soc.h> |
|
|
|
#define DT_DRV_COMPAT st_stm32_clock_mux |
|
|
|
LOG_MODULE_REGISTER(clock_mux, CONFIG_CLOCK_CONTROL_LOG_LEVEL); |
|
|
|
|
|
struct stm32_clk_mux_config { |
|
const struct stm32_pclken pclken; |
|
}; |
|
|
|
static int stm32_clk_mux_init(const struct device *dev) |
|
{ |
|
const struct stm32_clk_mux_config *cfg = dev->config; |
|
|
|
if (clock_control_configure(DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE), |
|
(clock_control_subsys_t) &cfg->pclken, NULL) != 0) { |
|
LOG_ERR("Could not enable clock mux"); |
|
return -EIO; |
|
} |
|
|
|
return 0; |
|
} |
|
|
|
#define STM32_MUX_CLK_INIT(id) \ |
|
\ |
|
static const struct stm32_clk_mux_config stm32_clk_mux_cfg_##id = { \ |
|
.pclken = STM32_CLOCK_INFO(0, DT_DRV_INST(id)) \ |
|
}; \ |
|
\ |
|
DEVICE_DT_INST_DEFINE(id, stm32_clk_mux_init, NULL, \ |
|
NULL, &stm32_clk_mux_cfg_##id, \ |
|
PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_OBJECTS,\ |
|
NULL); |
|
|
|
DT_INST_FOREACH_STATUS_OKAY(STM32_MUX_CLK_INIT)
|
|
|