xref: /linux/Documentation/sound/soc/clocking.rst (revision da1d9caf95def6f0320819cf941c9fd1069ba9e1)
1==============
2Audio Clocking
3==============
4
5This text describes the audio clocking terms in ASoC and digital audio in
6general. Note: Audio clocking can be complex!
7
8
9Master Clock
10------------
11
12Every audio subsystem is driven by a master clock (sometimes referred to as MCLK
13or SYSCLK). This audio master clock can be derived from a number of sources
14(e.g. crystal, PLL, CPU clock) and is responsible for producing the correct
15audio playback and capture sample rates.
16
17Some master clocks (e.g. PLLs and CPU based clocks) are configurable in that
18their speed can be altered by software (depending on the system use and to save
19power). Other master clocks are fixed at a set frequency (i.e. crystals).
20
21
22DAI Clocks
23----------
24The Digital Audio Interface is usually driven by a Bit Clock (often referred to
25as BCLK). This clock is used to drive the digital audio data across the link
26between the codec and CPU.
27
28The DAI also has a frame clock to signal the start of each audio frame. This
29clock is sometimes referred to as LRC (left right clock) or FRAME. This clock
30runs at exactly the sample rate (LRC = Rate).
31
32Bit Clock can be generated as follows:-
33
34- BCLK = MCLK / x, or
35- BCLK = LRC * x, or
36- BCLK = LRC * Channels * Word Size
37
38This relationship depends on the codec or SoC CPU in particular. In general
39it is best to configure BCLK to the lowest possible speed (depending on your
40rate, number of channels and word size) to save on power.
41
42It is also desirable to use the codec (if possible) to drive (or master) the
43audio clocks as it usually gives more accurate sample rates than the CPU.
44
45
46
47