1 =================== 2 ASoC Machine Driver 3 =================== 4 5 The ASoC machine (or board) driver is the code 6 component drivers (e.g. codecs, platforms and 7 relationships between each component which inc 8 interrupts, clocking, jacks and voltage regula 9 10 The machine driver can contain codec and platf 11 the audio subsystem with the kernel as a platf 12 the following struct:- 13 :: 14 15 /* SoC machine */ 16 struct snd_soc_card { 17 char *name; 18 19 ... 20 21 int (*probe)(struct platform_device *p 22 int (*remove)(struct platform_device * 23 24 /* the pre and post PM functions are u 25 * after the codec and DAIs do any PM 26 int (*suspend_pre)(struct platform_dev 27 int (*suspend_post)(struct platform_de 28 int (*resume_pre)(struct platform_devi 29 int (*resume_post)(struct platform_dev 30 31 ... 32 33 /* CPU <--> Codec DAI links */ 34 struct snd_soc_dai_link *dai_link; 35 int num_links; 36 37 ... 38 }; 39 40 probe()/remove() 41 ---------------- 42 probe/remove are optional. Do any machine spec 43 44 45 suspend()/resume() 46 ------------------ 47 The machine driver has pre and post versions o 48 of any machine audio tasks that have to be don 49 and DMA is suspended and resumed. Optional. 50 51 52 Machine DAI Configuration 53 ------------------------- 54 The machine DAI configuration glues all the co 55 also be used to set up the DAI system clock an 56 initialisation e.g. the machine audio map can 57 map, unconnected codec pins can be set as such 58 59 struct snd_soc_dai_link is used to set up each 60 :: 61 62 /* corgi digital audio interface glue - conn 63 static struct snd_soc_dai_link corgi_dai = { 64 .name = "WM8731", 65 .stream_name = "WM8731", 66 .cpu_dai_name = "pxa-is2-dai", 67 .codec_dai_name = "wm8731-hifi", 68 .platform_name = "pxa-pcm-audio", 69 .codec_name = "wm8713-codec.0-001a", 70 .init = corgi_wm8731_init, 71 .ops = &corgi_ops, 72 }; 73 74 struct snd_soc_card then sets up the machine w 75 :: 76 77 /* corgi audio machine driver */ 78 static struct snd_soc_card snd_soc_corgi = { 79 .name = "Corgi", 80 .dai_link = &corgi_dai, 81 .num_links = 1, 82 }; 83 84 85 Machine Power Map 86 ----------------- 87 88 The machine driver can optionally extend the c 89 audio power map of the audio subsystem. This a 90 of speaker/HP amplifiers, etc. Codec pins can 91 sockets in the machine init function. 92 93 94 Machine Controls 95 ---------------- 96 97 Machine specific audio mixer controls can be a
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.