Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
nxp-freqme.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_MONITOR_NXP_FREQME_H_
8#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_MONITOR_NXP_FREQME_H_
9
25
27#define NXP_FREQME_PMUX_SHIFT 20
28
38#define NXP_FREQME_SOURCE_UNCHANGED 0U
39
40/*
41 * MCX families with separate FREQMEAS_REF (0x180) / FREQMEAS_TAR (0x184) mux
42 * registers. MCXA, MCXC, MCXN, MCXL and MCXW all share this register layout;
43 * only the per-source selector numbers differ, so each family has its own
44 * cookie set below.
45 */
46
48#define NXP_FREQME_REF_REG 0x180
50#define NXP_FREQME_TAR_REG 0x184
51
53#define NXP_FREQME_REF(sel) ((sel) + (NXP_FREQME_REF_REG << NXP_FREQME_PMUX_SHIFT))
55#define NXP_FREQME_TAR(sel) ((sel) + (NXP_FREQME_TAR_REG << NXP_FREQME_PMUX_SHIFT))
56
57/*
58 * MCXA selectors.
59 * Devices: MCXA153, MCXA156, MCXA174, MCXA266, MCXA344, MCXA346, MCXA577 and
60 * MCXC162 (identical selector numbering).
61 */
62#define NXP_FREQME_REF_CLK_IN NXP_FREQME_REF(1)
63#define NXP_FREQME_REF_FRO_12M NXP_FREQME_REF(2)
64#define NXP_FREQME_REF_FRO_HF_DIV NXP_FREQME_REF(3)
65#define NXP_FREQME_REF_CLK_16K1 NXP_FREQME_REF(5)
66#define NXP_FREQME_REF_SLOW_CLK NXP_FREQME_REF(6)
67#define NXP_FREQME_REF_CLK_IN0 NXP_FREQME_REF(7)
68#define NXP_FREQME_REF_CLK_IN1 NXP_FREQME_REF(8)
69
70#define NXP_FREQME_TAR_CLK_IN NXP_FREQME_TAR(1)
71#define NXP_FREQME_TAR_FRO_12M NXP_FREQME_TAR(2)
72#define NXP_FREQME_TAR_FRO_HF_DIV NXP_FREQME_TAR(3)
73#define NXP_FREQME_TAR_CLK_16K1 NXP_FREQME_TAR(5)
74#define NXP_FREQME_TAR_SLOW_CLK NXP_FREQME_TAR(6)
75#define NXP_FREQME_TAR_CLK_IN0 NXP_FREQME_TAR(7)
76#define NXP_FREQME_TAR_CLK_IN1 NXP_FREQME_TAR(8)
77
78/*
79 * MCXN selectors.
80 * Devices: MCXN236, MCXN947.
81 */
82#define NXP_FREQME_MCXN_REF_CLK_IN NXP_FREQME_REF(0)
83#define NXP_FREQME_MCXN_REF_FRO_12M NXP_FREQME_REF(1)
84#define NXP_FREQME_MCXN_REF_FRO_HF NXP_FREQME_REF(2)
85#define NXP_FREQME_MCXN_REF_OSC32K NXP_FREQME_REF(4)
86#define NXP_FREQME_MCXN_REF_CPU_AHB_CLK NXP_FREQME_REF(5)
87#define NXP_FREQME_MCXN_REF_CLK_IN0 NXP_FREQME_REF(6)
88#define NXP_FREQME_MCXN_REF_CLK_IN1 NXP_FREQME_REF(7)
89
90#define NXP_FREQME_MCXN_TAR_CLK_IN NXP_FREQME_TAR(0)
91#define NXP_FREQME_MCXN_TAR_FRO_12M NXP_FREQME_TAR(1)
92#define NXP_FREQME_MCXN_TAR_FRO_HF NXP_FREQME_TAR(2)
93#define NXP_FREQME_MCXN_TAR_OSC32K NXP_FREQME_TAR(4)
94#define NXP_FREQME_MCXN_TAR_CPU_AHB_CLK NXP_FREQME_TAR(5)
95#define NXP_FREQME_MCXN_TAR_CLK_IN0 NXP_FREQME_TAR(6)
96#define NXP_FREQME_MCXN_TAR_CLK_IN1 NXP_FREQME_TAR(7)
97
98/*
99 * MCXL selectors.
100 * Devices: MCXL255.
101 */
102#define NXP_FREQME_MCXL_REF_FRO_12M NXP_FREQME_REF(2)
103#define NXP_FREQME_MCXL_REF_FRO_HF_DIV NXP_FREQME_REF(3)
104#define NXP_FREQME_MCXL_REF_XTAL32K NXP_FREQME_REF(4)
105#define NXP_FREQME_MCXL_REF_CLK_16K0 NXP_FREQME_REF(5)
106#define NXP_FREQME_MCXL_REF_SLOW_CLK NXP_FREQME_REF(6)
107#define NXP_FREQME_MCXL_REF_CLK_IN0 NXP_FREQME_REF(7)
108#define NXP_FREQME_MCXL_REF_CLK_IN1 NXP_FREQME_REF(8)
109
110#define NXP_FREQME_MCXL_TAR_FRO_12M NXP_FREQME_TAR(2)
111#define NXP_FREQME_MCXL_TAR_FRO_HF_DIV NXP_FREQME_TAR(3)
112#define NXP_FREQME_MCXL_TAR_XTAL32K NXP_FREQME_TAR(4)
113#define NXP_FREQME_MCXL_TAR_CLK_16K0 NXP_FREQME_TAR(5)
114#define NXP_FREQME_MCXL_TAR_SLOW_CLK NXP_FREQME_TAR(6)
115#define NXP_FREQME_MCXL_TAR_CLK_IN0 NXP_FREQME_TAR(7)
116#define NXP_FREQME_MCXL_TAR_CLK_IN1 NXP_FREQME_TAR(8)
117
118/*
119 * MCXW selectors.
120 * Devices: MCXW236. A completely distinct selector set.
121 */
122#define NXP_FREQME_MCXW_REF_EXTERN_OSC NXP_FREQME_REF(0)
123#define NXP_FREQME_MCXW_REF_FRO_12M NXP_FREQME_REF(1)
124#define NXP_FREQME_MCXW_REF_FRO_32M NXP_FREQME_REF(2)
125#define NXP_FREQME_MCXW_REF_FRO_1M NXP_FREQME_REF(3)
126#define NXP_FREQME_MCXW_REF_OSC32K NXP_FREQME_REF(4)
127#define NXP_FREQME_MCXW_REF_MAIN_CLK NXP_FREQME_REF(5)
128#define NXP_FREQME_MCXW_REF_SPIFI_CLK NXP_FREQME_REF(6)
129#define NXP_FREQME_MCXW_REF_PORT0_PIN3 NXP_FREQME_REF(7)
130#define NXP_FREQME_MCXW_REF_PORT0_PIN11 NXP_FREQME_REF(8)
131#define NXP_FREQME_MCXW_REF_PORT0_PIN12 NXP_FREQME_REF(9)
132#define NXP_FREQME_MCXW_REF_PORT0_PIN14 NXP_FREQME_REF(10)
133
134#define NXP_FREQME_MCXW_TAR_EXTERN_OSC NXP_FREQME_TAR(0)
135#define NXP_FREQME_MCXW_TAR_FRO_12M NXP_FREQME_TAR(1)
136#define NXP_FREQME_MCXW_TAR_FRO_32M NXP_FREQME_TAR(2)
137#define NXP_FREQME_MCXW_TAR_FRO_1M NXP_FREQME_TAR(3)
138#define NXP_FREQME_MCXW_TAR_OSC32K NXP_FREQME_TAR(4)
139#define NXP_FREQME_MCXW_TAR_MAIN_CLK NXP_FREQME_TAR(5)
140#define NXP_FREQME_MCXW_TAR_SPIFI_CLK NXP_FREQME_TAR(6)
141#define NXP_FREQME_MCXW_TAR_PORT0_PIN3 NXP_FREQME_TAR(7)
142#define NXP_FREQME_MCXW_TAR_PORT0_PIN11 NXP_FREQME_TAR(8)
143#define NXP_FREQME_MCXW_TAR_PORT0_PIN12 NXP_FREQME_TAR(9)
144#define NXP_FREQME_MCXW_TAR_PORT0_PIN14 NXP_FREQME_TAR(10)
145
146/*
147 * i.MX RT700 selectors.
148 * Devices: MIMXRT798S (and RT7xx family).
149 *
150 * RT700 places the FREQMEAS reference / target mux registers at 0x700 / 0x704
151 * (not 0x180 / 0x184 like the MCX families), so it needs its own register
152 * constants and helpers.
153 */
154
156#define NXP_FREQME_RT7XX_REF_REG 0x700
158#define NXP_FREQME_RT7XX_TAR_REG 0x704
159
161#define NXP_FREQME_RT7XX_REF(sel) ((sel) + (NXP_FREQME_RT7XX_REF_REG << NXP_FREQME_PMUX_SHIFT))
163#define NXP_FREQME_RT7XX_TAR(sel) ((sel) + (NXP_FREQME_RT7XX_TAR_REG << NXP_FREQME_PMUX_SHIFT))
164
165#define NXP_FREQME_RT7XX_REF_OSC_CLK NXP_FREQME_RT7XX_REF(0)
166#define NXP_FREQME_RT7XX_REF_FRO1_DIV8 NXP_FREQME_RT7XX_REF(1)
167#define NXP_FREQME_RT7XX_REF_FRO1 NXP_FREQME_RT7XX_REF(2)
168#define NXP_FREQME_RT7XX_REF_LPOSC NXP_FREQME_RT7XX_REF(3)
169#define NXP_FREQME_RT7XX_REF_OSC32K NXP_FREQME_RT7XX_REF(4)
170#define NXP_FREQME_RT7XX_REF_FRO0 NXP_FREQME_RT7XX_REF(6)
171#define NXP_FREQME_RT7XX_REF_FRO2 NXP_FREQME_RT7XX_REF(7)
172#define NXP_FREQME_RT7XX_REF_GPIO_A_CLK NXP_FREQME_RT7XX_REF(8)
173#define NXP_FREQME_RT7XX_REF_GPIO_B_CLK NXP_FREQME_RT7XX_REF(9)
174
175#define NXP_FREQME_RT7XX_TAR_OSC_CLK NXP_FREQME_RT7XX_TAR(0)
176#define NXP_FREQME_RT7XX_TAR_FRO1_DIV8 NXP_FREQME_RT7XX_TAR(1)
177#define NXP_FREQME_RT7XX_TAR_FRO1 NXP_FREQME_RT7XX_TAR(2)
178#define NXP_FREQME_RT7XX_TAR_LPOSC NXP_FREQME_RT7XX_TAR(3)
179#define NXP_FREQME_RT7XX_TAR_OSC32K NXP_FREQME_RT7XX_TAR(4)
180#define NXP_FREQME_RT7XX_TAR_FRO0 NXP_FREQME_RT7XX_TAR(6)
181#define NXP_FREQME_RT7XX_TAR_FRO2 NXP_FREQME_RT7XX_TAR(7)
182#define NXP_FREQME_RT7XX_TAR_GPIO_A_CLK NXP_FREQME_RT7XX_TAR(8)
183#define NXP_FREQME_RT7XX_TAR_GPIO_B_CLK NXP_FREQME_RT7XX_TAR(9)
184
185#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_MONITOR_NXP_FREQME_H_ */