| /* |
| * 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) |