xref: /aosp_15_r20/external/pigweed/pw_clock_tree_mcuxpresso/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _module-pw_clock_tree_mcuxpresso:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker===========================
4*61c4878aSAndroid Build Coastguard Workerpw_clock_tree_mcuxpresso
5*61c4878aSAndroid Build Coastguard Worker===========================
6*61c4878aSAndroid Build Coastguard Worker.. pigweed-module::
7*61c4878aSAndroid Build Coastguard Worker   :name: pw_clock_tree_mcuxpresso
8*61c4878aSAndroid Build Coastguard Worker
9*61c4878aSAndroid Build Coastguard Worker``pw_clock_tree_mcuxpresso`` implements the ``pw_clock_tree`` interface using the
10*61c4878aSAndroid Build Coastguard WorkerNXP MCUXpresso SDK. It provides class implementations for the following clock tree elements
11*61c4878aSAndroid Build Coastguard Workerthat can be directly instantiated:
12*61c4878aSAndroid Build Coastguard Worker
13*61c4878aSAndroid Build Coastguard Worker.. inclusive-language: disable
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Worker* Free-Running Oscillator (FRO)
16*61c4878aSAndroid Build Coastguard Worker* 32 kHz RTC Oscillator
17*61c4878aSAndroid Build Coastguard Worker* Low-power Oscillator
18*61c4878aSAndroid Build Coastguard Worker* Master Clock
19*61c4878aSAndroid Build Coastguard Worker* External Clock Input as clock source for SYSOSCBYPASS clock selector to generate OSC_CLK
20*61c4878aSAndroid Build Coastguard Worker* Fractional Rate Generator (FRG) for Flexcomm Interfaces
21*61c4878aSAndroid Build Coastguard Worker* Clock Source Selector
22*61c4878aSAndroid Build Coastguard Worker* Clock Divider
23*61c4878aSAndroid Build Coastguard Worker* Audio PLL
24*61c4878aSAndroid Build Coastguard Worker* RTC
25*61c4878aSAndroid Build Coastguard Worker* ClockIp
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Worker.. inclusive-language: enable
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::Element
30*61c4878aSAndroid Build Coastguard Worker
31*61c4878aSAndroid Build Coastguard WorkerOther clock tree components such as PLLs can be instantiated by deriving custom class implementations
32*61c4878aSAndroid Build Coastguard Workerfrom the abstract class :cpp:class:`DependentElement` and overwriting :cpp:func:`DoEnable` and
33*61c4878aSAndroid Build Coastguard Worker:cpp:func:`DoDisable` methods.
34*61c4878aSAndroid Build Coastguard Worker
35*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
36*61c4878aSAndroid Build Coastguard Worker
37*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::ClockTree
38*61c4878aSAndroid Build Coastguard Worker
39*61c4878aSAndroid Build Coastguard WorkerWhen enabling clock tree elements sourced from the audio PLL or the SYS PLL it is necessary
40*61c4878aSAndroid Build Coastguard Workerto use the :cpp:func:`AcquireWith` method.
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
43*61c4878aSAndroid Build Coastguard Worker
44*61c4878aSAndroid Build Coastguard WorkerExamples
45*61c4878aSAndroid Build Coastguard Worker========
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Worker----------------------------------------
48*61c4878aSAndroid Build Coastguard WorkerEnd-to-end Mcuxpresso clock tree example
49*61c4878aSAndroid Build Coastguard Worker----------------------------------------
50*61c4878aSAndroid Build Coastguard Worker
51*61c4878aSAndroid Build Coastguard WorkerDefinition of clock tree elements:
52*61c4878aSAndroid Build Coastguard Worker
53*61c4878aSAndroid Build Coastguard Worker.. mermaid::
54*61c4878aSAndroid Build Coastguard Worker
55*61c4878aSAndroid Build Coastguard Worker    flowchart LR
56*61c4878aSAndroid Build Coastguard Worker          A(fro_div_4) -->B(frg_0)
57*61c4878aSAndroid Build Coastguard Worker          B-->C(flexcomm_selector_0)
58*61c4878aSAndroid Build Coastguard Worker          C-->D(flexcomm_0)
59*61c4878aSAndroid Build Coastguard Worker          style A fill:#0f0,stroke:#333,stroke-width:2px
60*61c4878aSAndroid Build Coastguard Worker          style B fill:#0f0,stroke:#333,stroke-width:2px
61*61c4878aSAndroid Build Coastguard Worker          style C fill:#0f0,stroke:#333,stroke-width:2px
62*61c4878aSAndroid Build Coastguard Worker          style D fill:#0f0,stroke:#333,stroke-width:2px
63*61c4878aSAndroid Build Coastguard Worker
64*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::ClockTree
65*61c4878aSAndroid Build Coastguard Worker
66*61c4878aSAndroid Build Coastguard WorkerPlease note that the clock tree element ``flexcomm_0`` is only required if the SDK is compiled with
67*61c4878aSAndroid Build Coastguard Workerthe define ``FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL`` set, and that the connection between
68*61c4878aSAndroid Build Coastguard Worker``flexcomm_selector_0`` and ``flexcomm_0`` represents only a logical dependency connection between
69*61c4878aSAndroid Build Coastguard Workerthe two clock tree elements. The ``flexcomm_0`` :cpp:class:`ClockMcuxpressoClockIp` gates the register
70*61c4878aSAndroid Build Coastguard Workeraccess to the ``Flexcomm 0`` IP block, but it doesn't gate the ``Flexcomm 0`` clock source itself.
71*61c4878aSAndroid Build Coastguard WorkerNevertheless, to use ``Flexcomm 0`` the ``Flexcomm 0`` IP block and ``Flexcomm 0`` clock source need
72*61c4878aSAndroid Build Coastguard Workerto be enabled, hence we established the dependency  between ``flexcomm_selector_0`` and ``flexcomm_0``,
73*61c4878aSAndroid Build Coastguard Workerso that enabling ``flexcomm_0`` enabled the ``Flexcomm 0`` IP block and clock source.
74*61c4878aSAndroid Build Coastguard Worker
75*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
76*61c4878aSAndroid Build Coastguard Worker
77*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
78*61c4878aSAndroid Build Coastguard Worker   :language: cpp
79*61c4878aSAndroid Build Coastguard Worker   :linenos:
80*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-Flexcomm0]
81*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-Flexcomm0]
82*61c4878aSAndroid Build Coastguard Worker
83*61c4878aSAndroid Build Coastguard Worker.. mermaid::
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard Worker    flowchart LR
86*61c4878aSAndroid Build Coastguard Worker          D(fro_div_8)--> E(i3c0_selector)
87*61c4878aSAndroid Build Coastguard Worker          E --> F(i3c0_divider)
88*61c4878aSAndroid Build Coastguard Worker          F --> G(i3c0)
89*61c4878aSAndroid Build Coastguard Worker          style D fill:#f0f,stroke:#333,stroke-width:2px
90*61c4878aSAndroid Build Coastguard Worker          style E fill:#f0f,stroke:#333,stroke-width:2px
91*61c4878aSAndroid Build Coastguard Worker          style F fill:#f0f,stroke:#333,stroke-width:2px
92*61c4878aSAndroid Build Coastguard Worker          style G fill:#f0f,stroke:#333,stroke-width:2px
93*61c4878aSAndroid Build Coastguard Worker
94*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::ClockTree
95*61c4878aSAndroid Build Coastguard Worker
96*61c4878aSAndroid Build Coastguard WorkerPlease note that the clock tree element ``i3c0`` is only required if the SDK is compiled with
97*61c4878aSAndroid Build Coastguard Workerthe define ``FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL`` set, and that the connection between
98*61c4878aSAndroid Build Coastguard Worker``i3c0_selector`` and ``i3c0`` represents only a logical dependency connection between
99*61c4878aSAndroid Build Coastguard Workerthe two clock tree elements. The ``i3c0`` :cpp:class:`ClockMcuxpressoClockIp` gates the register
100*61c4878aSAndroid Build Coastguard Workeraccess to the ``I3C`` IP block, but it doesn't gate the ``I3C`` clock source itself.
101*61c4878aSAndroid Build Coastguard WorkerNevertheless, to use ``I3C`` the ``I3C`` IP block and ``I3C`` clock source need
102*61c4878aSAndroid Build Coastguard Workerto be enabled, hence we established the dependency  between ``i3c0_selector`` and ``i3c0``,
103*61c4878aSAndroid Build Coastguard Workerso that enabling ``i3c0`` enabled the ``I3C`` IP block and clock source.
104*61c4878aSAndroid Build Coastguard Worker
105*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
106*61c4878aSAndroid Build Coastguard Worker
107*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
108*61c4878aSAndroid Build Coastguard Worker   :language: cpp
109*61c4878aSAndroid Build Coastguard Worker   :linenos:
110*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-fro_div8]
111*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-fro_div8]
112*61c4878aSAndroid Build Coastguard Worker
113*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
114*61c4878aSAndroid Build Coastguard Worker   :language: cpp
115*61c4878aSAndroid Build Coastguard Worker   :linenos:
116*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-i3c0]
117*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-i3c0]
118*61c4878aSAndroid Build Coastguard Worker
119*61c4878aSAndroid Build Coastguard Worker.. mermaid::
120*61c4878aSAndroid Build Coastguard Worker
121*61c4878aSAndroid Build Coastguard Worker    flowchart LR
122*61c4878aSAndroid Build Coastguard Worker          G(mclk) --> H(ctimer_selector_0)
123*61c4878aSAndroid Build Coastguard Worker          H --> I(ctimer_0)
124*61c4878aSAndroid Build Coastguard Worker          style G fill:#0ff,stroke:#333,stroke-width:2px
125*61c4878aSAndroid Build Coastguard Worker          style H fill:#0ff,stroke:#333,stroke-width:2px
126*61c4878aSAndroid Build Coastguard Worker          style I fill:#0ff,stroke:#333,stroke-width:2px
127*61c4878aSAndroid Build Coastguard Worker
128*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::ClockTree
129*61c4878aSAndroid Build Coastguard Worker
130*61c4878aSAndroid Build Coastguard WorkerPlease note that the clock tree element ``ctimer_0`` is only required if the SDK is compiled with
131*61c4878aSAndroid Build Coastguard Workerthe define ``FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL`` set, and that the connection between
132*61c4878aSAndroid Build Coastguard Worker``ctimer_selector_0`` and ``ctimer_0`` represents only a logical dependency connection between
133*61c4878aSAndroid Build Coastguard Workerthe two clock tree elements. The ``ctimer_0`` :cpp:class:`ClockMcuxpressoClockIp` gates the register
134*61c4878aSAndroid Build Coastguard Workeraccess to the ``CTimer 0`` IP block, but it doesn't gate the ``CTimer 0`` clock source itself.
135*61c4878aSAndroid Build Coastguard WorkerNevertheless, to use ``CTimer 0`` the ``CTimer 0`` IP block and ``CTimer 0`` clock source need
136*61c4878aSAndroid Build Coastguard Workerto be enabled, hence we established the dependency  between ``ctimer_selector_0`` and ``ctimer_0``,
137*61c4878aSAndroid Build Coastguard Workerso that enabling ``ctimer_0`` enabled the ``CTimer 0`` IP block and clock source.
138*61c4878aSAndroid Build Coastguard Worker
139*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
140*61c4878aSAndroid Build Coastguard Worker
141*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
142*61c4878aSAndroid Build Coastguard Worker   :language: cpp
143*61c4878aSAndroid Build Coastguard Worker   :linenos:
144*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClkTreeElemDefs-ClockSourceNoOp]
145*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClkTreeElemDefs-ClockSourceNoOp]
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
148*61c4878aSAndroid Build Coastguard Worker   :language: cpp
149*61c4878aSAndroid Build Coastguard Worker   :linenos:
150*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-Ctimer0]
151*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-Ctimer0]
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Worker.. mermaid::
154*61c4878aSAndroid Build Coastguard Worker
155*61c4878aSAndroid Build Coastguard Worker    flowchart LR
156*61c4878aSAndroid Build Coastguard Worker          I(lposc)
157*61c4878aSAndroid Build Coastguard Worker          style I fill:#ff0,stroke:#333,stroke-width:2px
158*61c4878aSAndroid Build Coastguard Worker
159*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
160*61c4878aSAndroid Build Coastguard Worker   :language: cpp
161*61c4878aSAndroid Build Coastguard Worker   :linenos:
162*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-LpOsc]
163*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-LpOsc]
164*61c4878aSAndroid Build Coastguard Worker
165*61c4878aSAndroid Build Coastguard WorkerDefinition of clock tree:
166*61c4878aSAndroid Build Coastguard Worker
167*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
168*61c4878aSAndroid Build Coastguard Worker   :language: cpp
169*61c4878aSAndroid Build Coastguard Worker   :linenos:
170*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeDef]
171*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeDef]
172*61c4878aSAndroid Build Coastguard Worker
173*61c4878aSAndroid Build Coastguard WorkerExample usage of ``clock_tree`` APIs:
174*61c4878aSAndroid Build Coastguard Worker
175*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
176*61c4878aSAndroid Build Coastguard Worker   :language: cpp
177*61c4878aSAndroid Build Coastguard Worker   :linenos:
178*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-UseExample]
179*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-UseExample]
180*61c4878aSAndroid Build Coastguard Worker
181*61c4878aSAndroid Build Coastguard Worker------------------
182*61c4878aSAndroid Build Coastguard WorkerAudio PLL examples
183*61c4878aSAndroid Build Coastguard Worker------------------
184*61c4878aSAndroid Build Coastguard Worker
185*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-push:: pw::clock_tree::ClockTree
186*61c4878aSAndroid Build Coastguard Worker
187*61c4878aSAndroid Build Coastguard WorkerThe :cpp:class:`ClockMcuxpressoAudioPll` can be configured in two different ways,
188*61c4878aSAndroid Build Coastguard Workereither it can be configured where the audio PLL gets enabled, or it can be
189*61c4878aSAndroid Build Coastguard Workerconfigured in bypass mode.
190*61c4878aSAndroid Build Coastguard Worker
191*61c4878aSAndroid Build Coastguard WorkerThe first example shows where :cpp:class:`ClockMcuxpressoAudioPll` enables the audio PLL
192*61c4878aSAndroid Build Coastguard Workerand uses the ClkIn pin clock source as OSC clock source that feeds into the audio PLL
193*61c4878aSAndroid Build Coastguard Workerlogic. Since the audio PLL requires that the ``FRO_DIV8`` clock source is enabled when
194*61c4878aSAndroid Build Coastguard Workerenabling the audio PLL, the :cpp:func:`AcquireWith` needs to be used that ensures
195*61c4878aSAndroid Build Coastguard Workerthat the ``FRO_DIV8`` clock is enabled when enabling the audio PLL.
196*61c4878aSAndroid Build Coastguard Worker
197*61c4878aSAndroid Build Coastguard Worker.. mermaid::
198*61c4878aSAndroid Build Coastguard Worker
199*61c4878aSAndroid Build Coastguard Worker    flowchart LR
200*61c4878aSAndroid Build Coastguard Worker          subgraph PLL [Audio PLL logic]
201*61c4878aSAndroid Build Coastguard Worker          B(audio_pll_selctor) -.-> C(PLL)
202*61c4878aSAndroid Build Coastguard Worker          C -.-> D(Phase Fraction divider)
203*61c4878aSAndroid Build Coastguard Worker          end
204*61c4878aSAndroid Build Coastguard Worker          A(clk_in) -->|as osc_clk| PLL
205*61c4878aSAndroid Build Coastguard Worker          PLL --> E(audio_pfd_bypass_selector)
206*61c4878aSAndroid Build Coastguard Worker
207*61c4878aSAndroid Build Coastguard Worker          style A fill:#f0f,stroke:#333,stroke-width:2px
208*61c4878aSAndroid Build Coastguard Worker          style E fill:#f0f,stroke:#333,stroke-width:2px
209*61c4878aSAndroid Build Coastguard Worker
210*61c4878aSAndroid Build Coastguard WorkerDefinition of clock tree:
211*61c4878aSAndroid Build Coastguard Worker
212*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
213*61c4878aSAndroid Build Coastguard Worker   :language: cpp
214*61c4878aSAndroid Build Coastguard Worker   :linenos:
215*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeDef]
216*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeDef]
217*61c4878aSAndroid Build Coastguard Worker
218*61c4878aSAndroid Build Coastguard WorkerDefinition of audio PLL related clock tree elements:
219*61c4878aSAndroid Build Coastguard Worker
220*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
221*61c4878aSAndroid Build Coastguard Worker   :language: cpp
222*61c4878aSAndroid Build Coastguard Worker   :linenos:
223*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClkTreeElemDefs-ClockSourceNoOp]
224*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClkTreeElemDefs-ClockSourceNoOp]
225*61c4878aSAndroid Build Coastguard Worker
226*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
227*61c4878aSAndroid Build Coastguard Worker   :language: cpp
228*61c4878aSAndroid Build Coastguard Worker   :linenos:
229*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElemDefs-AudioPll]
230*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElemDefs-AudioPll]
231*61c4878aSAndroid Build Coastguard Worker
232*61c4878aSAndroid Build Coastguard WorkerDefinition of ``FRO_DIV8`` clock tree element:
233*61c4878aSAndroid Build Coastguard Worker
234*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
235*61c4878aSAndroid Build Coastguard Worker   :language: cpp
236*61c4878aSAndroid Build Coastguard Worker   :linenos:
237*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-fro_div8]
238*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElementDefs-fro_div8]
239*61c4878aSAndroid Build Coastguard Worker
240*61c4878aSAndroid Build Coastguard WorkerAudio PLL clock tree element gets enabled and disabled. We use :cpp:func:`AcquireWith`
241*61c4878aSAndroid Build Coastguard Workerto ensure that ``FRO_DIV8`` is enabled prior to configuring the audio PLL to a
242*61c4878aSAndroid Build Coastguard Workernon-``FRO_DIV8`` clock source.
243*61c4878aSAndroid Build Coastguard Worker
244*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
245*61c4878aSAndroid Build Coastguard Worker   :language: cpp
246*61c4878aSAndroid Build Coastguard Worker   :linenos:
247*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-Use-AudioPll]
248*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-Use-AudioPll]
249*61c4878aSAndroid Build Coastguard Worker
250*61c4878aSAndroid Build Coastguard WorkerThe second example shows where :cpp:class:`ClockMcuxpressoAudioPll` bypasses the audio PLL
251*61c4878aSAndroid Build Coastguard Workerand uses ``FRO_DIV8 pin`` clock source.
252*61c4878aSAndroid Build Coastguard Worker
253*61c4878aSAndroid Build Coastguard Worker.. cpp:namespace-pop::
254*61c4878aSAndroid Build Coastguard Worker
255*61c4878aSAndroid Build Coastguard Worker.. mermaid::
256*61c4878aSAndroid Build Coastguard Worker
257*61c4878aSAndroid Build Coastguard Worker    flowchart LR
258*61c4878aSAndroid Build Coastguard Worker          A(fro_div_8) --> B(audio_pfd_bypass_selector)
259*61c4878aSAndroid Build Coastguard Worker          style A fill:#0ff,stroke:#333,stroke-width:2px
260*61c4878aSAndroid Build Coastguard Worker          style B fill:#0ff,stroke:#333,stroke-width:2px
261*61c4878aSAndroid Build Coastguard Worker
262*61c4878aSAndroid Build Coastguard Worker.. literalinclude:: examples.cc
263*61c4878aSAndroid Build Coastguard Worker   :language: cpp
264*61c4878aSAndroid Build Coastguard Worker   :linenos:
265*61c4878aSAndroid Build Coastguard Worker   :start-after: [pw_clock_tree_mcuxpresso-examples-ClockTreeElemDefs-AudioPllBypass]
266*61c4878aSAndroid Build Coastguard Worker   :end-before: [pw_clock_tree_mcuxpresso-examples-ClockTreeElemDefs-AudioPllBypass]
267*61c4878aSAndroid Build Coastguard Worker
268*61c4878aSAndroid Build Coastguard WorkerAPIs
269*61c4878aSAndroid Build Coastguard Worker====
270*61c4878aSAndroid Build Coastguard Worker
271*61c4878aSAndroid Build Coastguard Worker------------------
272*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoFro
273*61c4878aSAndroid Build Coastguard Worker------------------
274*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoFro
275*61c4878aSAndroid Build Coastguard Worker   :members:
276*61c4878aSAndroid Build Coastguard Worker
277*61c4878aSAndroid Build Coastguard Worker--------------------
278*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoLpOsc
279*61c4878aSAndroid Build Coastguard Worker--------------------
280*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoLpOsc
281*61c4878aSAndroid Build Coastguard Worker   :members:
282*61c4878aSAndroid Build Coastguard Worker
283*61c4878aSAndroid Build Coastguard Worker-------------------
284*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoMclk
285*61c4878aSAndroid Build Coastguard Worker-------------------
286*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoMclk
287*61c4878aSAndroid Build Coastguard Worker   :members:
288*61c4878aSAndroid Build Coastguard Worker
289*61c4878aSAndroid Build Coastguard Worker--------------------
290*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoClkIn
291*61c4878aSAndroid Build Coastguard Worker--------------------
292*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoClkIn
293*61c4878aSAndroid Build Coastguard Worker   :members:
294*61c4878aSAndroid Build Coastguard Worker
295*61c4878aSAndroid Build Coastguard Worker------------------
296*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoFrg
297*61c4878aSAndroid Build Coastguard Worker------------------
298*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoFrg
299*61c4878aSAndroid Build Coastguard Worker   :members:
300*61c4878aSAndroid Build Coastguard Worker
301*61c4878aSAndroid Build Coastguard Worker-----------------------
302*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoSelector
303*61c4878aSAndroid Build Coastguard Worker-----------------------
304*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoSelector
305*61c4878aSAndroid Build Coastguard Worker   :members:
306*61c4878aSAndroid Build Coastguard Worker
307*61c4878aSAndroid Build Coastguard Worker----------------------
308*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoDivider
309*61c4878aSAndroid Build Coastguard Worker----------------------
310*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoDivider
311*61c4878aSAndroid Build Coastguard Worker   :members:
312*61c4878aSAndroid Build Coastguard Worker
313*61c4878aSAndroid Build Coastguard Worker-----------------------
314*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoAudioPll
315*61c4878aSAndroid Build Coastguard Worker-----------------------
316*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoAudioPll
317*61c4878aSAndroid Build Coastguard Worker   :members:
318*61c4878aSAndroid Build Coastguard Worker
319*61c4878aSAndroid Build Coastguard Worker------------------
320*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoRtc
321*61c4878aSAndroid Build Coastguard Worker------------------
322*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoRtc
323*61c4878aSAndroid Build Coastguard Worker   :members:
324*61c4878aSAndroid Build Coastguard Worker
325*61c4878aSAndroid Build Coastguard Worker----------------------
326*61c4878aSAndroid Build Coastguard WorkerClockMcuxpressoClockIp
327*61c4878aSAndroid Build Coastguard Worker----------------------
328*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::clock_tree::ClockMcuxpressoClockIp
329*61c4878aSAndroid Build Coastguard Worker   :members:
330