Takashi Iwai | fb3df95 | 2016-11-10 22:25:28 +0100 | [diff] [blame] | 1 | ============== |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 2 | Audio Clocking |
| 3 | ============== |
| 4 | |
| 5 | This text describes the audio clocking terms in ASoC and digital audio in |
Matt LaPlante | 01dd2fb | 2007-10-20 01:34:40 +0200 | [diff] [blame] | 6 | general. Note: Audio clocking can be complex! |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 7 | |
| 8 | |
| 9 | Master Clock |
| 10 | ------------ |
| 11 | |
Matt LaPlante | 01dd2fb | 2007-10-20 01:34:40 +0200 | [diff] [blame] | 12 | Every audio subsystem is driven by a master clock (sometimes referred to as MCLK |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 13 | or 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 |
| 15 | audio playback and capture sample rates. |
| 16 | |
Mark Brown | 7c4dbbd | 2008-01-23 08:41:46 +0100 | [diff] [blame] | 17 | Some master clocks (e.g. PLLs and CPU based clocks) are configurable in that |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 18 | their speed can be altered by software (depending on the system use and to save |
Matt LaPlante | 01dd2fb | 2007-10-20 01:34:40 +0200 | [diff] [blame] | 19 | power). Other master clocks are fixed at a set frequency (i.e. crystals). |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 20 | |
| 21 | |
| 22 | DAI Clocks |
| 23 | ---------- |
| 24 | The Digital Audio Interface is usually driven by a Bit Clock (often referred to |
| 25 | as BCLK). This clock is used to drive the digital audio data across the link |
| 26 | between the codec and CPU. |
| 27 | |
| 28 | The DAI also has a frame clock to signal the start of each audio frame. This |
| 29 | clock is sometimes referred to as LRC (left right clock) or FRAME. This clock |
Liam Girdwood | a71a468 | 2006-10-19 20:35:56 +0200 | [diff] [blame] | 30 | runs at exactly the sample rate (LRC = Rate). |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 31 | |
Liam Girdwood | a71a468 | 2006-10-19 20:35:56 +0200 | [diff] [blame] | 32 | Bit Clock can be generated as follows:- |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 33 | |
Takashi Iwai | fb3df95 | 2016-11-10 22:25:28 +0100 | [diff] [blame] | 34 | - BCLK = MCLK / x, or |
| 35 | - BCLK = LRC * x, or |
| 36 | - BCLK = LRC * Channels * Word Size |
Liam Girdwood | a71a468 | 2006-10-19 20:35:56 +0200 | [diff] [blame] | 37 | |
Liam Girdwood | 10b9852 | 2007-02-08 17:06:09 +0100 | [diff] [blame] | 38 | This relationship depends on the codec or SoC CPU in particular. In general |
Mark Brown | 7c4dbbd | 2008-01-23 08:41:46 +0100 | [diff] [blame] | 39 | it is best to configure BCLK to the lowest possible speed (depending on your |
| 40 | rate, number of channels and word size) to save on power. |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 41 | |
Mark Brown | 7c4dbbd | 2008-01-23 08:41:46 +0100 | [diff] [blame] | 42 | It is also desirable to use the codec (if possible) to drive (or master) the |
| 43 | audio clocks as it usually gives more accurate sample rates than the CPU. |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 44 | |
| 45 | |
Liam Girdwood | eb1a6af | 2006-10-06 18:34:51 +0200 | [diff] [blame] | 46 | |