|
| 1 | +/* |
| 2 | + * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates |
| 3 | + * |
| 4 | + * SPDX-License-Identifier: BSD-3-Clause |
| 5 | + */ |
| 6 | + |
| 7 | +#include <zephyr/devicetree.h> |
| 8 | +#include <zephyr/dt-bindings/clock/ra_clock.h> |
| 9 | + |
| 10 | +#ifndef BSP_CLOCK_CFG_H_ |
| 11 | +#define BSP_CLOCK_CFG_H_ |
| 12 | + |
| 13 | +#define BSP_CFG_CLOCKS_SECURE (0) |
| 14 | +#define BSP_CFG_CLOCKS_OVERRIDE (0) |
| 15 | + |
| 16 | +#define BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(node_id, prop, default_value) \ |
| 17 | + (COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), (DT_PROP(node_id, prop)), (default_value))) |
| 18 | + |
| 19 | +#define BSP_CFG_XTAL_HZ BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(xtal), clock_frequency, 0) |
| 20 | + |
| 21 | +#if DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 16000000 |
| 22 | +#define BSP_CFG_HOCO_FREQUENCY 0 /* HOCO 16MHz */ |
| 23 | +#elif DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 18000000 |
| 24 | +#define BSP_CFG_HOCO_FREQUENCY 1 /* HOCO 18MHz */ |
| 25 | +#elif DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 20000000 |
| 26 | +#define BSP_CFG_HOCO_FREQUENCY 2 /* HOCO 20MHz */ |
| 27 | +#else |
| 28 | +#error "Invalid HOCO frequency, only can be set to 16MHz, 18MHz, and 20MHz" |
| 29 | +#endif |
| 30 | + |
| 31 | +#define BSP_CFG_PLL_SOURCE \ |
| 32 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll), source, RA_PLL_SOURCE_DISABLE) |
| 33 | +#define BSP_CFG_PLL_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll), div, RA_PLL_DIV_1) |
| 34 | +#define BSP_CFG_PLL_MUL \ |
| 35 | + DT_NODE_HAS_STATUS(DT_NODELABEL(pll), okay) \ |
| 36 | + ? BSP_CLOCKS_PLL_MUL(DT_PROP_BY_IDX(DT_NODELABEL(pll), mul, 0), \ |
| 37 | + DT_PROP_BY_IDX(DT_NODELABEL(pll), mul, 1)) \ |
| 38 | + : BSP_CLOCKS_PLL_MUL(0, 0) |
| 39 | + |
| 40 | +#define BSP_CFG_PLL2_SOURCE \ |
| 41 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll2), source, RA_PLL_SOURCE_DISABLE) |
| 42 | +#define BSP_CFG_PLL2_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll2), div, RA_PLL_DIV_1) |
| 43 | +#define BSP_CFG_PLL2_MUL \ |
| 44 | + DT_NODE_HAS_STATUS(DT_NODELABEL(pll2), okay) \ |
| 45 | + ? BSP_CLOCKS_PLL_MUL(DT_PROP_BY_IDX(DT_NODELABEL(pll2), mul, 0), \ |
| 46 | + DT_PROP_BY_IDX(DT_NODELABEL(pll2), mul, 1)) \ |
| 47 | + : BSP_CLOCKS_PLL_MUL(0, 0) |
| 48 | + |
| 49 | +#define BSP_CFG_CLOCK_SOURCE \ |
| 50 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkblock), sysclock_src, \ |
| 51 | + RA_PLL_SOURCE_DISABLE) |
| 52 | + |
| 53 | +#define BSP_CFG_ICLK_DIV \ |
| 54 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(iclk), clk_div, RA_SYS_CLOCK_DIV_1) |
| 55 | +#define BSP_CFG_PCLKA_DIV \ |
| 56 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclka), clk_div, RA_SYS_CLOCK_DIV_2) |
| 57 | +#define BSP_CFG_PCLKB_DIV \ |
| 58 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkb), clk_div, RA_SYS_CLOCK_DIV_4) |
| 59 | +#define BSP_CFG_PCLKC_DIV \ |
| 60 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkc), clk_div, RA_SYS_CLOCK_DIV_4) |
| 61 | +#define BSP_CFG_PCLKD_DIV \ |
| 62 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkd), clk_div, RA_SYS_CLOCK_DIV_2) |
| 63 | +#define BSP_CFG_FCLK_DIV \ |
| 64 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(fclk), clk_div, RA_SYS_CLOCK_DIV_4) |
| 65 | +#define BSP_CFG_BCLK_DIV \ |
| 66 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(bclk), clk_div, RA_SYS_CLOCK_DIV_2) |
| 67 | +#define BSP_CFG_BCLK_OUTPUT BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(bclkout), clk_out_div, 2) |
| 68 | + |
| 69 | +#define BSP_CFG_UCK_SOURCE \ |
| 70 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(uclk), clk_src, RA_CLOCK_SOURCE_DISABLE) |
| 71 | +#define BSP_CFG_UCK_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(uclk), clk_div, 0) |
| 72 | +#define BSP_CFG_CLKOUT_SOURCE \ |
| 73 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(clkout), clk_src, RA_CLOCK_SOURCE_DISABLE) |
| 74 | +#define BSP_CFG_CLKOUT_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(clkout), clk_div, 0) |
| 75 | +#define BSP_CFG_OCTA_SOURCE \ |
| 76 | + BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(octaspiclk), clk_src, \ |
| 77 | + RA_CLOCK_SOURCE_DISABLE) |
| 78 | +#define BSP_CFG_OCTA_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(octaspiclk), clk_div, 0) |
| 79 | + |
| 80 | +#endif /* BSP_CLOCK_CFG_H_ */ |
0 commit comments