linux/sound/soc/soc-pcm.c
<<
e="v14./spa 14./form 14.a e="v14 href="../linux+v3 7/sound/soc/soc-pcm.c">e="v14.img src="../.static/gfx/right.png" alt=">>">e=./spa e=.spa class="lxr_search">e="v ="+search" method="post" onsubmit="return do_search(this);">e="v14.input typ hidden" nam navtarget" ion> ">e="v14.input typ text" nam search" id search">e="v14.buttopttyp submit">Searche="v14Prefs 14./a>e=./spa "v14 4./div "v14 4.form ac > ="ajax+*" method="post" onsubmit="return false;">e=.input typ hidden" nam ajax_lookup" id ajax_lookup" ion> ">e"v14 4./form e"v14 4.div class="headingbottom">
.div id file_contents"
4 41./a>.spa
 class="comment">/*./spa
  4 42./a>.spa
 class="comment"> * soc-pcm.c  --  ALSA SoC PCM./spa
  4 43./a>.spa
 class="comment"> *./spa
  4 44./a>.spa
 class="comment"> * Copyright 2005 WolfsoptMicroelectronics PLC../spa
  4 45./a>.spa
 class="comment"> * Copyright 2005 Openedhand Ltd../spa
  4 46./a>.spa
 class="comment"> * Copyright (C) 2010 Slimlogic Ltd../spa
  4 47./a>.spa
 class="comment"> * Copyright (C) 2010 Texas Instruments Inc../spa
  4 48./a>.spa
 class="comment"> *./spa
  4 49./a>.spa
 class="comment"> * Authors: Liam Girdwood <lrg@ti.com>./spa
  4   >
a>.spa
 class="comment"> *          Mark Brown <broonie@opensource.wolfsopmicro.com> "v14 4./spa
  4 11./a>.spa
 class="comment"> *./spa
  4 12./a>.spa
 class="comment"> *  This program is free software; you ca
 redistribute  it and/or modify it./spa
  4 13./a>.spa
 class="comment"> *  under  the terms of  the GNU General14Public License as published by the./spa
  4 14./a>.spa
 class="comment"> *  Free Software Founda  >
; "either vers/opt2 of the  License, or (at your./spa
  4 15./a>.spa
 class="comment"> *  
	  >
) any later vers/op../spa
  4 16./a>.spa
 class="comment"> *./spa
  4 17./a>.spa
 class="comment"> */./spa
  4 18./a> 4 19./a>#include <linux/kernel.h./a>> 4 20./a>#include <linux/init.h./a>> 4 21./a>#include <linux/delay.h./a>> 4 22./a>#include <linux/pm_runtime.h./a>> 4 23./a>#include <linux/slab.h./a>> 4 24./a>#include <linux/workqueue.h./a>> 4 25./a>#include <linux/export.h./a>> 4 26./a>#include <linux/debugfs.h./a>> 4 27./a>#include <sound/core.h./a>> 4 28./a>#include <sound/pcm.h./a>> 4 29./a>#include <sound/pcm_params.h./a>> 4 30./a>#include <sound/soc.h./a>> 4 31./a>#include <sound/soc-dpcm.h./a>> 4 32./a>#include <sound/initval.h./a>> 4 33./a> 4 34./a>#define4.a href="+code=DPCM_MAX_BE_USERS" class="sref">DPCM_MAX_BE_USERS./a> "v14 48 4 35./a> 4 36./a>.spa
 class="comment">/* DPCM stream event, send event to FE and all ac  ve BEs. */./spa
  4 37./a>static int .a href="+code=dpcm_dapm_stream_event" class="sref">dpcm_dapm_stream_event./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">fe./a>, int .a href="+code=dir" class="sref">dir./a>, 4 38./a> "v14 4 int .a href="+code=event" class="sref">event./a>) 4 39./a>{ 4 40./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4 41./a> 4 42./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">fe./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=dir" class="sref">dir./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 4 43./a> 4 44./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">be./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">be./a>; 4 45./a> 4 46./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=be" class="sref">be./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"pm: BE %s event %d dir %d\n"./spa
 , 4 47./a> "v14 4  "v14 4  "v14 4  "v14 4 .a href="+code=be" class="sref">be./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=event" class="sref">event./a>, .a href="+code=dir" class="sref">dir./a>); 4 48./a> 4 49./a> "v14 4  "v14 4 .a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=be" class="sref">be./a>, .a href="+code=dir" class="sref">dir./a>, .a href="+code=event" class="sref">event./a>); 4 50./a> "v14 4 } 4 51./a> 4 52./a> "v14 4 .a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=fe" class="sref">fe./a>, .a href="+code=dir" class="sref">dir./a>, .a href="+code=event" class="sref">event./a>); 4 53./a> 4 54./a> "v14 4 return 0; 4 55./a>} 4 56./a> 4 57./a>static int .a href="+code=soc_pcm_apply_symmetry" class="sref">soc_pcm_apply_symmetry./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>, 4 58./a> "v14 4  "v14 4  "v14 4  "v14 4  "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=soc_dai" class="sref">soc_dai./a>) 4 59./a>{ 4 60./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4 61./a> "v14 4 int .a href="+code=ret" class="sref">ret./a>; 4 62./a> 4 63./a> "v14 4 if (!.a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=symmetric_rates" class="sref">symmetric_rates./a> && 4 64./a> "v14 4  "v1!.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=symmetric_rates" class="sref">symmetric_rates./a>) 4 65./a> "v14 4  "v14 4 return 0; 4 66./a> 4 67./a> "v14 4 .spa
 class="comment">/* This ca
 happen if multiple streams are starting simultaneously -./spa
  4 68./a>.spa
 class="comment">         * the second ca
 need to get its constraints before the first has./spa
  4 69./a>.spa
 class="comment">         * picked a rate.  Complain and allow the applica  >
 to carry op../spa
  4 7 >
a>.spa
 class="comment">         */./spa
  4 71./a> "v14 4 if (!.a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=rate" class="sref">rate./a>) { 4 72./a> "v14 4  "v14 4 .a href="+code=dev_warn" class="sref">dev_warn./a>(.a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=dev" class="sref">dev./a>, 4 73./a> "v14 4  "v14 4   "v14 4 .spa
 class="string">"Not enforcing symmetric_rates due to race\n"./spa
 ); 4 74./a> "v14 4  "v14 4 return 0; 4 75./a> "v14 4 } 4 76./a> 4 77./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"Symmetry forces %dHz rate\n"./spa
 , .a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=rate" class="sref">rate./a>); 4 78./a> 4 79./a> "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=snd_pcm_hw_constraint_minmax" class="sref">snd_pcm_hw_constraint_minmax./a>(.a href="+code=substream" class="sref">substream./a>->.a href="+code=runtime" class="sref">runtime./a>, 4 80./a> "v14 4  "v14 4   "v14 4   "v14 4   "v14 4 .a href="+code=SNDRV_PCM_HW_PARAM_RATE" class="sref">SNDRV_PCM_HW_PARAM_RATE./a>, 4 81./a> "v14 4  "v14 4   "v14 4   "v14 4   "v14 4 .a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=rate" class="sref">rate./a>, .a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=rate" class="sref">rate./a>); 4 82./a> "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4 83./a> "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=soc_dai" class="sref">soc_dai./a>->.a href="+code=dev" class="sref">dev./a>, 4 84./a> "v14 4  "v14 4  "v14 4 .spa
 class="string">"Unable to apply rate symmetry constraint: %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 4 85./a> "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4 86./a> "v14 4 } 4 87./a> 4 88./a> "v14 4 return 0; 4 89./a>} 4 90./a> 4 91./a>.spa
 class="comment">/*./spa
  4 92./a>.spa
 class="comment"> * List of sample sizes that might go over the bus for parameter./spa
  4 93./a>.spa
 class="comment"> * applica  >
.  There ought to be a wildcard sample size for things./spa
  4 94./a>.spa
 class="comment"> * like the DAC/ADC resolu  >
 to use but there isn't right now../spa
  4 95./a>.spa
 class="comment"> */./spa
  4 96./a>static int .a href="+code=sample_sizes" class="sref">sample_sizes./a>[] = { 4 97./a> "v14 4 24, 32, 4 98./a>}; 4 99./a> 4100./a>static void .a href="+code=soc_pcm_apply_msb" class="sref">soc_pcm_apply_msb./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>, 4101./a> "v14 4  "v14 4   "v14 4   "v1struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=dai" class="sref">dai./a>) 4102./a>{ 4103./a> "v14 4 int .a href="+code=ret" class="sref">ret./a>, .a href="+code=i" class="sref">i./a>, .a href="+code=bits" class="sref">bits./a>; 4104./a> 4105./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) 4106./a> "v14 4  "v14 4 .a href="+code=bits" class="sref">bits./a> = .a href="+code=dai" class="sref">dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=sig_bits" class="sref">sig_bits./a>; 4107./a> "v14 4 else 4108./a> "v14 4  "v14 4 .a href="+code=bits" class="sref">bits./a> = .a href="+code=dai" class="sref">dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=sig_bits" class="sref">sig_bits./a>; 4109./a> 4110./a> "v14 4 if (!.a href="+code=bits" class="sref">bits./a>) 4111./a> "v14 4  "v14 4 return; 4112./a> 4113./a> "v14 4 for (.a href="+code=i" class="sref">i./a> = 0; .a href="+code=i" class="sref">i./a> < .a href="+code=ARRAY_SIZE" class="sref">ARRAY_SIZE./a>(.a href="+code=sample_sizes" class="sref">sample_sizes./a>); .a href="+code=i" class="sref">i./a>++) { 4114./a> "v14 4  "v14 4 if (.a href="+code=bits" class="sref">bits./a> >= .a href="+code=sample_sizes" class="sref">sample_sizes./a>[.a href="+code=i" class="sref">i./a>]) 4115./a> "v14 4  "v14 4         continue; 4116./a> 4117./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=snd_pcm_hw_constraint_msbits" class="sref">snd_pcm_hw_constraint_msbits./a>(.a href="+code=substream" class="sref">substream./a>->.a href="+code=runtime" class="sref">runtime./a>, 0, 4118./a> "v14 4  "v14 4  "v14 4  "v14 4  "v14 4  4  "v14 4 .a href="+code=sample_sizes" class="sref">sample_sizes./a>[.a href="+code=i" class="sref">i./a>], .a href="+code=bits" class="sref">bits./a>); 4119./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> != 0) 4120./a> "v14 4  "v14 4   "v14 4.a href="+code=dev_warn" class="sref">dev_warn./a>(.a href="+code=dai" class="sref">dai./a>->.a href="+code=dev" class="sref">dev./a>, 4121./a> "v14 4  "v14 4   "v14 4   "v14 4.spa
 class="string">"Failed to set MSB %d/%d: %d\n"./spa
 , 4122./a> "v14 4  "v14 4   "v14 4   "v14 4.a href="+code=bits" class="sref">bits./a>, .a href="+code=sample_sizes" class="sref">sample_sizes./a>[.a href="+code=i" class="sref">i./a>], .a href="+code=ret" class="sref">ret./a>); 4123./a> "v14 4 } 4124./a>} 4125./a> 4126./a>.spa
 class="comment">/*./spa
  4127./a>.spa
 class="comment"> * Called by ALSA when a PCM substream is opened, the runtime->hw record is./spa
  4128./a>.spa
 class="comment"> * then initialized and any private data ca
 be allocated. This also calls./spa
  4129./a>.spa
 class="comment"> * startup for the cpu DAI, platform, machine4and codec DAI../spa
  413 >
a>.spa
 class="comment"> */./spa
  4131./a>static int .a href="+code=soc_pcm_open" class="sref">soc_pcm_open./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 4132./a>{ 4133./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4134./a> "v14 4 struct .a href="+code=snd_pcm_runtime" class="sref">snd_pcm_runtime./a> *.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=runtime" class="sref">runtime./a>; 4135./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4136./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4137./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4138./a> "v14 4 struct .a href="+code=snd_soc_dai_driver" class="sref">snd_soc_dai_driver./a> *.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>; 4139./a> "v14 4 struct .a href="+code=snd_soc_dai_driver" class="sref">snd_soc_dai_driver./a> *.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>; 4140./a> "v14 4 int .a href="+code=ret" class="sref">ret./a> = 0; 4141./a> 4142./a> "v14 4 .a href="+code=pm_runtime_get_sync" class="sref">pm_runtime_get_sync./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4143./a> "v14 4 .a href="+code=pm_runtime_get_sync" class="sref">pm_runtime_get_sync./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4144./a> "v14 4 .a href="+code=pm_runtime_get_sync" class="sref">pm_runtime_get_sync./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>); 4145./a> 4146./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4147./a> 4148./a> "v14 4 .spa
 class="comment">/* startup the audio subsystem */./spa
  4149./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>) { 4150./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4151./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4152./a> "v14 4  "v14 4   "v14 4.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't open interface %s: %d\n"./spa
 , 4153./a> "v14 4  "v14 4   "v14 4  "v14 4.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4154./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=out" class="sref">out./a>; 4155./a> "v14 4  "v14 4 } 4156./a> "v14 4 } 4157./a> 4158./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=open" class="sref">open./a>) { 4159./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=open" class="sref">open./a>(.a href="+code=substream" class="sref">substream./a>); 4160./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4161./a> "v14 4  "v14 4   "v14 4.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't open platform %s: %d\n"./spa
 , 4162./a> "v14 4  "v14 4   "v14 4   "v14 .a href="+code=platform" class="sref">platform./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4163./a> "v14 4  "v14 4   "v14 4goto .a href="+code=platform_err" class="sref">platform_err./a>; 4164./a> "v14 4  "v14 4 } 4165./a> "v14 4 } 4166./a> 4167./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>) { 4168./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4169./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4170./a> "v14 4  "v14 4   "v14 4.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't open codec %s: %d\n"./spa
 , 4171./a> "v14 4  "v14 4   "v14 4   "v14 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4172./a> "v14 4  "v14 4   "v14 4goto .a href="+code=codec_dai_err" class="sref">codec_dai_err./a>; 4173./a> "v14 4  "v14 4 } 4174./a> "v14 4 } 4175./a> 4176./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>) { 4177./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=startup" class="sref">startup./a>(.a href="+code=substream" class="sref">substream./a>); 4178./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4179./a> "v14 4  "v14 4  "v14 4 .a href="+code=pr_err" class="sref">pr_err./a>(.spa
 class="string">"asoc: %s startup failed: %d\n"./spa
 , 4180./a> "v14 4  "v14 4   "v14 4   "v14.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4181./a> "v14 4  "v14 4   "v14 4goto .a href="+code=machine_err" class="sref">machine_err./a>; 4182./a> "v14 4  "v14 4 } 4183./a> "v14 4 } 4184./a> 4185./a> "v14 4 .spa
 class="comment">/* Dynamic PCM DAI links compat checks use dynamic capabilities */./spa
  4186./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=dynamic" class="sref">dynamic./a> ||4.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=no_pcm" class="sref">no_pcm./a>) 4187./a> "v14 4  "v14 4 goto .a href="+code=dynamic" class="sref">dynamic./a>; 4188./a> 4189./a> "v14 4 .spa
 class="comment">/* Check that the codec and cpu DAIs are compatible */./spa
  4190./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 4191./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_min" class="sref">rate_min./a> = 4192./a> "v14 4  "v14 4   "v14 4.a href="+code=max" class="sref">max./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_min" class="sref">rate_min./a>, 4193./a> "v14 4  "v14 4   "v14 4  "v.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_min" class="sref">rate_min./a>); 4194./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_max" class="sref">rate_max./a> = 4195./a> "v14 4  "v14 4         .a href="+code=min" class="sref">min./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_max" class="sref">rate_max./a>, 4196./a> "v14 4  "v14 4   "v14 4  "v.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_max" class="sref">rate_max./a>); 4197./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> = 4198./a> "v14 4  "v14 4  "v14 4 .a href="+code=max" class="sref">max./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_min" class="sref">channels_min./a>, 4199./a> "v14 4  "v14 4  "v14 4 14 4  "v.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_min" class="sref">channels_min./a>); 4200./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a> = 4201./a> "v14 4  "v14 4   "v14 4.a href="+code=min" class="sref">min./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_max" class="sref">channels_max./a>, 4202./a> "v14 4  "v14 4   "v14 4   "v14 .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_max" class="sref">channels_max./a>); 4203./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=formats" class="sref">formats./a> = 4204./a> "v14 4  "v14 4  "v14 4 .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=formats" class="sref">formats./a> & .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=formats" class="sref">formats./a>; 4205./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> = 4206./a> "v14 4  "v14 4  "v14 4 .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a> & .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a>; 4207./a> "v14 4  "v14 4 if (.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a> 4208./a> "v14 4  "v14 4            & (.a href="+code=SNDRV_PCM_RATE_KNOT" class="sref">SNDRV_PCM_RATE_KNOT./a> | .a href="+code=SNDRV_PCM_RATE_CONTINUOUS" class="sref">SNDRV_PCM_RATE_CONTINUOUS./a>)) 4209./a> "v14 4  "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> |= .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a>; 4210./a> "v14 4  "v14 4 if (.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a> 4211./a> "v14 4  "v14 4            & (.a href="+code=SNDRV_PCM_RATE_KNOT" class="sref">SNDRV_PCM_RATE_KNOT./a> | .a href="+code=SNDRV_PCM_RATE_CONTINUOUS" class="sref">SNDRV_PCM_RATE_CONTINUOUS./a>)) 4212./a> "v14 4  "v14 4   "v14 4.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> |= .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a>; 4213./a> "v14 4 } else { 4214./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_min" class="sref">rate_min./a> = 4215./a> "v14 4  "v14 4         .a href="+code=max" class="sref">max./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_min" class="sref">rate_min./a>, 4216./a> "v14 4  "v14 4   "v14 4  "v.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_min" class="sref">rate_min./a>); 4217./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_max" class="sref">rate_max./a> = 4218./a> "v14 4  "v14 4  "v14 4 .a href="+code=min" class="sref">min./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_max" class="sref">rate_max./a>, 4219./a> "v14 4  "v14 4   "v14 4  "v.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_max" class="sref">rate_max./a>); 4220./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> = 4221./a> "v14 4  "v14 4   "v14 4.a href="+code=max" class="sref">max./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_min" class="sref">channels_min./a>, 4222./a> "v14 4  "v14 4   "v14 4   "v14 .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_min" class="sref">channels_min./a>); 4223./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a> = 4224./a> "v14 4  "v14 4  "v14 4 .a href="+code=min" class="sref">min./a>(.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_max" class="sref">channels_max./a>, 4225./a> "v14 4  "v14 4            "v14 .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_max" class="sref">channels_max./a>); 4226./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=formats" class="sref">formats./a> = 4227./a> "v14 4  "v14 4    "v14 .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=formats" class="sref">formats./a> & .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=formats" class="sref">formats./a>; 4228./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> = 4229./a> "v14 4  "v14 4  "v14 4 .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a> & .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a>; 4230./a> "v14 4  "v14 4 if (.a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a> 4231./a> "v14 4  "v14 4            & (.a href="+code=SNDRV_PCM_RATE_KNOT" class="sref">SNDRV_PCM_RATE_KNOT./a> | .a href="+code=SNDRV_PCM_RATE_CONTINUOUS" class="sref">SNDRV_PCM_RATE_CONTINUOUS./a>)) 4232./a> "v14 4  "v14 4   "v14 4.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> |= .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a>; 4233./a> "v14 4  "v14 4 if (.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a> 4234./a> "v14 4  "v14 4  "v14 4    & (.a href="+code=SNDRV_PCM_RATE_KNOT" class="sref">SNDRV_PCM_RATE_KNOT./a> | .a href="+code=SNDRV_PCM_RATE_CONTINUOUS" class="sref">SNDRV_PCM_RATE_CONTINUOUS./a>)) 4235./a> "v14 4  "v14 4         .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> |= .a href="+code=codec_dai_drv" class="sref">codec_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a>; 4236./a> "v14 4 } 4237./a> 4238./a> "v14 4 .a href="+code=ret" class="sref">ret./a> = -.a href="+code=EINVAL" class="sref">EINVAL./a>; 4239./a> "v14 4 .a href="+code=snd_pcm_limit_hw_rates" class="sref">snd_pcm_limit_hw_rates./a>(.a href="+code=runtime" class="sref">runtime./a>); 4240./a> "v14 4 if (!.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a>) { 4241./a> "v14 4  "v14 4 .a href="+code=printk" class="sref">printk./a>(.a href="+code=KERN_ERR" class="sref">KERN_ERR./a> .spa
 class="string">"asoc: %s <-> %s No matching rates\n"./spa
 , 4242./a> "v14 4  "v14 4   "v14 4.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>); 4243./a> "v14 4  "v14 4 goto .a href="+code=config_err" class="sref">config_err./a>; 4244./a> "v14 4 } 4245./a> "v14 4 if (!.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=formats" class="sref">formats./a>) { 4246./a> "v14 4  "v14 4 .a href="+code=printk" class="sref">printk./a>(.a href="+code=KERN_ERR" class="sref">KERN_ERR./a> .spa
 class="string">"asoc: %s <-> %s No matching formats\n"./spa
 , 4247./a> "v14 4  "v14 4    "v14 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>); 4248./a> "v14 4  "v14 4 goto .a href="+code=config_err" class="sref">config_err./a>; 4249./a> "v14 4 } 4250./a> "v14 4 if (!.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> || !.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a> || 4251./a> "v14 4  "v1.a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> > .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a>) { 4252./a> "v14 4  "v14 4 .a href="+code=printk" class="sref">printk./a>(.a href="+code=KERN_ERR" class="sref">KERN_ERR./a> .spa
 class="string">"asoc: %s <-> %s No matching channels\n"./spa
 , 4253./a> "v14 4  "v14 4   "v14 4  "v14 4.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>); 4254./a> "v14 4  "v14 4 goto .a href="+code=config_err" class="sref">config_err./a>; 4255./a> "v14 4 } 4256./a> 4257./a> "v14 4 .a href="+code=soc_pcm_apply_msb" class="sref">soc_pcm_apply_msb./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4258./a> "v14 4 .a href="+code=soc_pcm_apply_msb" class="sref">soc_pcm_apply_msb./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4259./a> 4260./a> "v14 4 .spa
 class="comment">/* Symmetry only applies if we've already got a
 active stream. */./spa
  4261./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=active" class="sref">active./a>) { 4262./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=soc_pcm_apply_symmetry" class="sref">soc_pcm_apply_symmetry./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4263./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> != 0) 4264./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=config_err" class="sref">config_err./a>; 4265./a> "v14 4 } 4266./a> 4267./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=active" class="sref">active./a>) { 4268./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=soc_pcm_apply_symmetry" class="sref">soc_pcm_apply_symmetry./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4269./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> != 0) 4270./a> "v14 4  "v14 4   "v14 4goto .a href="+code=config_err" class="sref">config_err./a>; 4271./a> "v14 4 } 4272./a> 4273./a> "v14 4 .a href="+code=pr_debug" class="sref">pr_debug./a>(.spa
 class="string">"asoc: %s <-> %s info:\n"./spa
 , 4274./a> "v14 4  "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>); 4275./a> "v14 4 .a href="+code=pr_debug" class="sref">pr_debug./a>(.spa
 class="string">"asoc: rate mask 0x%x\n"./spa
 , .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a>); 4276./a> "v14 4 .a href="+code=pr_debug" class="sref">pr_debug./a>(.spa
 class="string">"asoc: mi
 ch %d max ch %d\n"./spa
 , .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a>, 4277./a> "v14 4  "v14 4  .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a>); 4278./a> "v14 4 .a href="+code=pr_debug" class="sref">pr_debug./a>(.spa
 class="string">"asoc: mi
 rate %d max rate %d\n"./spa
 , .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_min" class="sref">rate_min./a>, 4279./a> "v14 4  "v14 4  .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_max" class="sref">rate_max./a>); 4280./a> 4281./a>.a href="+code=dynamic" class="sref">dynamic./a>: 4282./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 4283./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=playback_active" class="sref">playback_active./a>++; 4284./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=playback_active" class="sref">playback_active./a>++; 4285./a> "v14 4 } else { 4286./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=capture_active" class="sref">capture_active./a>++; 4287./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=capture_active" class="sref">capture_active./a>++; 4288./a> "v14 4 } 4289./a> "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=active" class="sref">active./a>++; 4290./a> "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=active" class="sref">active./a>++; 4291./a> "v14 4 .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec" class="sref">codec./a>->.a href="+code=active" class="sref">active./a>++; 4292./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4293./a> "v14 4 return 0; 4294./a> 4295./a>.a href="+code=config_err" class="sref">config_err./a>: 4296./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4297./a> "v14 4  "v14 4 .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>); 4298./a> 4299./a>.a href="+code=machine_err" class="sref">machine_err./a>: 4300./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4301./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4302./a> 4303./a>.a href="+code=codec_dai_err" class="sref">codec_dai_err./a>: 4304./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=close" class="sref">close./a>) 4305./a> "v14 4  "v14 4 .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=close" class="sref">close./a>(.a href="+code=substream" class="sref">substream./a>); 4306./a> 4307./a>.a href="+code=platform_err" class="sref">platform_err./a>: 4308./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4309./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4310./a>.a href="+code=out" class="sref">out./a>: 4311./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4312./a> 4313./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>); 4314./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4315./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4316./a> 4317./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4318./a>} 4319./a> 4320./a>.spa
 class="comment">/*./spa
  4321./a>.spa
 class="comment"> * Power down the audio subsystem pmdown_time msecs after close is called../spa
  4322./a>.spa
 class="comment"> * This is to ensure there are no pops or clicks in between any music tracks./spa
  4323./a>.spa
 class="comment"> * due to DAPM power cycling../spa
  4324./a>.spa
 class="comment"> */./spa
  4325./a>static void .a href="+code=close_delayed_work" class="sref">close_delayed_work./a>(struct .a href="+code=work_struct" class="sref">work_struct./a> *.a href="+code=work" class="sref">work./a>) 4326./a>{ 4327./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = 4328./a> "v14 4  "v14 4  "v14 4 .a href="+code=container_of" class="sref">container_of./a>(.a href="+code=work" class="sref">work./a>, struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a>, .a href="+code=delayed_work" class="sref">delayed_work./a>..a href="+code=work" class="sref">work./a>); 4329./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4330./a> 4331./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4332./a> 4333./a> "v14 4 .a href="+code=pr_debug" class="sref">pr_debug./a>(.spa
 class="string">"pop wq checking: %s status: %s waiting: %s\n"./spa
 , 4334./a> "v14 4  "v14 4  .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=stream_nam
" class="sref">stream_nam
./a>, 4335./a> "v14 4  "v14 4  .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=playback_active" class="sref">playback_active./a> ? .spa
 class="string">"active"./spa
  : .spa
 class="string">"inactive"./spa
 , 4336./a> "v14 4  "v14 4  .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a> ? .spa
 class="string">"yes"./spa
  : .spa
 class="string">"no"./spa
 ); 4337./a> 4338./a> "v14 4 .spa
 class="comment">/* are we waiting on this codec DAI stream */./spa
  4339./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a> == 1) { 4340./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a> = 0; 4341./a> "v14 4  "v14 4 .a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=rtd" class="sref">rtd./a>, .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>, 4342./a> "v14 4  "v14 4   "v14 4444444444444444444.a href="+code=SND_SOC_DAPM_STREAM_STOP" class="sref">SND_SOC_DAPM_STREAM_STOP./a>); 4343./a> "v14 4 } 4344./a> 4345./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4346./a>} 4347./a> 4348./a>.spa
 class="comment">/*./spa
  4349./a>.spa
 class="comment"> * Called by ALSA when a PCM substream is closed. Private data can be./spa
  4350./a>.spa
 class="comment"> * freed here. The cpu DAI, codec DAI, machine and platform are also./spa
  4351./a>.spa
 class="comment"> * shutdown../spa
  4352./a>.spa
 class="comment"> */./spa
  4353./a>static int .a href="+code=soc_pcm_close" class="sref">soc_pcm_close./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 4354./a>{ 4355./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4356./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4357./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4358./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4359./a> "v14 4 struct .a href="+code=snd_soc_codec" class="sref">snd_soc_codec./a> *.a href="+code=codec" class="sref">codec./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec" class="sref">codec./a>; 4360./a> 4361./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4362./a> 4363./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 4364./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=playback_active" class="sref">playback_active./a>--; 4365./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=playback_active" class="sref">playback_active./a>--; 4366./a> "v14 4 } else { 4367./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=capture_active" class="sref">capture_active./a>--; 4368./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=capture_active" class="sref">capture_active./a>--; 4369./a> "v14 4 } 4370./a> 4371./a> "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=active" class="sref">active./a>--; 4372./a> "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=active" class="sref">active./a>--; 4373./a> "v14 4 .a href="+code=codec" class="sref">codec./a>->.a href="+code=active" class="sref">active./a>--; 4374./a> 4375./a> "v14 4 .spa
 class="comment">/* clear the corresponding DAIs rate when inactive */./spa
  4376./a> "v14 4 if (!.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=active" class="sref">active./a>) 4377./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=rate" class="sref">rate./a> = 0; 4378./a> 4379./a> "v14 4 if (!.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=active" class="sref">active./a>) 4380./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=rate" class="sref">rate./a> = 0; 4381./a> 4382./a> "v14 4 .spa
 class="comment">/* Muting the DAC suppresses artifacts caused during digital./spa
  4383./a>.spa
 class="comment">         * shutdown, for example from stopping clocks../spa
  4384./a>.spa
 class="comment">         */./spa
  4385./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) 4386./a> "v14 4  "v14 4 .a href="+code=snd_soc_dai_digital_mute" class="sref">snd_soc_dai_digital_mute./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>, 1); 4387./a> 4388./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4389./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4390./a> 4391./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4392./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4393./a> 4394./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>) 4395./a> "v14 4  "v14 4 .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=shutdown" class="sref">shutdown./a>(.a href="+code=substream" class="sref">substream./a>); 4396./a> 4397./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=close" class="sref">close./a>) 4398./a> "v14 4  "v14 4 .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=close" class="sref">close./a>(.a href="+code=substream" class="sref">substream./a>); 4399./a> "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=NULL" class="sref">NULL./a>; 4400./a> 4401./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 4402./a> "v14 4  "v14 4 if (!.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pmdown_time" class="sref">pmdown_time./a> || .a href="+code=codec" class="sref">codec./a>->.a href="+code=ignore_pmdown_time" class="sref">ignore_pmdown_time./a> || 4403./a> "v14 4  "v14 4   "v.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ignore_pmdown_time" class="sref">ignore_pmdown_time./a>) { 4404./a> "v14 4  "v14 4   4   "v.spa
 class="comment">/* powered down playback stream now */./spa
  4405./a> "v14 4  "v14 4 4 4   "v.a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=rtd" class="sref">rtd./a>, 4406./a> "v14 4  "v14 4                                   .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>, 4407./a> "v14 4  "v14 4                                   .a href="+code=SND_SOC_DAPM_STREAM_STOP" class="sref">SND_SOC_DAPM_STREAM_STOP./a>); 4408./a> "v14 4  "v14 4 } else { 4409./a> "v14 4  "v14 4         .spa
 class="comment">/* start delayed pop wq here for playback streams */./spa
  4410./a> "v14 4  "v14 4   "v14 4.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a> = 1; 4411./a> "v14 4  "v14 4   "v14 4.a href="+code=schedule_delayed_work" class="sref">schedule_delayed_work./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=delayed_work" class="sref">delayed_work./a>, 4412./a> "v14 4  "v14 4   "v14 444444444.a href="+code=msecs_to_jiffies" class="sref">msecs_to_jiffies./a>(.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pmdown_time" class="sref">pmdown_time./a>)); 4413./a> "v14 4  "v14 4 } 4414./a> "v14 4 } else { 4415./a> "v14 4  "v14 4 .spa
 class="comment">/* capture streams can be powered down now */./spa
  4416./a> "v14 4  "v14 4 .a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=rtd" class="sref">rtd./a>, .a href="+code=SNDRV_PCM_STREAM_CAPTURE" class="sref">SNDRV_PCM_STREAM_CAPTURE./a>, 4417./a> "v14 4  "v14 4                           .a href="+code=SND_SOC_DAPM_STREAM_STOP" class="sref">SND_SOC_DAPM_STREAM_STOP./a>); 4418./a> "v14 4 } 4419./a> 4420./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4421./a> 4422./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>); 4423./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4424./a> "v14 4 .a href="+code=pm_runtime_put" class="sref">pm_runtime_put./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>); 4425./a> 4426./a> "v14 4 return 0; 4427./a>} 4428./a> 4429./a>.spa
 class="comment">/*./spa
  4430./a>.spa
 class="comment"> * Called by ALSA when the PCM substream is prepared, can set format, sample./spa
  4431./a>.spa
 class="comment"> * rate, etc.  This function is non atomic and can be called multiple times,./spa
  4432./a>.spa
 class="comment"> * it can refer to the runtime info../spa
  4433./a>.spa
 class="comment"> */./spa
  4434./a>static int .a href="+code=soc_pcm_prepare" class="sref">soc_pcm_prepare./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 4435./a>{ 4436./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4437./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4438./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4439./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4440./a> "v14 4 int .a href="+code=ret" class="sref">ret./a> = 0; 4441./a> 4442./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4443./a> 4444./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>) { 4445./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>(.a href="+code=substream" class="sref">substream./a>); 4446./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4447./a> "v14 4  "v14 4         .a href="+code=pr_err" class="sref">pr_err./a>(.spa
 class="string">"asoc: machine prepare error: %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 4448./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=out" class="sref">out./a>; 4449./a> "v14 4  "v14 4 } 4450./a> "v14 4 } 4451./a> 4452./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>) { 4453./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>(.a href="+code=substream" class="sref">substream./a>); 4454./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4455./a> "v14 4  "v14 4 4 4   "v.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"platform prepare error: %d\n"./spa
 , 4456./a> "v14 4  "v14 4                 .a href="+code=ret" class="sref">ret./a>); 4457./a> "v14 4  "v14 4         goto .a href="+code=out" class="sref">out./a>; 4458./a> "v14 4  "v14 4 } 4459./a> "v14 4 } 4460./a> 4461./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>) { 4462./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4463./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4464./a> "v14 4  "v14 4 4 4   "v.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"DAI prepare error: %d\n"./spa
 , 4465./a> "v14 4  "v14 4                 .a href="+code=ret" class="sref">ret./a>); 4466./a> "v14 4  "v14 4         goto .a href="+code=out" class="sref">out./a>; 4467./a> "v14 4  "v14 4 } 4468./a> "v14 4 } 4469./a> 4470./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>) { 4471./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=prepare" class="sref">prepare./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4472./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4473./a> "v14 4  "v14 4   "v  "v.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"DAI prepare error: %d\n"./spa
 , 4474./a> "v14 4  "v14 4 4 4   "v        .a href="+code=ret" class="sref">ret./a>); 4475./a> "v14 4  "v14 4         goto .a href="+code=out" class="sref">out./a>; 4476./a> "v14 4  "v14 4 } 4477./a> "v14 4 } 4478./a> 4479./a> "v14 4 .spa
 class="comment">/* cancel any delayed stream shutdown that is pending */./spa
  4480./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a> && 4481./a> "v14 4  "v1.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a>) { 4482./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=pop_wait" class="sref">pop_wait./a> = 0; 4483./a> "v14 4  "v14 4 .a href="+code=cancel_delayed_work" class="sref">cancel_delayed_work./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=delayed_work" class="sref">delayed_work./a>); 4484./a> "v14 4 } 4485./a> 4486./a> "v14 4 .a href="+code=snd_soc_dapm_stream_event" class="sref">snd_soc_dapm_stream_event./a>(.a href="+code=rtd" class="sref">rtd./a>, .a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a>, 4487./a> "v14 4  "v14 4         .a href="+code=SND_SOC_DAPM_STREAM_START" class="sref">SND_SOC_DAPM_STREAM_START./a>); 4488./a> 4489./a> "v14 4 .a href="+code=snd_soc_dai_digital_mute" class="sref">snd_soc_dai_digital_mute./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>, 0); 4490./a> 4491./a>.a href="+code=out" class="sref">out./a>: 4492./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4493./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4494./a>} 4495./a> 4496./a>.spa
 class="comment">/*./spa
  4497./a>.spa
 class="comment"> * Called by ALSA when the hardware params are set by application. This./spa
  4498./a>.spa
 class="comment"> * function can also be called multiple times and can allocate buffers./spa
  4499./a>.spa
 class="comment"> * (using snd_pcm_lib_* ). It's non-atomic../spa
  4500./a>.spa
 class="comment"> */./spa
  4501./a>static int .a href="+code=soc_pcm_hw_params" class="sref">soc_pcm_hw_params./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>, 4502./a> "v14 4  "v14 4                 struct .a href="+code=snd_pcm_hw_params" class="sref">snd_pcm_hw_params./a> *.a href="+code=params" class="sref">params./a>) 4503./a>{ 4504./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4505./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4506./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4507./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4508./a> "v14 4 int .a href="+code=ret" class="sref">ret./a> = 0; 4509./a> 4510./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4511./a> 4512./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>) { 4513./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=params" class="sref">params./a>); 4514./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4515./a> "v14 4  "v14 4  "v14 4 .a href="+code=pr_err" class="sref">pr_err./a>(.spa
 class="string">"asoc: machine hw_params failed: %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 4516./a> "v14 4  "v14 4         goto .a href="+code=out" class="sref">out./a>; 4517./a> "v14 4  "v14 4 } 4518./a> "v14 4 } 4519./a> 4520./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>) { 4521./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=params" class="sref">params./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4522./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4523./a> "v14 4  "v14 4   "v  "v.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't set %s hw params: %d\n"./spa
 , 4524./a> "v14 4  "v14 4  "v14 4   "v  "v.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4525./a> "v14 4  "v14 4         goto .a href="+code=codec_err" class="sref">codec_err./a>; 4526./a> "v14 4  "v14 4 } 4527./a> "v14 4 } 4528./a> 4529./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>) { 4530./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=params" class="sref">params./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4531./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4532./a> "v14 4  "v14 4         .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"%s hw params failed: %d\n"./spa
 , 4533./a> "v14 4  "v14 4   "v  "v  "v  "v.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4534./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=interface_err" class="sref">interface_err./a>; 4535./a> "v14 4  "v14 4 } 4536./a> "v14 4 } 4537./a> 4538./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>) { 4539./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_params" class="sref">hw_params./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=params" class="sref">params./a>); 4540./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 4541./a> "v14 4  "v14 4   "v14 4.a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=platform" class="sref">platform./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"%s hw params failed: %d\n"./spa
 , 4542./a> "v14 4  "v14 4                .a href="+code=platform" class="sref">platform./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=ret" class="sref">ret./a>); 4543./a> "v14 4  "v14 4   "v  "vgoto .a href="+code=platform_err" class="sref">platform_err./a>; 4544./a> "v14 4  "v14 4 } 4545./a> "v14 4 } 4546./a> 4547./a> "v14 4 .spa
 class="comment">/* store the rate for each DAIs */./spa
  4548./a> "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=rate" class="sref">rate./a> = .a href="+code=params_rate" class="sref">params_rate./a>(.a href="+code=params" class="sref">params./a>); 4549./a> "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=rate" class="sref">rate./a> = .a href="+code=params_rate" class="sref">params_rate./a>(.a href="+code=params" class="sref">params./a>); 4550./a> 4551./a>.a href="+code=out" class="sref">out./a>: 4552./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4553./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4554./a> 4555./a>.a href="+code=platform_err" class="sref">platform_err./a>: 4556./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4557./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4558./a> 4559./a>.a href="+code=interface_err" class="sref">interface_err./a>: 4560./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4561./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4562./a> 4563./a>.a href="+code=codec_err" class="sref">codec_err./a>: 4564./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4565./a> "v14 4  "v14 4 .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>); 4566./a> 4567./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4568./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4569./a>} 4570./a> 4571./a>.spa
 class="comment">/*./spa
  4572./a>.spa
 class="comment"> * Frees resources allocated by hw_params, can be called multiple times./spa
  4573./a>.spa
 class="comment"> */./spa
  4574./a>static int .a href="+code=soc_pcm_hw_free" class="sref">soc_pcm_hw_free./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 4575./a>{ 4576./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4577./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4578./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4579./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4580./a> "v14 4 struct .a href="+code=snd_soc_codec" class="sref">snd_soc_codec./a> *.a href="+code=codec" class="sref">codec./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec" class="sref">codec./a>; 4581./a> 4582./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>, .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_subclass" class="sref">pcm_subclass./a>); 4583./a> 4584./a> "v14 4 .spa
 class="comment">/* apply codec digital mute */./spa
  4585./a> "v14 4 if (!.a href="+code=codec" class="sref">codec./a>->.a href="+code=active" class="sref">active./a>) 4586./a> "v14 4  "v14 4 .a href="+code=snd_soc_dai_digital_mute" class="sref">snd_soc_dai_digital_mute./a>(.a href="+code=codec_dai" class="sref">codec_dai./a>, 1); 4587./a> 4588./a> "v14 4 .spa
 class="comment">/* free any machine hw params */./spa
  4589./a> "v14 4 if (.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4590./a> "v14 4  "v14 4 .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>); 4591./a> 4592./a> "v14 4 .spa
 class="comment">/* free any DMA resources */./spa
  4593./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4594./a> "v14 4  "v14 4 .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>); 4595./a> 4596./a> "v14 4 .spa
 class="comment">/* now free hw params for the DAIs  */./spa
  4597./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4598./a> "v14 4  "v14 4 .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4599./a> 4600./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>) 4601./a> "v14 4  "v14 4 .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=hw_free" class="sref">hw_free./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4602./a> 4603./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=rtd" class="sref">rtd./a>->.a href="+code=pcm_mutex" class="sref">pcm_mutex./a>); 4604./a> "v14 4 return 0; 4605./a>} 4606./a> 4607./a>static int .a href="+code=soc_pcm_trigger" class="sref">soc_pcm_trigger./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>, int .a href="+code=cmd" class="sref">cmd./a>) 4608./a>{ 4609./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4610./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4611./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4612./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4613./a> "v14 4 int .a href="+code=ret" class="sref">ret./a>; 4614./a> 4615./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>) { 4616./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4617./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4618./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4619./a> "v14 4 } 4620./a> 4621./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>) { 4622./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>); 4623./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4624./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4625./a> "v14 4 } 4626./a> 4627./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>) { 4628./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=trigger" class="sref">trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4629./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4630./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4631./a> "v14 4 } 4632./a> "v14 4 return 0; 4633./a>} 4634./a> 4635./a>static int .a href="+code=soc_pcm_bespoke_trigger" class="sref">soc_pcm_bespoke_trigger./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>, 4636./a> "v14 4  "v14 4          4  "v14 4 int .a href="+code=cmd" class="sref">cmd./a>) 4637./a>{ 4638./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4639./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4640./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4641./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4642./a> "v14 4 int .a href="+code=ret" class="sref">ret./a>; 4643./a> 4644./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>) { 4645./a> "v14 4         .a href="+code=ret" class="sref">ret./a> = .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4646./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4647./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4648./a> "v14 4 } 4649./a> 4650./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>) { 4651./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>); 4652./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4653./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4654./a> "v14 4 } 4655./a> 4656./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>) { 4657./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=bespoke_trigger" class="sref">bespoke_trigger./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cmd" class="sref">cmd./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4658./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) 4659./a> "v14 4  "v14 4  "v14 4 return .a href="+code=ret" class="sref">ret./a>; 4660./a> "v14 4 } 4661./a> "v14 4 return 0; 4662./a>} 4663./a>.spa
 class="comment">/*./spa
  4664./a>.spa
 class="comment"> * soc level wrapper for pointer callback./spa
  4665./a>.spa
 class="comment"> * If cpu_dai, codec_dai, platform driver has the delay callback, than./spa
  4666./a>.spa
 class="comment"> * the runtime->delay will be updated accordingly../spa
  4667./a>.spa
 class="comment"> */./spa
  4668./a>static .a href="+code=snd_pcm_ufram
s_t" class="sref">snd_pcm_ufram
s_t./a> .a href="+code=soc_pcm_pointer" class="sref">soc_pcm_pointer./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 4669./a>{ 4670./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 4671./a> "v14 4 struct .a href="+code=snd_soc_platform" class="sref">snd_soc_platform./a> *.a href="+code=platform" class="sref">platform./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=platform" class="sref">platform./a>; 4672./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4673./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=codec_dai" class="sref">codec_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>; 4674./a> "v14 4 struct .a href="+code=snd_pcm_runtime" class="sref">snd_pcm_runtime./a> *.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=runtime" class="sref">runtime./a>; 4675./a> "v14 4 .a href="+code=snd_pcm_ufram
s_t" class="sref">snd_pcm_ufram
s_t./a> .a href="+code=offset" class="sref">offset./a> = 0; 4676./a> "v14 4 .a href="+code=snd_pcm_sfram
s_t" class="sref">snd_pcm_sfram
s_t./a> .a href="+code=delay" class="sref">delay./a> = 0; 4677./a> 4678./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a> && .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=pointer" class="sref">pointer./a>) 4679./a> "v14 4  "v14 4 .a href="+code=offset" class="sref">offset./a> = .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=pointer" class="sref">pointer./a>(.a href="+code=substream" class="sref">substream./a>); 4680./a> 4681./a> "v14 4 if (.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=delay" class="sref">delay./a>) 4682./a> "v14 4  "v14 4 .a href="+code=delay" class="sref">delay./a> += .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=delay" class="sref">delay./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=cpu_dai" class="sref">cpu_dai./a>); 4683./a> 4684./a> "v14 4 if (.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=delay" class="sref">delay./a>) 4685./a> "v14 4         .a href="+code=delay" class="sref">delay./a> += .a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=ops" class="sref">ops./a>->.a href="+code=delay" class="sref">delay./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4686./a> 4687./a> "v14 4 if (.a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=delay" class="sref">delay./a>) 4688./a> "v14 4  "v14 4 .a href="+code=delay" class="sref">delay./a> += .a href="+code=platform" class="sref">platform./a>->.a href="+code=driver" class="sref">driver./a>->.a href="+code=delay" class="sref">delay./a>(.a href="+code=substream" class="sref">substream./a>, .a href="+code=codec_dai" class="sref">codec_dai./a>); 4689./a> 4690./a> "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=delay" class="sref">delay./a> = .a href="+code=delay" class="sref">delay./a>; 4691./a> 4692./a> "v14 4 return .a href="+code=offset" class="sref">offset./a>; 4693./a>} 4694./a> 4695./a>.spa
 class="comment">/* connect a FE and BE */./spa
  4696./a>static int .a href="+code=dpcm_be_connect" class="sref">dpcm_be_connect./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, 4697./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a>, int .a href="+code=stream" class="sref">stream./a>) 4698./a>{ 4699./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4700./a> 4701./a> "v14 4 .spa
 class="comment">/* only add new dpcms */./spa
  4702./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 4703./a> "v14 4  "v14 4 if (.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a> == .a href="+code=be" class="sref">b
./a> && .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a> == .a href="+code=fe" class="sref">f
./a>) 4704./a> "v14 4                 return 0; 4705./a> "v14 4 } 4706./a> 4707./a> "v14 4 .a href="+code=dpcm" class="sref">dpcm./a> = .a href="+code=kzalloc" class="sref">kzalloc./a>(sizeof(struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a>), .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4708./a> "v14 4 if (!.a href="+code=dpcm" class="sref">dpcm./a>) 4709./a> "v14 4  "v14 4 return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4710./a> 4711./a> "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a> = .a href="+code=be" class="sref">b
./a>; 4712./a> "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a> = .a href="+code=fe" class="sref">f
./a>; 4713./a> "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime" class="sref">runtime./a> = .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime" class="sref">runtime./a>; 4714./a> "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_LINK_STATE_NEW" class="sref">SND_SOC_DPCM_LINK_STATE_NEW./a>; 4715./a> "v14 4 .a href="+code=list_add" class="sref">list_add./a>(&.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=list_be" class="sref">list_be./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>); 4716./a> "v14 4 .a href="+code=list_add" class="sref">list_add./a>(&.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=list_fe" class="sref">list_fe./a>, &.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=fe_clients" class="sref">fe_clients./a>); 4717./a> 4718./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"  connected new DPCM %s path %s %s %s\n"./spa
 , 4719./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 ,4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, 4720./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"<-"./spa
  : .spa
 class="string">"->"./spa
 ,4.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 4721./a> 4722./a>#ifdef4.a href="+code=CONFIG_DEBUG_FS" class="sref">CONFIG_DEBUG_FS./a> 4723./a> "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=debugfs_state" class="sref">debugfs_state./a> = .a href="+code=debugfs_create_u32" class="sref">debugfs_create_u32./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, 0644, 4724./a> "v14 4  "v14 4  "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=debugfs_dpcm_root" class="sref">debugfs_dpcm_root./a>, &.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=state" class="sref">state./a>); 4725./a>#endif 4726./a> "v14 4 return 1; 4727./a>} 4728./a> 4729./a>.spa
 class="comment">/* reparent a BE onto another FE */./spa
  4730./a>static void .a href="+code=dpcm_be_reparent" class="sref">dpcm_be_reparent./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, 4731./a> "v14 4  "v14 4         struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a>, int .a href="+code=stream" class="sref">stream./a>) 4732./a>{ 4733./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4734./a> "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=fe_substream" class="sref">fe_substream./a>, *.a href="+code=be_substream" class="sref">be_substream./a>; 4735./a> 4736./a> "v14 4 .spa
 class="comment">/* reparent if BE is connected to other FEs */./spa
  4737./a> "v14 4 if (!.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a>) 4738./a> "v14 4  "v14 4 return; 4739./a> 4740./a> "v14 4 .a href="+code=be_substream" class="sref">be_substream./a> = .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4741./a> 4742./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=fe_clients" class="sref">fe_clients./a>, .a href="+code=list_fe" class="sref">list_fe./a>) { 4743./a> "v14 4  "v14 4 if (.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a> == .a href="+code=fe" class="sref">f
./a>) 4744./a> "v14 4  "v14 4  "v14 4 continue; 4745./a> 4746./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"  reparent %s path %s %s %s\n"./spa
 , 4747./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 4748./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, 4749./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"<-"./spa
  : .spa
 class="string">"->"./spa
 ,4.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 4750./a> 4751./a> "v14 4  "v14 4 .a href="+code=fe_substream" class="sref">fe_substream./a> = .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a>,4.a href="+code=stream" class="sref">stream./a>); 4752./a> "v14 4  "v14 4 .a href="+code=be_substream" class="sref">be_substream./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=runtime" class="sref">runtime./a>; 4753./a> "v14 4  "v14 4 break; 4754./a> "v14 4 } 4755./a>} 4756./a> 4757./a>.spa
 class="comment">/* disconnect a BE and FE */./spa
  4758./a>static void .a href="+code=dpcm_be_disconnect" class="sref">dpcm_be_disconnect./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 4759./a>{ 4760./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>, *.a href="+code=d" class="sref">d./a>; 4761./a> 4762./a> "v14 4 .a href="+code=list_for_each_entry_safe" class="sref">list_for_each_entry_safe./a>(.a href="+code=dpcm" class="sref">dpcm./a>, .a href="+code=d" class="sref">d./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 4763./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"BE %s disconnect check for %s\n"./spa
 , 4764./a> "v14 4  "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 4765./a> "v14 4          "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 4766./a> 4767./a> "v14 4  "v14 4 if (.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_LINK_STATE_FREE" class="sref">SND_SOC_DPCM_LINK_STATE_FREE./a>) 4768./a> "v14 4  "v14 4  "v14 4 continue; 4769./a> 4770./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"  freed DSP %s path %s %s %s\n"./spa
 , 4771./a> "v14 4  "v14 4         .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, 4772./a> "v14 4  "v14 4         .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"<-"./spa
  : .spa
 class="string">"->"./spa
 ,4.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 4773./a> 4774./a> "v14 4  "v14 4 .spa
 class="comment">/* BEs still alive need new FE */./spa
  4775./a> "v14 4         .a href="+code=dpcm_be_reparent" class="sref">dpcm_be_reparent./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4776./a> 4777./a>#ifdef4.a href="+code=CONFIG_DEBUG_FS" class="sref">CONFIG_DEBUG_FS./a> 4778./a> "v14 4  "v14 4 .a href="+code=debugfs_remove" class="sref">debugfs_remove./a>(.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=debugfs_state" class="sref">debugfs_state./a>); 4779./a>#endif 4780./a> "v14 4  "v14 4 .a href="+code=list_del" class="sref">list_del./a>(&.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=list_be" class="sref">list_be./a>); 4781./a> "v14 4  "v14 4 .a href="+code=list_del" class="sref">list_del./a>(&.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=list_fe" class="sref">list_fe./a>); 4782./a> "v14 4  "v14 4 .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=dpcm" class="sref">dpcm./a>); 4783./a> "v14 4 } 4784./a>} 4785./a> 4786./a>.spa
 class="comment">/* get BE for DAI widget and stream */./spa
  4787./a>static struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=dpcm_get_be" class="sref">dpcm_get_be./a>(struct .a href="+code=snd_soc_card" class="sref">snd_soc_card./a> *.a href="+code=card" class="sref">card./a>, 4788./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> *.a href="+code=widget" class="sref">widget./a>, int .a href="+code=stream" class="sref">stream./a>) 4789./a>{ 4790./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a>; 4791./a> "v14 4 int .a href="+code=i" class="sref">i./a>; 4792./a> 4793./a> "v14 4 if (.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 4794./a> "v14 4  "v14 4 for (.a href="+code=i" class="sref">i./a> = 0; .a href="+code=i" class="sref">i./a> < .a href="+code=card" class="sref">card./a>->.a href="+code=num_links" class="sref">num_links./a>; .a href="+code=i" class="sref">i./a>++) { 4795./a> "v14 4          "v14 4 .a href="+code=be" class="sref">b
./a> = &.a href="+code=card" class="sref">card./a>->.a href="+code=rtd" class="sref">rtd./a>[.a href="+code=i" class="sref">i./a>]; 4796./a> 4797./a> "v14 4  "v14 4  "v14 4 if (!.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=no_pcm" class="sref">no_pcm./a>) 4798./a> "v14 4  "v14 4  "v14 4         continue; 4799./a> 4800./a> "v14 4  "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=playback_widget" class="sref">playback_widget./a> == .a href="+code=widget" class="sref">widget./a> || 4801./a> "v14 4  "v14 4          "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=playback_widget" class="sref">playback_widget./a> == .a href="+code=widget" class="sref">widget./a>) 4802./a> "v14 4  "v14 4                 return .a href="+code=be" class="sref">b
./a>; 4803./a> "v14 4  "v14 4 } 4804./a> "v14 4 } else { 4805./a> 4806./a> "v14 4  "v14 4 for (.a href="+code=i" class="sref">i./a> = 0; .a href="+code=i" class="sref">i./a> < .a href="+code=card" class="sref">card./a>->.a href="+code=num_links" class="sref">num_links./a>; .a href="+code=i" class="sref">i./a>++) { 4807./a> "v14 4  "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a> = &.a href="+code=card" class="sref">card./a>->.a href="+code=rtd" class="sref">rtd./a>[.a href="+code=i" class="sref">i./a>]; 4808./a> 4809./a> "v14 4  "v14 4         if (!.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=no_pcm" class="sref">no_pcm./a>) 4810./a> "v14 4  "v14 4  "v14 4         continue; 4811./a> 4812./a> "v14 4  "v14 4         if (.a href="+code=be" class="sref">b
./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=capture_widget" class="sref">capture_widget./a> == .a href="+code=widget" class="sref">widget./a> || 4813./a> "v14 4  "v14 4  "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=capture_widget" class="sref">capture_widget./a> == .a href="+code=widget" class="sref">widget./a>) 4814./a> "v14 4  "v14 4  "v14 4  "v14 4 return .a href="+code=be" class="sref">b
./a>; 4815./a> "v14 4         } 4816./a> "v14 4 } 4817./a> 4818./a> "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=card" class="sref">card./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't get %s BE for %s\n"./spa
 , 4819./a> "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , .a href="+code=widget" class="sref">widget./a>->.a href="+code=nam
" class="sref">nam
./a>); 4820./a> "v14 4 return .a href="+code=NULL" class="sref">NULL./a>; 4821./a>} 4822./a> 4823./a>static .a href="+code=inline" class="sref">inline./a> struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> * 4824./a> "v14 4 .a href="+code=rtd_get_cpu_widget" class="sref">rtd_get_cpu_widget./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a>, int .a href="+code=stream" class="sref">stream./a>) 4825./a>{ 4826./a> "v14 4 if (.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) 4827./a> "v14 4  "v14 4 return .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=playback_widget" class="sref">playback_widget./a>; 4828./a> "v14 4 else 4829./a> "v14 4  "v14 4 return .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=capture_widget" class="sref">capture_widget./a>; 4830./a>} 4831./a> 4832./a>static .a href="+code=inline" class="sref">inline./a> struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> * 4833./a> "v14 4 .a href="+code=rtd_get_codec_widget" class="sref">rtd_get_codec_widget./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a>, int .a href="+code=stream" class="sref">stream./a>) 4834./a>{ 4835./a> "v14 4 if (.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) 4836./a> "v14 4  "v14 4 return .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=playback_widget" class="sref">playback_widget./a>; 4837./a> "v14 4 else 4838./a> "v14 4  "v14 4 return .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=codec_dai" class="sref">codec_dai./a>->.a href="+code=capture_widget" class="sref">capture_widget./a>; 4839./a>} 4840./a> 4841./a>static int .a href="+code=widget_in_list" class="sref">widget_in_list./a>(struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> *.a href="+code=list" class="sref">list./a>, 4842./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> *.a href="+code=widget" class="sref">widget./a>) 4843./a>{ 4844./a> "v14 4 int .a href="+code=i" class="sref">i./a>; 4845./a> 4846./a> "v14 4 for (.a href="+code=i" class="sref">i./a> = 0; .a href="+code=i" class="sref">i./a> < .a href="+code=list" class="sref">list./a>->.a href="+code=num_widgets" class="sref">num_widgets./a>; .a href="+code=i" class="sref">i./a>++) { 4847./a> "v14 4  "v14 4 if (.a href="+code=widget" class="sref">widget./a> == .a href="+code=list" class="sref">list./a>->.a href="+code=widgets" class="sref">widgets./a>[.a href="+code=i" class="sref">i./a>]) 4848./a> "v14 4  "v14 4  "v14 4 return 1; 4849./a> "v14 4 } 4850./a> 4851./a> "v14 4 return 0; 4852./a>} 4853./a> 4854./a>static int .a href="+code=dpcm_path_get" class="sref">dpcm_path_get./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, 4855./a> "v14 4 int .a href="+code=stream" class="sref">stream./a>, struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> **.a href="+code=list_" class="sref">list_./a>) 4856./a>{ 4857./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=fe" class="sref">f
./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 4858./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> *.a href="+code=list" class="sref">list./a>; 4859./a> "v14 4 int .a href="+code=paths" class="sref">paths./a>; 4860./a> 4861./a> "v14 4 .a href="+code=list" class="sref">list./a> = .a href="+code=kzalloc" class="sref">kzalloc./a>(sizeof(struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a>) + 4862./a> "v14 4  "v14 4         sizeof(struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> *), .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4863./a> "v14 4 if (.a href="+code=list" class="sref">list./a> == .a href="+code=NULL" class="sref">NULL./a>) 4864./a> "v14 4  "v14 4 return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4865./a> 4866./a> "v14 4 .spa
 class="comment">/* get number of valid DAI paths and their widgets */./spa
  4867./a> "v14 4 .a href="+code=paths" class="sref">paths./a> = .a href="+code=snd_soc_dapm_dai_get_connected_widgets" class="sref">snd_soc_dapm_dai_get_connected_widgets./a>(.a href="+code=cpu_dai" class="sref">cpu_dai./a>,4.a href="+code=stream" class="sref">stream./a>, &.a href="+code=list" class="sref">list./a>); 4868./a> 4869./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"found %d audio %s paths\n"./spa
 , .a href="+code=paths" class="sref">paths./a>, 4870./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 ); 4871./a> 4872./a> "v14 4 *.a href="+code=list_" class="sref">list_./a> = .a href="+code=list" class="sref">list./a>; 4873./a> "v14 4 return .a href="+code=paths" class="sref">paths./a>; 4874./a>} 4875./a> 4876./a>static .a href="+code=inline" class="sref">inline./a> void .a href="+code=dpcm_path_put" class="sref">dpcm_path_put./a>(struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> **.a href="+code=list" class="sref">list./a>) 4877./a>{ 4878./a> "v14 4 .a href="+code=kfree" class="sref">kfree./a>(*.a href="+code=list" class="sref">list./a>); 4879./a>} 4880./a> 4881./a>static int .a href="+code=dpcm_prune_paths" class="sref">dpcm_prune_paths./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>, 4882./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> **.a href="+code=list_" class="sref">list_./a>) 4883./a>{ 4884./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4885./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> *.a href="+code=list" class="sref">list./a> = *.a href="+code=list_" class="sref">list_./a>; 4886./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget" class="sref">snd_soc_dapm_widget./a> *.a href="+code=widget" class="sref">widget./a>; 4887./a> "v14 4 int .a href="+code=prune" class="sref">prune./a> = 0; 4888./a> 4889./a> "v14 4 .spa
 class="comment">/* Destroy any old FE <--> BE connections */./spa
  4890./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 4891./a> 4892./a> "v14 4  "v14 4 .spa
 class="comment">/* is there a valid CPU DAI widget for this BE */./spa
  4893./a> "v14 4  "v14 4 .a href="+code=widget" class="sref">widget./a> = .a href="+code=rtd_get_cpu_widget" class="sref">rtd_get_cpu_widget./a>(.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4894./a> 4895./a> "v14 4         .spa
 class="comment">/* prune the BE if it's no longer in our active list */./spa
  4896./a> "v14 4  "v14 4 if (.a href="+code=widget" class="sref">widget./a> && .a href="+code=widget_in_list" class="sref">widget_in_list./a>(.a href="+code=list" class="sref">list./a>, .a href="+code=widget" class="sref">widget./a>)) 4897./a> "v14 4  "v14 4  "v14 4 continue; 4898./a> 4899./a> "v14 4  "v14 4 .spa
 class="comment">/* is there a valid CODEC DAI widget for this BE */./spa
  4900./a> "v14 4  "v14 4 .a href="+code=widget" class="sref">widget./a> = .a href="+code=rtd_get_codec_widget" class="sref">rtd_get_codec_widget./a>(.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4901./a> 4902./a> "v14 4  "v14 4 .spa
 class="comment">/* prune the BE if it's no longer in our active list */./spa
  4903./a> "v14 4  "v14 4 if (.a href="+code=widget" class="sref">widget./a> && .a href="+code=widget_in_list" class="sref">widget_in_list./a>(.a href="+code=list" class="sref">list./a>, .a href="+code=widget" class="sref">widget./a>)) 4904./a> "v14 4  "v14 4  "v14 4 continue; 4905./a> 4906./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"pruning %s BE %s for %s\n"./spa
 , 4907./a> "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 4908./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>, .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 4909./a> "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_LINK_STATE_FREE" class="sref">SND_SOC_DPCM_LINK_STATE_FREE./a>; 4910./a> "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_BE" class="sref">SND_SOC_DPCM_UPDATE_BE./a>; 4911./a> "v14 4  "v14 4 .a href="+code=prune" class="sref">prune./a>++; 4912./a> "v14 4 } 4913./a> 4914./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"found %d old BE paths for pruning\n"./spa
 , .a href="+code=prune" class="sref">prune./a>); 4915./a> "v14 4 return .a href="+code=prune" class="sref">prune./a>; 4916./a>} 4917./a> 4918./a>static int .a href="+code=dpcm_add_paths" class="sref">dpcm_add_paths./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>, 4919./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> **.a href="+code=list_" class="sref">list_./a>) 4920./a>{ 4921./a> "v14 4 struct .a href="+code=snd_soc_card" class="sref">snd_soc_card./a> *.a href="+code=card" class="sref">card./a> = .a href="+code=fe" class="sref">f
./a>->.a href="+code=card" class="sref">card./a>; 4922./a> "v14 4 struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> *.a href="+code=list" class="sref">list./a> = *.a href="+code=list_" class="sref">list_./a>; 4923./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a>; 4924./a> "v14 4 int .a href="+code=i" class="sref">i./a>, .a href="+code=new" class="sref">new./a> = 0, .a href="+code=err" class="sref">err./a>; 4925./a> 4926./a> "v14 4 .spa
 class="comment">/* Create any new FE <--> BE connections */./spa
  4927./a> "v14 4 for (.a href="+code=i" class="sref">i./a> = 0; .a href="+code=i" class="sref">i./a> < .a href="+code=list" class="sref">list./a>->.a href="+code=num_widgets" class="sref">num_widgets./a>; .a href="+code=i" class="sref">i./a>++) { 4928./a> 4929./a> "v14 4  "v14 4 if (.a href="+code=list" class="sref">list./a>->.a href="+code=widgets" class="sref">widgets./a>[.a href="+code=i" class="sref">i./a>]->.a href="+code=id" class="sref">id./a> != .a href="+code=snd_soc_dapm_dai" class="sref">snd_soc_dapm_dai./a>) 4930./a> "v14 4  "v14 4  "v14 4 continue; 4931./a> 4932./a> "v14 4  "v14 4 .spa
 class="comment">/* is there a valid BE rtd for this widget */./spa
  4933./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm_get_be" class="sref">dpcm_get_be./a>(.a href="+code=card" class="sref">card./a>, .a href="+code=list" class="sref">list./a>->.a href="+code=widgets" class="sref">widgets./a>[.a href="+code=i" class="sref">i./a>],4.a href="+code=stream" class="sref">stream./a>); 4934./a> "v14 4  "v14 4 if (!.a href="+code=be" class="sref">b
./a>) { 4935./a> "v14 4          "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no BE found for %s\n"./spa
 , 4936./a> "v14 4  "v14 4  "v14 4          "v14 4 .a href="+code=list" class="sref">list./a>->.a href="+code=widgets" class="sref">widgets./a>[.a href="+code=i" class="sref">i./a>]->.a href="+code=nam
" class="sref">nam
./a>); 4937./a> "v14 4  "v14 4  "v14 4 continue; 4938./a> "v14 4  "v14 4 } 4939./a> 4940./a> "v14 4  "v14 4 .spa
 class="comment">/* make sure BE is a real BE */./spa
  4941./a> "v14 4  "v14 4 if (!.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=no_pcm" class="sref">no_pcm./a>) 4942./a> "v14 4  "v14 4  "v14 4 continue; 4943./a> 4944./a> "v14 4  "v14 4 .spa
 class="comment">/* don't connect if FE is not running */./spa
  4945./a> "v14 4         if (!.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime" class="sref">runtime./a>) 4946./a> "v14 4  "v14 4  "v14 4 continue; 4947./a> 4948./a> "v14 4  "v14 4 .spa
 class="comment">/* newly connected FE and BE */./spa
  4949./a> "v14 4  "v14 4 .a href="+code=err" class="sref">err./a> = .a href="+code=dpcm_be_connect" class="sref">dpcm_be_connect./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4950./a> "v14 4  "v14 4 if (.a href="+code=err" class="sref">err./a> < 0) { 4951./a> "v14 4  "v14 4         .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"can't connect %s\n"./spa
 , 4952./a> "v14 4  "v14 4                 .a href="+code=list" class="sref">list./a>->.a href="+code=widgets" class="sref">widgets./a>[.a href="+code=i" class="sref">i./a>]->.a href="+code=nam
" class="sref">nam
./a>); 4953./a> "v14 4  "v14 4  "v14 4 break; 4954./a> "v14 4  "v14 4 } else if (.a href="+code=err" class="sref">err./a> == 0) .spa
 class="comment">/* already connected */./spa
  4955./a> "v14 4          "v14 4 continue; 4956./a> 4957./a> "v14 4  "v14 4 .spa
 class="comment">/* new */./spa
  4958./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_BE" class="sref">SND_SOC_DPCM_UPDATE_BE./a>; 4959./a> "v14 4  "v14 4 .a href="+code=new" class="sref">new./a>++; 4960./a> "v14 4 } 4961./a> 4962./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"found %d new BE paths\n"./spa
 , .a href="+code=new" class="sref">new./a>); 4963./a> "v14 4 return .a href="+code=new" class="sref">new./a>; 4964./a>} 4965./a> 4966./a>.spa
 class="comment">/*./spa
  4967./a>.spa
 class="comment"> * Find the corresponding BE DAIs that source or sink audio to this./spa
  4968./a>.spa
 class="comment"> * FE substream../spa
  4969./a>.spa
 class="comment"> */./spa
  4970./a>static int .a href="+code=dpcm_process_paths" class="sref">dpcm_process_paths./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, 4971./a> "v14 4 int .a href="+code=stream" class="sref">stream./a>, struct .a href="+code=snd_soc_dapm_widget_list" class="sref">snd_soc_dapm_widget_list./a> **.a href="+code=list" class="sref">list./a>, int .a href="+code=new" class="sref">new./a>) 4972./a>{ 4973./a> "v14 4 if (.a href="+code=new" class="sref">new./a>) 4974./a> "v14 4  "v14 4 return .a href="+code=dpcm_add_paths" class="sref">dpcm_add_paths./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=stream" class="sref">stream./a>, .a href="+code=list" class="sref">list./a>); 4975./a> "v14 4 else 4976./a> "v14 4  "v14 4 return .a href="+code=dpcm_prune_paths" class="sref">dpcm_prune_paths./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=stream" class="sref">stream./a>, .a href="+code=list" class="sref">list./a>); 4977./a>} 4978./a> 4979./a>static void .a href="+code=dpcm_clear_pending_state" class="sref">dpcm_clear_pending_state./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 4980./a>{ 4981./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4982./a> 4983./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) 4984./a> "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = 4985./a> "v14 4          "v14 4                         .a href="+code=SND_SOC_DPCM_UPDATE_NO" class="sref">SND_SOC_DPCM_UPDATE_NO./a>; 4986./a>} 4987./a> 4988./a>static void .a href="+code=dpcm_be_dai_startup_unwind" class="sref">dpcm_be_dai_startup_unwind./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, 4989./a> "v14 4 int .a href="+code=stream" class="sref">stream./a>) 4990./a>{ 4991./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 4992./a> 4993./a> "v14 4 .spa
 class="comment">/* disable any enabled and non active backends */./spa
  4994./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 4995./a> 4996./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 4997./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 4998./a> "v14 4  "v14 4  "v14 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 4999./a> 1000./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> == 0)
1001./a> "v14 4  "v14 4         .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no users %s at close - state %d\n"./spa
 , 1002./a> "v14 4  "v14 4                 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 1003./a> "v14 4  "v14 4  "v14 4         .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a>); 1004./a> 1005./a> "v14 4         if (--.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> != 0)
1006./a> "v14 4  "v14 4  "v14 4 continue; 1007./a> 1008./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>) 1009./a> "v14 4  "v14 4  "v14 4 continue; 1010./a> 1011./a> "v14 4  "v14 4 .a href="+code=soc_pcm_close" class="sref">soc_pcm_close./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1012./a> "v14 4  "v14 4 .a href="+code=be_substream" class="sref">be_substream./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=NULL" class="sref">NULL./a>; 1013./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>; 1014./a> "v14 4 } 1015./a>} 1016./a> 1017./a>static int .a href="+code=dpcm_be_dai_startup" class="sref">dpcm_be_dai_startup./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 1018./a>{ 1019./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 1020./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a href="+code=count" class="sref">count./a> = 0; 1021./a> 1022./a> "v14 4 .spa
 class="comment">/* only startup BE DAIs that are either sinks or sources to this FE DAI */./spa
  1023./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1024./a> 1025./a> "v14 4         struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1026./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1027./a> "v14 4  "v14 4  "v14 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1028./a> 1029./a> "v14 4  "v14 4 .spa
 class="comment">/* is this op for this BE ? */./spa
  1030./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1031./a> "v14 4  "v14 4         continue; 1032./a> 1033./a> "v14 4  "v14 4 .spa
 class="comment">/* first time the dpcm is open ? */./spa
  1034./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> == .a href="+code=DPCM_MAX_BE_USERS" class="sref">DPCM_MAX_BE_USERS./a>) 1035./a> "v14 4          "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"too many users %s at open %d\n"./spa
 , 1036./a> "v14 4  "v14 4  "v14 4         .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 1037./a> "v14 4  "v14 4  "v14 4         .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a>); 1038./a> 1039./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a>++ != 0)
1040./a> "v14 4  "v14 4         continue; 1041./a> 1042./a> "v14 4  "v14 4 if ((.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_NEW" class="sref">SND_SOC_DPCM_STATE_NEW./a>) && 1043./a> "v14 4  "v14 4  "v1(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>)) 1044./a> "v14 4  "v14 4  "v14 4 continue; 1045./a> 1046./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: open BE %s\n"./spa
 , .a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1047./a> 1048./a> "v14 4  "v14 4 .a href="+code=be_substream" class="sref">be_substream./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime" class="sref">runtime./a>; 1049./a> "v14 4  "v14 4 .a href="+code=err" class="sref">err./a> = .a href="+code=soc_pcm_open" class="sref">soc_pcm_open./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1050./a> "v14 4  "v14 4 if (.a href="+code=err" class="sref">err./a> < 0) { 1051./a> "v14 4  "v14 4         .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"BE open failed %d\n"./spa
 , .a href="+code=err" class="sref">err./a>); 1052./a> "v14 4  "v14 4         .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a>--; 1053./a> "v14 4  "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> < 0) 1054./a> "v14 4  "v14 4  "v14 4         .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no users %s at unwind %d\n"./spa
 , 1055./a> "v14 4          "v14 4                 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 1056./a> "v14 4  "v14 4  "v14 4          "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a>); 1057./a> 1058./a> "v14 4  "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>; 1059./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=unwind" class="sref">unwind./a>; 1060./a> "v14 4  "v14 4 } 1061./a> 1062./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>; 1063./a> "v14 4  "v14 4 .a href="+code=count" class="sref">count./a>++; 1064./a> "v14 4 } 1065./a> 1066./a> "v14 4 return .a href="+code=count" class="sref">count./a>; 1067./a> 1068./a>.a href="+code=unwind" class="sref">unwind./a>: 1069./a> "v14 4 .spa
 class="comment">/* disable any enabled and non active backends */./spa
  1070./a> "v14 4 .a href="+code=list_for_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1071./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1072./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1073./a> "v14 4  "v14 4  "v14 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1074./a> 1075./a> "v14 4         if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1076./a> "v14 4  "v14 4  "v14 4 continue; 1077./a> 1078./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> == 0)
1079./a> "v14 4  "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no users %s at close %d\n"./spa
 , 1080./a> "v14 4  "v14 4  "v14 4         .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 1081./a> "v14 4  "v14 4                 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a>); 1082./a> 1083./a> "v14 4  "v14 4 if (--.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> != 0)
1084./a> "v14 4  "v14 4  "v14 4 continue; 1085./a> 1086./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>) 1087./a> "v14 4  "v14 4  "v14 4 continue; 1088./a> 1089./a> "v14 4  "v14 4 .a href="+code=soc_pcm_close" class="sref">soc_pcm_close./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1090./a> "v14 4  "v14 4 .a href="+code=be_substream" class="sref">be_substream./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=NULL" class="sref">NULL./a>; 1091./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>; 1092./a> "v14 4 } 1093./a> 1094./a> "v14 4 return .a href="+code=err" class="sref">err./a>; 1095./a>} 1096./a> 1097./a>static void .a href="+code=dpcm_set_fe_runtime" class="sref">dpcm_set_fe_runtime./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 1098./a>{ 1099./a> "v14 4 struct .a href="+code=snd_pcm_runtime" class="sref">snd_pcm_runtime./a> *.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=runtime" class="sref">runtime./a>; 1100./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=rtd" class="sref">rtd./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 1101./a> "v14 4 struct .a href="+code=snd_soc_dai" class="sref">snd_soc_dai./a> *.a href="+code=cpu_dai" class="sref">cpu_dai./a> = .a href="+code=rtd" class="sref">rtd./a>->.a href="+code=cpu_dai" class="sref">cpu_dai./a>; 1102./a> "v14 4 struct .a href="+code=snd_soc_dai_driver" class="sref">snd_soc_dai_driver./a> *.a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a> = .a href="+code=cpu_dai" class="sref">cpu_dai./a>->.a href="+code=driver" class="sref">driver./a>; 1103./a> 1104./a> "v14 4 if (.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a> == .a href="+code=SNDRV_PCM_STREAM_PLAYBACK" class="sref">SNDRV_PCM_STREAM_PLAYBACK./a>) { 1105./a> "v14 4         .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_min" class="sref">rate_min./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_min" class="sref">rate_min./a>; 1106./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_max" class="sref">rate_max./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rate_max" class="sref">rate_max./a>; 1107./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_min" class="sref">channels_min./a>; 1108./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=channels_max" class="sref">channels_max./a>; 1109./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=formats" class="sref">formats./a> &= .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=formats" class="sref">formats./a>; 1110./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=playback" class="sref">playback./a>..a href="+code=rates" class="sref">rates./a>; 1111./a> "v14 4 } else { 1112./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_min" class="sref">rate_min./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_min" class="sref">rate_min./a>; 1113./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rate_max" class="sref">rate_max./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rate_max" class="sref">rate_max./a>; 1114./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_min" class="sref">channels_min./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_min" class="sref">channels_min./a>; 1115./a> "v14 4         .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=channels_max" class="sref">channels_max./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=channels_max" class="sref">channels_max./a>; 1116./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=formats" class="sref">formats./a> &= .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=formats" class="sref">formats./a>; 1117./a> "v14 4  "v14 4 .a href="+code=runtime" class="sref">runtime./a>->.a href="+code=hw" class="sref">hw./a>..a href="+code=rates" class="sref">rates./a> = .a href="+code=cpu_dai_drv" class="sref">cpu_dai_drv./a>->.a href="+code=capture" class="sref">capture./a>..a href="+code=rates" class="sref">rates./a>; 1118./a> "v14 4 } 1119./a>} 1120./a> 1121./a>static int .a href="+code=dpcm_fe_dai_startup" class="sref">dpcm_fe_dai_startup./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=fe_substream" class="sref">fe_substream./a>) 1122./a>{ 1123./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a> = .a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 1124./a> "v14 4 struct .a href="+code=snd_pcm_runtime" class="sref">snd_pcm_runtime./a> *.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=runtime" class="sref">runtime./a>; 1125./a> "v14 4 int .a href="+code=stream" class="sref">stream./a> = .a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=stream" class="sref">stream./a>,4.a href="+code=ret" class="sref">ret./a> = 0; 1126./a> 1127./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_FE" class="sref">SND_SOC_DPCM_UPDATE_FE./a>; 1128./a> 1129./a> "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=dpcm_be_dai_startup" class="sref">dpcm_be_dai_startup./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=stream" class="sref">stream./a>); 1130./a> "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 1131./a> "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>,.spa
 class="string">"dpcm: failed to start some BEs %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 1132./a> "v14 4  "v14 4 goto .a href="+code=be_err" class="sref">be_err./a>; 1133./a> "v14 4 } 1134./a> 1135./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: open FE %s\n"./spa
 , .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1136./a> 1137./a> "v14 4 .spa
 class="comment">/* start the DAI frontend */./spa
  1138./a> "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=soc_pcm_open" class="sref">soc_pcm_open./a>(.a href="+code=fe_substream" class="sref">fe_substream./a>); 1139./a> "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 1140./a> "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>,.spa
 class="string">"dpcm: failed to start FE %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 1141./a> "v14 4  "v14 4 goto .a href="+code=unwind" class="sref">unwind./a>; 1142./a> "v14 4 } 1143./a> 1144./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>; 1145./a> 1146./a> "v14 4 .a href="+code=dpcm_set_fe_runtime" class="sref">dpcm_set_fe_runtime./a>(.a href="+code=fe_substream" class="sref">fe_substream./a>); 1147./a> "v14 4 .a href="+code=snd_pcm_limit_hw_rates" class="sref">snd_pcm_limit_hw_rates./a>(.a href="+code=runtime" class="sref">runtime./a>); 1148./a> 1149./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_NO" class="sref">SND_SOC_DPCM_UPDATE_NO./a>; 1150./a> "v14 4 return 0; 1151./a> 1152./a>.a href="+code=unwind" class="sref">unwind./a>: 1153./a> "v14 4 .a href="+code=dpcm_be_dai_startup_unwind" class="sref">dpcm_be_dai_startup_unwind./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=fe_substream" class="sref">fe_substream./a>->.a href="+code=stream" class="sref">stream./a>); 1154./a>.a href="+code=be_err" class="sref">be_err./a>: 1155./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_NO" class="sref">SND_SOC_DPCM_UPDATE_NO./a>; 1156./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 1157./a>} 1158./a> 1159./a>static int .a href="+code=dpcm_be_dai_shutdown" class="sref">dpcm_be_dai_shutdown./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 1160./a>{ 1161./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 1162./a> 1163./a> "v14 4 .spa
 class="comment">/* only shutdown BEs that are either sinks or sources to this FE DAI */./spa
  1164./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1165./a> 1166./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1167./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1168./a> "v14 4  "v14 4  "v14 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1169./a> 1170./a> "v14 4  "v14 4 .spa
 class="comment">/* is this op for this BE ? */./spa
  1171./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1172./a> "v14 4  "v14 4         continue; 1173./a> 1174./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> == 0)
1175./a> "v14 4          "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no users %s at close - state %d\n"./spa
 , 1176./a> "v14 4  "v14 4  "v14 4  "v14 4 .a href="+code=stream" class="sref">stream./a> ? .spa
 class="string">"capture"./spa
  : .spa
 class="string">"playback"./spa
 , 1177./a> "v14 4  "v14 4  "v14 4         .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a>); 1178./a> 1179./a> "v14 4  "v14 4 if (--.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=users" class="sref">users./a> != 0)
1180./a> "v14 4  "v14 4  "v14 4 continue; 1181./a> 1182./a> "v14 4  "v14 4 if ((.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1183./a> "v14 4  "v14 4     (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>))
1184./a> "v14 4  "v14 4  "v14 4 continue; 1185./a> 1186./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: close BE %s\n"./spa
 , 1187./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1188./a> 1189./a> "v14 4  "v14 4 .a href="+code=soc_pcm_close" class="sref">soc_pcm_close./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1190./a> "v14 4  "v14 4 .a href="+code=be_substream" class="sref">be_substream./a>->.a href="+code=runtime" class="sref">runtime./a> = .a href="+code=NULL" class="sref">NULL./a>; 1191./a> 1192./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>; 1193./a> "v14 4 } 1194./a> "v14 4 return 0; 1195./a>} 1196./a> 1197./a>static int .a href="+code=dpcm_fe_dai_shutdown" class="sref">dpcm_fe_dai_shutdown./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 1198./a>{ 1199./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 1200./a> "v14 4 int .a href="+code=stream" class="sref">stream./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a>; 1201./a> 1202./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_FE" class="sref">SND_SOC_DPCM_UPDATE_FE./a>; 1203./a> 1204./a> "v14 4 .spa
 class="comment">/* shutdown the BEs */./spa
  1205./a> "v14 4 .a href="+code=dpcm_be_dai_shutdown" class="sref">dpcm_be_dai_shutdown./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a>); 1206./a> 1207./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: close FE %s\n"./spa
 , .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1208./a> 1209./a> "v14 4 .spa
 class="comment">/* now shutdown the frontend */./spa
  1210./a> "v14 4 .a href="+code=soc_pcm_close" class="sref">soc_pcm_close./a>(.a href="+code=substream" class="sref">substream./a>); 1211./a> 1212./a> "v14 4 .spa
 class="comment">/* run the stream event for each BE */./spa
  1213./a> "v14 4 .a href="+code=dpcm_dapm_stream_event" class="sref">dpcm_dapm_stream_event./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=stream" class="sref">stream./a>,4.a href="+code=SND_SOC_DAPM_STREAM_STOP" class="sref">SND_SOC_DAPM_STREAM_STOP./a>); 1214./a> 1215./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_CLOSE" class="sref">SND_SOC_DPCM_STATE_CLOSE./a>; 1216./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_NO" class="sref">SND_SOC_DPCM_UPDATE_NO./a>; 1217./a> "v14 4 return 0; 1218./a>} 1219./a> 1220./a>static int .a href="+code=dpcm_be_dai_hw_free" class="sref">dpcm_be_dai_hw_free./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 1221./a>{ 1222./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 1223./a> 1224./a> "v14 4 .spa
 class="comment">/* only hw_params backends that are either sinks or sources./spa
  1225./a>.spa
 class="comment">  "v14 4 * to this frontend DAI */./spa
  1226./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1227./a> 1228./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1229./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1230./a> "v14 4  "v14 4  "v14 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1231./a> 1232./a> "v14 4  "v14 4 .spa
 class="comment">/* is this op for this BE ? */./spa
  1233./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1234./a> "v14 4  "v14 4  "v14 4 continue; 1235./a> 1236./a> "v14 4  "v14 4 .spa
 class="comment">/* only free hw when no longer used - check all FEs */./spa
  1237./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_free_stop" class="sref">snd_soc_dpcm_can_be_free_stop./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1238./a> "v14 4  "v14 4  "v14 4  "v14 4 continue; 1239./a> 1240./a> "v14 4  "v14 4 if ((.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_PARAMS" class="sref">SND_SOC_DPCM_STATE_HW_PARAMS./a>) && 1241./a> "v14 4  "v14 4     (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_PREPARE" class="sref">SND_SOC_DPCM_STATE_PREPARE./a>) && 1242./a> "v14 4  "v14 4     (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1243./a> "v14 4  "v14 4     (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_STOP" class="sref">SND_SOC_DPCM_STATE_STOP./a>)) 1244./a> "v14 4  "v14 4  "v14 4 continue; 1245./a> 1246./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: hw_free BE %s\n"./spa
 , 1247./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1248./a> 1249./a> "v14 4  "v14 4 .a href="+code=soc_pcm_hw_free" class="sref">soc_pcm_hw_free./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1250./a> 1251./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>; 1252./a> "v14 4 } 1253./a> 1254./a> "v14 4 return 0; 1255./a>} 1256./a> 1257./a>static int .a href="+code=dpcm_fe_dai_hw_free" class="sref">dpcm_fe_dai_hw_free./a>(struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=substream" class="sref">substream./a>) 1258./a>{ 1259./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=private_data" class="sref">private_data./a>; 1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a href="+code=stream" class="sref">stream./a> = .a href="+code=substream" class="sref">substream./a>->.a href="+code=stream" class="sref">stream./a>; 1261./a> 1262./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=fe" class="sref">f
./a>->.a href="+code=card" class="sref">card./a>->.a href="+code=mutex" class="sref">mutex./a>,4.a href="+code=SND_SOC_CARD_CLASS_RUNTIME" class="sref">SND_SOC_CARD_CLASS_RUNTIME./a>); 1263./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_FE" class="sref">SND_SOC_DPCM_UPDATE_FE./a>; 1264./a> 1265./a> "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: hw_free FE %s\n"./spa
 , .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1266./a> 1267./a> "v14 4 .spa
 class="comment">/* call hw_free on the frontend */./spa
  1268./a> "v14 4 .a href="+code=err" class="sref">err./a> = .a href="+code=soc_pcm_hw_free" class="sref">soc_pcm_hw_free./a>(.a href="+code=substream" class="sref">substream./a>); 1269./a> "v14 4 if (.a href="+code=err" class="sref">err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=fe" class="sref">f
./a>->.a href="+code=dev" class="sref">dev./a>,.spa
 class="string">"dpcm: hw_free FE %s failed\n"./spa
 , 1271./a> "v14 4  "v14 4  "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1272./a> 1273./a> "v14 4 .spa
 class="comment">/* only hw_params backends that are either sinks or sources./spa
  1274./a>.spa
 class="comment">  "v14 4 * to this frontend DAI */./spa
  1275./a> "v14 4 .a href="+code=err" class="sref">err./a> = .a href="+code=dpcm_be_dai_hw_free" class="sref">dpcm_be_dai_hw_free./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=stream" class="sref">stream./a>); 1276./a> 1277./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>; 1278./a> "v14 4 .a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_update" class="sref">runtime_update./a> = .a href="+code=SND_SOC_DPCM_UPDATE_NO" class="sref">SND_SOC_DPCM_UPDATE_NO./a>; 1279./a> 1280./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=fe" class="sref">f
./a>->.a href="+code=card" class="sref">card./a>->.a href="+code=mutex" class="sref">mutex./a>); 1281./a> "v14 4 return 0; 1282./a>} 1283./a> 1284./a>static int .a href="+code=dpcm_be_dai_hw_params" class="sref">dpcm_be_dai_hw_params./a>(struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sref">f
./a>, int .a href="+code=stream" class="sref">stream./a>) 1285./a>{ 1286./a> "v14 4 struct .a href="+code=snd_soc_dpcm" class="sref">snd_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>; 1287./a> "v14 4 int .a href="+code=ret" class="sref">ret./a>; 1288./a> 1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1290./a> 1291./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1292./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1293./a> "v14 4  "v14 4     4 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1294./a> 1295./a> "v14 4         .spa
 class="comment">/* is this op for this BE ? */./spa
  1296./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1297./a> "v14 4  "v14 4  "v14 4 continue; 1298./a> 1299./a> "v14 4  "v14 4 .spa
 class="comment">/* only allow hw_params() if no connected FEs are running */./spa
  1300./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_params" class="sref">snd_soc_dpcm_can_be_params./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1301./a> "v14 4  "v14 4  "v14 4 continue; 1302./a> 1303./a> "v14 4  "v14 4 if ((.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>) && 1304./a> "v14 4  "v14 4  "v1(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_PARAMS" class="sref">SND_SOC_DPCM_STATE_HW_PARAMS./a>) && 1305./a> "v14 4          "v1(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>)) 1306./a> "v14 4  "v14 4  "v14 4 continue; 1307./a> 1308./a> "v14 4  "v14 4 .a href="+code=dev_dbg" class="sref">dev_dbg./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"dpcm: hw_params BE %s\n"./spa
 , 1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=fe" class="sref">f
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=nam
" class="sref">nam
./a>); 1310./a> 1311./a> "v14 4  "v14 4 .spa
 class="comment">/* copy params for each dpcm */./spa
  1312./a> "v14 4  "v14 4 .a href="+code=memcpy" class="sref">memcpy./a>(&.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=hw_params" class="sref">hw_params./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=hw_params" class="sref">hw_params./a>, 1313./a> "v14 4  "v14 4     4 4         sizeof(struct .a href="+code=snd_pcm_hw_params" class="sref">snd_pcm_hw_params./a>)); 1314./a> 1315./a> "v14 4         .spa
 class="comment">/* perform any hw_params fixups */./spa
  1316./a> "v14 4  "v14 4 if (.a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=be_hw_params_fixup" class="sref">be_hw_params_fixup./a>) { 1317./a> "v14 4  "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=be" class="sref">b
./a>->.a href="+code=dai_link" class="sref">dai_link./a>->.a href="+code=be_hw_params_fixup" class="sref">be_hw_params_fixup./a>(.a href="+code=be" class="sref">b
./a>, 1318./a> "v14 4  "v14 4  "v14 4  "v14 4         &.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=hw_params" class="sref">hw_params./a>); 1319./a> "v14 4  "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 1320./a> "v14 4  "v14 4  "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, 1321./a> "v14 4  "v14 4  "v14 4  "v14 4  "v14 4 .spa
 class="string">"dpcm: hw_params BE fixup failed %d\n"./spa
 , 1322./a> "v14 4  "v14 4          "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a>); 1323./a> "v14 4  "v14 4     4 4         goto .a href="+code=unwind" class="sref">unwind./a>; 1324./a> "v14 4  "v14 4  "v14 4 } 1325./a> "v14 4         } 1326./a> 1327./a> "v14 4  "v14 4 .a href="+code=ret" class="sref">ret./a> = .a href="+code=soc_pcm_hw_params" class="sref">soc_pcm_hw_params./a>(.a href="+code=be_substream" class="sref">be_substream./a>, &.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=hw_params" class="sref">hw_params./a>); 1328./a> "v14 4  "v14 4 if (.a href="+code=ret" class="sref">ret./a> < 0) { 1329./a> "v14 4  "v14 4  "v14 4 .a href="+code=dev_err" class="sref">dev_err./a>(.a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>->.a href="+code=dev" class="sref">dev./a>, 1330./a> "v14 4  "v14 4  "v14 4  "v14 4 .spa
 class="string">"dpcm: hw_params BE failed %d\n"./spa
 , .a href="+code=ret" class="sref">ret./a>); 1331./a> "v14 4  "v14 4  "v14 4 goto .a href="+code=unwind" class="sref">unwind./a>; 1332./a> "v14 4  "v14 4 } 1333./a> 1334./a> "v14 4  "v14 4 .a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> = .a href="+code=SND_SOC_DPCM_STATE_HW_PARAMS" class="sref">SND_SOC_DPCM_STATE_HW_PARAMS./a>; 1335./a> "v14 4 } 1336./a> "v14 4 return 0; 1337./a> 1338./a>.a href="+code=unwind" class="sref">unwind./a>: 1339./a> "v14 4 .spa
 class="comment">/* disable any enabled and non active backends */./spa
  1340./a> "v14 4 .a href="+code=list_for_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=be_clients" class="sref">be_clients./a>, .a href="+code=list_be" class="sref">list_be./a>) { 1341./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=be" class="sref">b
./a> = .a href="+code=dpcm" class="sref">dpcm./a>->.a href="+code=be" class="sref">b
./a>; 1342./a> "v14 4  "v14 4 struct .a href="+code=snd_pcm_substream" class="sref">snd_pcm_substream./a> *.a href="+code=be_substream" class="sref">be_substream./a> = 1343./a> "v14 4  "v14 4     4 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">snd_soc_dpcm_get_substream./a>(.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>); 1344./a> 1345./a> "v14 4         if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1346./a> "v14 4  "v14 4         continue; 1347./a> 1348./a> "v14 4  "v14 4 .spa
 class="comment">/* only allow hw_free() if no connected FEs are running */./spa
  1349./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_free_stop" class="sref">snd_soc_dpcm_can_be_free_stop./a>(.a href="+code=fe" class="sref">f
./a>,4.a href="+code=be" class="sref">b
./a>,4.a href="+code=stream" class="sref">stream./a>)) 1350./a> "v14 4  "v14 4  "v14 4 continue; 1351./a> 1352./a> "v14 4  "v14 4 if ((.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_OPEN" class="sref">SND_SOC_DPCM_STATE_OPEN./a>) && 1353./a> "v14 4  "v14 4    (.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_PARAMS" class="sref">SND_SOC_DPCM_STATE_HW_PARAMS./a>) && 1354./a> "v14 4  "v14 4  "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_HW_FREE" class="sref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" class="sref">state./a> != .a href="+code=SND_SOC_DPCM_STATE_STOP" class="sref">SND_SOC_DPCM_STATE_STOP./a>)) 1356./a> "v14 4  "v14 4         continue; 1357./a> 1358./a> "v14 4  "v14 4 .a href="+code=soc_pcm_hw_free" class="sref">soc_pcm_hw_free./a>(.a href="+code=be_substream" class="sref">be_substream./a>); 1359./a> "v14 4 } 1360./a> 1361./a> "v14 4 return .a href="+code=ret" class="sref">ret./a>; 1362./a>} 13"+code=be" class="sref">ef="+code=stream" class="93href="+code=soc_pcm_hw_fre4 .a class="line" nam
  L1361">1361./a> eeeeeeeeee .a href="+code=SND_SOC_DPCM_UPDhrefss=" L138sref">snd_soc_dp1 "sref">SND3SOC_DPCM_UPDATE_FE./a>; <3 href36M_STATE_HW_FREE" class=""""""""""""""" class="sref">hw_params./a>, 1361./a> eeref="sound/soc/soc-pcef="+code=bPDhrefss=" L138sref">snd_soc_dp1 "state" cla>->.a href="+code=dai_3ink" 3lass="ef="+code=stream" class="sref">strcode=nam
"3class="sref">nam
./a>); <3 href3"sound/soc/socpcm.c#L1258" id  L1258" class="line" nam
  L1258">1258./a>{ 1259./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="srss="sref">strc "v14 4  "class="line" nam
  L1267"31267.3a> "v14 4 .spad_soc_dpcm./a> *.a href="+code=dpcm" class="ivate_data./a>; 1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a href="+code=stream" class="sref">3href="+cod3=soc_pcm_hw_free" class="3ref">36="+code=SND_SOC_DPCM_UPDATE_NO" class3m.c#L1269"3id  L1269" class="line" n3m
  L37sound/soc/soc-pcm.c#L1279" id  L1261" class="line" nam
  L1261">1261./a> 1262./a> "v14 4 .a href="+code=mutex_lock_nested" class="sref">mutex_lock_nested./a>(&.a href="+code=fe" class="sref">f
./a>->.a href="+code=card" class="sref">card./a>->.a href="+code=mu3t;.a href=3+code=dev" class="sref">d3v./a>3.spa
 class="s="+code=list_for_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda3sref">f
./3>->.a href="+code=dai_3ink" 3lass="sref">dai_link./a>->.a href="3code=nam
"3class="sref">nam
./a>); <3 href37ND_SOC_CARD_CLASS_RUNTIME" c copy params for each dpcm */./spa
  list_for_each_entry_continue_reverse./a>(.as="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a params./a>, &.a href="+code=fe" class="sref">f
./a>CLASS_RUNTIME" cref="sound/soc/soc-pcef="+code=UPDhrefss=" L138sref">snd_soc_dp1 am
  L12733>1273./a> "v14 4 .spa
 cl3ss="c374 4     4 4         goto .a hparams" class="sref">hw_params./a>, 1313./a> #L1274" id3 L1274" class="line" nam
3 L1273">1274./a>.spa
 class="commen" class="line" nam
  L1326">1326./a> 1283./a> 1349./a> "v14 4  "v14 4 if (as="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a class="line" nam
  L1313">1313./a> #state" cla_dai_hw_free./a>(.a href=3+code37code=SND_SOC_href="+code=hw_params" class="sref">hw_params./a>); stream./a>); <3 href37sound/soc/soc-pcm.c#L1326" id  L1326de=err" class="sref">err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=dev_e1330./a> "v14 4  "v14 4  "v14 4  "v14 4 .ste" class=3sref">state./a> = .a href3"+cod37sound/soc/soc-pcm.c#L .a href="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda3sref="+cod3ref">runtime_update./a> =3.a hr37hw_free./a>(.a href="+code=be_substream" class="sref">SND3SOC_DPCM_UPDATE_NO./a>; <3 href38/soc-pcm.c#L1359" id  L1359" class="lilass="sref3>f
./a>->.a href="+cod3=card38spa
 class="s="+code=list_fod  L1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=dev_db1321./a> "v14sref">mute3./a>); "dpcm: hw_pa">1264./a> 1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm>CLASS_RUNTIME" cref="s_rode=fe" class="sreref="s_rodeL1264">1264./a> 1321./a> "v14sode=nam
"31./a> "v14 4 return 0;  *.a href="+code=be_substream" claref="s_ch./nelsound/soc/soc-pcef="+c_ch./nelsL1264">1264./a> ref="s_" naaeL1264">1264./a>  "v14 4  "v14 4  "v14 4  "v14 4 .slass="line3 nam
  L1282">1282./a>} <3 href38e" class="sref">b
./a>,4.a href="+codesnd_soc_pc3_runtime./a> *.a href="+c3de=fe38>1274./a>.spa
pcm.c#L1266" id  L1266" class="l1266./a> stream./a>) 1326./a> 13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" cref="sound/soc/soc-pcef="+code=> "v14 4  "v14 4  "v14 4  "v14 4 .slstream" c3t .a href="+code=snd_soc_3pcm" 3lass="sref">sndref="+code=hw_params" class="sref">hw_params./a>); err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=dev_e1330./a> "v14 4  "v14 4  "v14 4  "v14 4 .s="+code=re3" class="sref">ret./a>; <3 href38sound/soc/soc-pcm.c#L1248" id  L1248  1275./a> "v14 4 .a href="+code=err" class="sref">err./a> = .a href="+code=dpcm_be_dai_hw_free" class="s3eam./a>]..3 href="+code=be_clients" 3lass=39e" class="sref} elsede=dpcm_be_dai_hw_free" class="s3eass="sref3s="sref">list_be./a>) { <3 href3"sound/soc/soc-pcm.c#L="+code=list_for_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=state" ode=be" cl3ss="sref">b
./a> = .a hre3="+co39ass="sref">dai_link./a>->.a href="3=snd_pcm_s3bstream" class="sref">snd3pcm_s3bstrearef="+code=ret"oue" nam
  L1330">ouereamnam
  L1337">1337./a> list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda3=stream" c3ass="sref">stream./a>); <3 href39>1274./a>.spa
 class="commend  L1279" class="line" nam
  L1279">1279./a> 1280./a> "v14 4 .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=fe" 3L1295" cla3s="line" nam
  L1295">1293./a> 39/soc-pcm.c#L1335" idL1360" id  L1360" class="line" nam
  L1360">1360./a> f
./a>,4.a href=3+code3be" cla href="+code=be_substream" class=) 1297./3> "v14 4  3v14 4  "v14 4 continue; <3 href3"sound/soc/soc-pcm.c#L1363" id  L1363do_4 .gge" class="sref">er1363do_4 .gge"">ef="+code=stream" class="93hrsss="line" nam
  L1285">1285./a>{ 1321./a> "v149">1299./a4 "v14 4  "v14 4 .spa
 cla4s="co4ment">/* only allow hw"+code=stream" class="93href="+code=soc_pcm_hw_fre4 .a class="line" nam
  L1361">1361./a> eeeeeeeeee .a href="+code=SND_SOC_DPCM_Uoc-pcm.c#L1363" id  cm L1280">1280./a> mdode=bPDhrefss=" L138sref">snd_soc_dp14de=fe" cla4s="sref">f
./a>,4.a href=4+code4be" cla href="sound/soc/soc-pcm.c#L13284) &d_soc_dpcm./a> *.a href="+code=dpcm" class="sref">dpcm./a>;  != .a href="+co4e=SND404und/soc/soc-
 class="commend  L1264" class="line" nam
  L1264">1264./a> 1329./a> "v14 4  "v14 4  "v14 4 .a href="+code=dev_err" class="1265./a> "v14 4 .a href="+code=dev4 .gge"ss="sref">  md1321" id  L1321" class="line" nam
  L1321">1321./a> "v14>state./a>4!= .a href="+code=SND_SOC4DPCM_4TATE_HW_PARAMS" class="sre.c#L1248" id  L1248  1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm>CLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; 1294+code40.c#L1325" id  L1325" class="line" nam4) 1326./a> es="sound4 .gge"ine" nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; hw_params./a>); ref">dpcm./a>; dev4/a>, .spa
 class="stri1307" id  L1307" clrr" class="sref">err./a> < 0) 1329./a> "v14 4  "v14 4  "v14 4 .a href="+code=dev_err" class="265./a> "v14 4 .a href="+code=dev4 .gge"ss="ound/soc/soc-pcm.c#L1330" id  L1330" class="line" nam
  L1330">1330./a> "v14 4  "v14 4  "v14 4  "v14 4 .4sref">f
./4>->.a href="+code=dai_4ink" 4lass="sref">dai_link./a>->.a href="4code=nam
"4class="sref">nam
./a>); <4 href41sound/soc/soc-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 13114/a> "41 L1361">1361./a> "v14 4 return .a href4sref">dpcm4/a>[.a href="+code=stream4 clas41ound/soc/soc-pcm.c#L1362" id  L1362" 4"v14 4  "v44 4     4 4         sizeo4(stru41sound/soc/soc-pcm.c#L1283" id  L1283" class4 .gge" class="sref">er1363" class4 .gge"">ef="+code=stream" class="93hrsss="line" nam
  L1258">1258./a>{ dpcm_be_dai_hw_params./a>(struct .a href="+code=="line" nam
  L1321">1321./a> "v14ss="sref">4nd_pcm_hw_params./a>)); <4 href4"sound/soc/soc-pcm.c#LLLLLLLLLLLLLLLLc-pcm.c#L1363" id  cm L1280">1280./a> mdode=bPDhrefss=" L138sref">snd_soc_dp145" class="4ine" nam
  L1315">1315./a4 "v1441ass="ef="+code=stream" class="sref">st4de=dai_lin4" class="sref">dai_link./4>->41sound/soc/socpcm.c#L1258" id  L1258" class="line" nam
  L1285">1285./a>{ 1286./a> 4>->.a h4ef="+code=be_hw_params_fi4up" c41> "v14 4 .spad_soc_dpcm./a> *.a href="+code=dpcm" class="6">  L1335" class="line" nam
  L1335"44         4amp;.a href="+code=dpcm" 4lass=41="+code=SND_SOC_DPCM_UPDATE_NO" class419" class=4line" nam
  L1319">1319./4> "v142class="comment">/* disable any enabled and non f="+code=dpcm" ">1288./a> 1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./CM_UCLASS_RUNTIME" ce=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">st4v_err" cla4s="sref">dev_err./a>(.a h4ef="+42350" class="line" nam
  L1350">1350./4 4  "v14 44 "v14 4  "v14 4  "v14 4 .4pa
 c4ass="string">"dpc.a href="+code=list_be" class="sref">list_be./a>) { 1341./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+4class="lin4" nam
  L1322">1322./a> "414 4 4"v14 4          "v14 4pcm./a>->.a href="+code=be" class="sref">b
./a>; 1342./a> "v14 4  "v14 4 struct .a href="+cod4ass="line"4nam
  L1323">1323./a> "v14 4  "414 4     4 4         goto .a h1258" id  L1258" class="lin_substream./a> = 1343./a> "v14 4  "v14 4     4 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">sn4wind./a>; 4a href="sound/soc/soc-pcm4c#L1344" id m_get_substream" class="sref">sn4w" class="414 4 } 1294./a> 1425./a> "v14 4         } <4 href4"sound/soc/soc-pcm.c#L1344" id  L1344" class="line" nam
  L1344">1344./a> 1345./a> "v14 4         if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+c4ream./a>, 4amp;.a href="+code=dpcm" 4lass=4sref">dpcm./a>->.a          class="sref">SND_SOC_DPCM_STATE_STOP./a>4 id  L13284 class="line" nam
  L13284>132842="+code=SND_SOC_DPCM_UPDATE_NO" class4dpcm" clas4="sref">dpcm./a>->.a h4ef="+4ode=be" class="sref">bswitchef="+code=hw_paracm L1280">1280./a> mdode=bref="+code=stream" class="sref">st4pa
 class=4string">"dpcm: hw_pa4ams B4 failed %d\n"casef="+code=dpcm" clasRV_ass=TRIGGERtreaRTa href="+code=streRV_ass=TRIGGERtreaRTreamnam
  L1337">1337./a> 13314/a> "414 4  "v14 4  "v14 4 g-pcm.c#L1344sref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" claPREPAR.a href="+code=stream" class=m" claPREPAR.ode=br>stream./a>]..a href="+code=state" class="4sref">unwi4d./a>; SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+cod4  L1332">1432./a> "v14 4  "v14 4 } <4 href4"sound/soc/soc-pcm.c#L->.a          class="sref">SND_SOC_DPCM_STATE_STOP./a>4class="sre4">state./a> = .a href="+c4de=SN43" id m_get_substream" class="sref">sn4DPCM_STATE4HW_PARAMS./a>; 1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; hw_param="sref">stream./a>]..a href="+cod4 eam./a>, 436./a> "v14 4 return 0; <4 href43ss="sref">be_hw_params_fixup./a>(.a h-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 1339./a> "v14 4 .spa44e" class="sref">b
./a>,4.a hrref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L1360">1360./a> be_clients./a>,         b5./k60">1360./a> b
./a> = .a hre4="+co4e=dpcm" class="sref">dcasef="+code=dpcm" clasRV_ass=TRIGGERtRESUsref">f
./a>->.a RV_ass=TRIGGERtRESUsrreamnam
  L1337">1337./a> snd4pcm_s4bstream./a> *.a href="+code=be1344sref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" claSUSPENDa href="+code=stre"+code=dpcm" clasUSPENDclass="sref">stream./a>]..a href="+cod4_soc_dpcm_4et_substream./a>(.a href=4+code44sound/soc/soc-pcm.c#L->.a          class="sref">SND_SOC_DPCM_STATE_STOP./a>4=stream" c4ass="sref">stream./a>); <4 href44" id m_get_substream" class="sref">sn4de=fe" cla4s="sref">f
./a>,4.a href=4+code4be" class="sref">b
./a>,4.a hr-pcm.c#L1276" i" class="line" nam
  L1326">1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref"t_substream" class="sref">sn4d335./a> "4sound/soc/soc-pcm.c#L13464 id  44a href="+code=be_hw_params_fidref="+code=hw_params" class="sref">hw_param="sref">stream./a>]..a href="+cod4> "v14 4  4v14 4         continue; <4 href4"sound/soc/soc-pcm.c#LLLLLLLLLLLLLLLLL-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 1348.4a> "v14 4  "v14 4 .spa
 c4ass="44="+code=SND_SOC_DPCM_UPDATE_NO" class4de=fe" cla4s="sref">f
./a>,4.a href=4+code4be" class="sref">b
./a>,4.a hrref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L1360">1360./a> be_clients./a>,         b5./k60">1360./a> f
./a>->.a RV_ass=TRIGGERtPAUSEtRELEASrreamnam
  L1337">1337./a>  != .a href="+co4e=SND4SOC_DPCM_STATE_OPEN" clasms_fidrefsref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" claPAUSEDa href="+code=stre"+code=dpcm" claPAUSEDclass="sref">stream./a>]..a href="+cod4>state./a>4!= .a href="+code=SND_SOC4DPCM_4TATE_HW_PARAMS" class="src/soc-pcm.c#Lcclass="sref">SND_SOC_DPCM_STATE_STOP./a>4ref">state4/a> != .a href="+code=SND4SOC_D45" id m_get_substream" class="sref">sn4=state" cl4ss="sref">state./a> != .a4href=4+code=SND_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i" class="line" nam
  L1326">1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref"t_substream" class="sref">sn4=335./a> "4sound/soc/soc-pcm.c#L13564 id  45a href="+code=be_hw_params_fidref="+code=hw_params" class="sref">hw_param="sref">stream./a>]..a href="+cod4> "v14 4  4v14 4         continue; <4 href4"sound/soc/soc-pcm.c#LLLLLLLLLLLLLLLLL-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 4oc_pc45="+code=SND_SOC_DPCM_UPDATE_NO" class4"sref">be_4ubstream./a>); b
./a>,4.a hrref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L1360">1360./a> 1359./a> "v14 4 } <4 href46ref">be_clients./a>,         b5./k60">1360./a> dpcm./a>[.a RV_ass=TRIGGERtss="reamnam
  L1337">1337./a> ret./a>; SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L13="sref">stream./a>]..a href="+cod4lass="line4 nam
  L1362">1362./a>} <4 href46ATE_HW_PARAMS" class="src/soc-pcm.c#Lcclass="sref">SND_SOC_DPCM_STATE_STOP./a>4"sref">SND4SOC_DPCM_UPDATE_FE./a>; <4 href46" id m_get_substream" class="sref">sn4"state" cl4>->.a href="+code=dai_4ink" 46code=SND_SOC_DPCM_STATE_STOP"hw_free() if no connected FEs are running */./spa
  1349./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_free_stop" class="sref">snd_soc_dpcm_can_be_free_stop./a>(.a href="+c4code=nam
"4class="sref">nam
./a>); <4 href46a href="+code=be_hw_params_fi-pcm.c#Lcclass="sref">SND_SOC_DPCM_STATE_STOP./a>4" "v14 4  4class="line" nam
  L1267"41267.46297" class="line" nam
  L1297">1297./4href="+cod4=soc_pcm_hw_free" class="4ref">46a> "v14 4  "v14 4 if (.a href="+code=ret" cl" class="line" nam
  L1326">1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref"t_substream" clL1297">1297./4m.c#L1269"4id  L1269" class="line" n4m
  L47e" class="sref">b
./a>,4.a hrdref="+code=hw_params" class="sref">hw_param="sref">stream./a>]..a href="+cod4t;.a href=4+code=dev" class="sref">d4v./a>47de=be" class="sref">b
./a>->.a hre-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> f
./4>->.a href="+code=dai_4ink" 4lass="sref">dai_link./a>->.a href="4code=nam
"4class="sref">nam
./a>); <4 href47stream./a> *.a href="+code=be_substream" claCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" clas60">1360./a> 1273./a> "v14 4 .spa
 cl4ss="c474 4     4 4         goto .a hb5./k60">1360./a> 1274./a>.spaaaaaaaaacasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRIGGERtsUSPENDreamnam
  L1337">1337./a> (.a href=4+code47code=SND_SOC_DPCM_STATE_STOP"hw_f_substream" claCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" classam
  L1337">1337./a> stream./a>); <4 href47sound/soc/soc-pcm.c#L./a>.spaaaaaaaaacclass="sref">SND_SOC_DPCM_STATE_STOP./a>4te" class=4sref">state./a> = .a href4"+cod47297" class="line" nam
  L1297">1297./4sref="+cod4ref">runtime_update./a> =4.a hr47ref">dpcm./a>->.a href="+code=ree() if no connected FEs are running */./spa
  1349./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_free_stop" class="sref">snd_soc_dpcm_can_be_free_stop./a>(.a href="+c4"sref">SND4SOC_DPCM_UPDATE_NO./a>; <4 href48de=be" class="sref">b
./a>->.a hrecclass="sref">SND_SOC_DPCM_STATE_STOP./a>4lass="sref4>f
./a>->.a href="+cod4=card48350" class="line" nam
  L1350">1350./4sref">mute4./a>); "dpcm: hw_pa">1264./a> 1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref"t_substream" clL1350">1350./4sode=nam
"41./a> "v14 4 return 0;  *.a href="+code=bedref="+code=hw_params" class="sref">hw_param="sref">stream./a>]..a href="+cod4lass="line4 nam
  L1282">1282./a>} <4 href48ATE_HW_PARAMS" class="src/soc-pcm.c#L-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> sn4=stream" c4ass="sref">stream./a>) ) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" claSUSPENDa href="+code=stre"+code=dpcm" clasUSPENDclas60">1360./a> .spab5./k60">1360./a> f
./a>->.a RV_ass=TRIGGERtPAUSEtPUSHreamnam
  L1337">1337./a> ret./a>; <4 href48sound/soc/soc-pcm.c#L+code=bedref="+code=hw_paraCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L13="sref">stream./a>]..a href="+cod4eam./a>]..4 href="+code=be_clients" 4lass=49de=be" class="sref">b
./a>->.a hrecclass="sref">SND_SOC_DPCM_STATE_STOP./a>4eass="sref4s="sref">list_be./a>) { <4 href49350" class="line" nam
  L1350">1350./4ode=be" cl4ss="sref">b
./a> = .a hre4="+co494 4  "v14 4  "v14 4 g-pcm.c#L1344ree() if no connected FEs are running */./spa
  1349./a> "v14 4  "v14 4 if (!.a href="+code=snd_soc_dpcm_can_be_free_stop" class="sref">snd_soc_dpcm_can_be_free_stop./a>(.a href="+c4=snd_pcm_s4bstream" class="sref">snd4pcm_s49v14 4          "v14 4  "v14 4 .a  hrecclass="sref">SND_SOC_DPCM_STATE_STOP./a>4eass="line4et_substream./a>(.a href=4+code49e" class="sref">b
./a>,4.a href="+cod4=stream" c4ass="sref">stream./a>); <4 href49>1274./a>.spaaaaaaaaaaaaaaaaa">1264./a> 1326./a> er1363do_4 .gge"">ef=d/soc/soc-pcm.c#L1289" id  L1289" class="linm.c#L1342" id  L1342" class="line" nam
  L1342">1342./a> "UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref""sref">b
./a>,4.a href="+cod4=stream" c4s="line" nam
  L1295">1294./a> 49code=SND_SOC_DPCM_STATE_STOP"hw_f_substream" clams" class="sref">hw_param="sref">stream./a>]..a href="+cod4de=fe" cla4s="sref">f
./a>,4.a href=4+code49sound/soc/soc-pcm.c#L./a>.spaaaaaaaaa-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 1297./4> "v14 4  4v14 4  "v14 4 continue; <4 href49a> "v14 4  "v14 4 if (.a href="+code=ret" clCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" claPAUSEDa href="+code=stre"+code=dpcm" claPAUSEDclas60">1360./a> 1299./a5 "v14 4  "v14 4 .spa
 cla5s="co5ment">/* only allow hwwwwwwwwwb5./k60">1360./a> f
./a>,4.a href=5+code50de=be" class="sref">b1">1361./a> "v14 4 return .a href5) &1">1361./a> "v14 4 return .a href5)3snd5 href50ound/soc/soc-pcm.c#L1362" id  L1362" 5ass="sref"5state./a> != .a href="+co5e=SND504und/soc/soc--pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 1361./a> "v14 4 return .a href5)6tate./a>5!="line" nam
  L1295">1295+code50.c#L1L1360" id  L136EXPORT_SYMBOL_GPLclass="line" naEXPORT_SYMBOL_GPL">ef=d/soc/soc-pcm.c#L123" class4 .gge" class="sref">er1363" class4 .gge"">efbsref""sref">b
./a>,4.a href="+cod5) 1356./5>8er1363f class4 .gge"">ef="+code=stream" class="93hrpf="+code=soc_pcm_hw_fre4 .a class="line" nam
  L1361">1361./a> eeeeeeeeee .a href="+code=SND_SOC_DPCM_Uoc-pcm.c#L1363" id  cm L1280">1280./a> mdode=bPDhrefss=" L138sref">snd_soc_dp15>9dev5/a>, .ef="+code=stream" class="sref">st5sref">f
./5>->.a href="+code=dai_5ink" 51ent">/* only pcm.c#L1258" id  L1258" class="line" nam
  L1258">1258./a>{ 1259./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="srss="sref">st5se=fe" cla5class="sref">nam
./a>); <5 href51sound/soc/soc">dpcm_be_dai_hw_params./a>(struct .a href="+code=60" id  L1260" class="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a   L1330" class="line" nam
  L1330">1330./a="+code=fe" class="srss="sref">st5s 13115/a> "51ss="string">&enumh1258" id  L1258" class="lin_4 .gge" class="sref">es class="lin_4 .gge"s="st1258" id  L12584 .gge" class="sref">e4 .gge"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+c4 .gge" class="sref">e4 .gge"s="sd  L1355" class="line" nam
  L1355">1355./a> "v1="+code=fe" class="srss="sref">st5s3[.a href="+code=stream5 clas51ound/soc/soc-pcm.c#L1362" id  L1362" 5"v14 4  "v54 4     4 4         sizeo5(stru514und/soc/soc-
 class="commenr_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda5ss="sref">5nd_pcm_hw_params./a>)); <5 href51" id m_get_substream" class="sref">sn55" class="5ine" nam
  L1315">1315./a5 "v1451code=SND_SOC_switchef="+code=hw_para4 .gge" class="sref">e4 .gge"s="sbref="+code=stream" class="sref">st5de=dai_lin5" class="sref">dai_link./5>->51sound/soc/soccasef="+code=dpcm" clasam" class=TRIGGERtPR.a href="+code=stream" class=TRIGGERtPR.reamnam
  L1337">1337./a> 126beforem
  Lback>12.a> 1319./5> "v152ent">/* only allow hwe" class="sref">  L1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=devprem
 .gge"sF="sref">  md1321" id  L1321" class="line" nam
  L1321">1321./a> "v15v_err" cla5s="sref">dev_err./a>(.a h5ef="+52de=be" class="sref">b
./a>->.a hre id  L1260" claref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm>CLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; dai_link./a>->.a href="5class="lin5" nam
  L1322">1322./a> "514 4 5"v14 4          "v14 4">1264./a> 1326./a> es="sound4 .gge"ine" nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; 1323./a> "v15 4  "514 4     4 4         gdref="+code=hw_params" class="sref">hw_params./a>); err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=de
 .gge"sF="ound/soc/soc-pcm.c#L1330" id  L1330" class="line" nam
  L1330">1330./a> "v14 4  "v14 4  "v14 4  "v14 4 .5w" class="514 4 } oueream./a>]..a href="+code=runtime_upda5  L1325">1525./a> "v14 4         } <5 href5"sound/soc/soc-pcm.c#L1">1361./a> "v14 4 return .a href5ream./a>, 5amp;.a href="+code=dpcm" 5lass=52297" class="line" nam
  L1297">1297./5 id  L13285 class="line" nam
  L13285>132852a>, .spa
 class="stri1307" id  L1307" class="line" nam
  L1326">1326./a> er1363" class4 .gge"">ef= class="line" nam
  L1349">1349./a> "v14 4  "v14 4 if (ss="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a   L1330" class="lcm L1280">1280./a> mdode=bsref">dpcm./a>; dpcm./a>->.a h5ef="+5ode=be" class="sref">bb5./k60">1360./a> "dpcm: hw_pa5ams B5 failed %dcasef="+code=dpcm" clasam" class=TRIGGERtPOSTa href="+code=stre"+code=dpcTRIGGERtPOSTreamnam
  L1337">1337./a> 13315/a> "514 4  "v14 4  "v14 4 g1pcm.c#L1266" id  L1266" class4 .gge"snam
  L1266">126afterm
  Lback>12.a> unwi5d./a>; 1532./a> "v14 4  "v14 4 } <5 href5"sound/soc/soc-pcm.c#L1307" id  L1307" class="line" nam
  L1326">1326./a> er1363" class4 .gge"">ef= class="line" nam
  L1349">1349./a> "v14 4  "v14 4 if (ss="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a   L1330" class="lcm L1280">1280./a> mdode=bsref">dpcm./a>; state./a> = .a href="+c5de=SN53ATE_HW_PARAMS" class=dref="+code=hw_params" class="sref">hw_params./a>); err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=de
 .gge"sF="ound/soc/soc-pcm.c#L1330" id  L1330" class="line" nam
  L1330">1330./a> "v14 4  "v14 4  "v14 4  .c#L13285D L1325">1514 4 } oueream./a>]..a href="+code=runtime_upda5 eam./a>, 536./a> "v14 4 return 0; <5 href53ss="sref">be_hw_param1">1361./a> "v14 4 return .a href5nd/soc/soc5pcm.c#L1338" id  L1338" c5ass="53="+code=SND_SOC_DPCM_UPDATE_NO" class5s="line" n5m
  L1339">1339./a> "v14 5 .spa54e" class="sref">b
./ae" class="sref">  L1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=devpostm
 .gge"sF="sref">  md1321" id  L1321" class="line" nam
  L1321">1321./a> "v15eam./a>]..5 href="+code=be_clients" 5lass=5sref">be_clients./a>,         f">b
./ae" class="sref"ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm>CLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; b
./a> = .a hre5="+co54ass="sref">dai_link./a>->.a href="5=snd_pcm_s5bstream" class="sref">snd5pcm_s5bstream./a> *.a href="">1264./a> 1326./a> es="sound4 .gge"ine" nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; 1360./a> stream./a>); <5 href54ATE_HW_PARAMScasef="+code=dpcm" clasam" class=TRIGGERtBESPOK.a href="+code=stream" class=TRIGGERtBESPOK.reamnam
  L1337">1337./a> f
./a>,4.a href=5+code5be" class="sref">b
./a1pcm.c#L1266" id  L1266" bespokem
 .gge"() - handles bothsF="and BEsa>  "5sound/soc/soc-pcm.c#L13465 id  54356" class="line" nam
  L1356">1356./5> "v14 4  5v14 4         continue; <5 href5"sound/soc/soc-pcm.c#Le" class="sref">  L1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=devbespokem
 .gge"sF="sref">  md1321" id  L1321" class="line" nam
  L1321">1321./a> "v15ed/soc/soc5a> "v14 4  "v14 4 .spa
 c5ass="54a> "v14 4  "v14 4 if (.a hreff">b
./ae" class="sref"ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm>CLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; f
./a>,4.a href=5+code55ass="sref">dai_link./a>->.a href="5) be_clients./a>, ">1264./a> 1326./a> es="soundbespoked4 .gge"ine" nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=bsref">dpcm./a>; hw_params./a>);  != .a href="+co5e=SND5SOC_DPCM_STATE_OPEN" clasms_fi-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=de
 .gge"sF="ound/soc/soc-pcm.c#L1330" id  L1330" class="line" nam
  L1330">1330./a> "v14 4  "und/soc/soc-pcm.c#L13285asoc_dpcm_5!= .a href="+code=SND_SOC5DPCM_5TATE_HW_PARAMS" class="src/soc .a href="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda5ref">state5/a> != .a href="+code=SND5SOC_D55ATE_HW_PARAMS" class=1">1361./a> "v14 4 return .a href5=state" cl5ss="sref">state./a> != .a5href=5+code=SND_SOC_DPCM_STAb5./k60">1360./a> 1337./a> err./a> < 0) 1270./a>1265./a> "v14 4 .a href="+code=devinvalide
 .gge"s md1321" i L129sref">pcm.c#L1330" id  L1330" class="lcm L1280">1280./a> mdode=="line" nam
  L1321">1321./a> "v15+code=soc_5cm_hw_free" class="sref">5oc_pc55a> "v14 4  "v14 4 if (.a hreff">b
./ae" class="sref"ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13285"sref">be_5ubstream./a>); b
./a">1264./a> -">1264./a> ]..a href="+code=runtime_upda5ne" nam
  51359">1359./a> "v14 4 } <5 href56ref">be_clients./a>,  .a href="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda5c-pcm.c#L1561" id  L1361" class="lin5" nam56ss="string">&1">1361./a> "v14 4 return .a href5"+code=ret5 class="sref">ret./a>; 1362./a>} <5 href56ATE_HW_PARAMSswitchef="+code=hw_paracm L1280">1280./a> mdode=bref="+code=stream" class="sref">st5"sref">SND5SOC_DPCM_UPDATE_FE./a>; <5 href56ATE_HW_PARAMScasef="+code=dpcm" clasRV_ass=TRIGGERtreaRTa href="+code=streRV_ass=TRIGGERtreaRTreamnam
  L1337">1337./a> ->.a href="+code=dai_5ink" 56code=SND_SOC_casef="+code=dpcm" clasRV_ass=TRIGGERtRESUsref">f
./a>->.a RV_ass=TRIGGERtRESUsrreamnam
  L1337">1337./a> nam
./a>); <5 href56sound/soc/soccasef="+code=dpcm" clasRV_ass=TRIGGERtPAUSEtRELEASref">f
./a>->.a RV_ass=TRIGGERtPAUSEtRELEASrreamnam
  L1337">1337./a> list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" classaRTa href="+code=stre"+code=dpcm" classaRT L1360">1360./a> 56a> "v14 4  "v14 4 if b5./k60">1360./a> dpcm./a>[.a RV_ass=TRIGGERtss="reamnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRIGGERtsUSPENDreamnam
  L1337">1337./a> f
./5>->.a href="+code=dai_5ink" 572ound/soc/soccasef="+code=dpcm" clasRV_ass=TRIGGERtPAUSEtPUSHef">f
./a>->.a RV_ass=TRIGGERtPAUSEtPUSHreamnam
  L1337">1337./a> nam
./a>); <5 href57stream./a> *.a href="-pcm.c#L1276" ir_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" clas60">1360./a> 1273./a> "v14 4 .spa
 cl5ss="c574 4     4 4         gb5./k60">1360./a> SND5 L1274" class="line" nam
5 L1275">1274./a>.spa1">1361./a> "v14 4 return .a href5#state" cl5_dai_hw_free./a>(.a href=5+code57code=">1361./a> "v14 4 return .a href5#ode=nam
"5ass="sref">stream./a>); <5 href57soundref="+code=ret"oue" nam
  L1330">ouereamnam
  L1337">1337./a> state./a> = .a href5"+cod57sound/soc/soc-pcm.c#L1276" ir_each_entry_continue_reverse" class="sref">list_for_each_entry_continue_reverse./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>NOsref">dpcm./a>[.a href="+codpcm./a>NOclas60">1360./a> runtime_update./a> =5.a hr57ref">dpcm./a>-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> SND5SOC_DPCM_UPDATE_NO./a>; <5 href58de=be1">1361./a> "v14 4 return .a href5lass="sref5>f
./a>->.a href="+cod5=card58350" class="line" nam
  L1350">1350./5sref">mute5./a>); 1258./a>{ dpcm_be_dai_hw_params./a>(struct .a href="+code=bPDhrefss=" L138sref">snd_soc_dp15sode=nam
"51./a> "v14 4 return 0; st5lass="line5 nam
  L1282">1282./a>} <5 href58ATE_HW_PARAMSpcm.c#L1258" id  L1258" class="line" nam
  L1285">1285./a>{ 1286./a> 5snd_soc_pc5_runtime./a> *.a href="+c5de=fe58>1274./a>.spad_soc_dpcm./a> *.a href="+code=dpcm" class="6">  L1335" class="line" nam
  L1335"5=stream" c5ass="sref">stream./a>) 1361./a> "v14 4 return .a href5sode=nam
"5t .a href="+code=snd_soc_5pcm" 58sound/soc/socc_dpcm./a> *.a ny enabled and non f="+code=dpcm" ">1288./a> 1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./CM_UCLASS_RUNTIME" ce=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">st5/soc-pcm.c5L1287" id  L1287" class="5ine" 58297" class="line" nam
  L1297">1297./5="+code=re5" class="sref">ret./a>; <5 href58sound/soc/soc-pcm.c#L.a href="+code=list_be" class="sref">list_be./a>) { 1341./a> "v14 4  "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+5eam./a>]..5 href="+code=be_clients" 5lass=59de=be" class="sref">bpcm./a>->.a href="+code=be" class="sref">b
./a>; 1342./a> "v14 4  "v14 4 struct .a href="+cod5eass="sref5s="sref">list_be./a>) { <5 href59ref">be_clients./a>,         1258" id  L1258" class="lin_substream./a> = 1343./a> "v14 4  "v14 4     4 4 .a href="+code=snd_soc_dpcm_get_substream" class="sref">sn5ode=be" cl5ss="sref">b
./a> = .a hre5="+co59ass="sref">dai_link./a>->.a href="5=snd_pcm_s5bstream" class="sref">snd5pcm_s59v14 4          "v14 41294" id  L1294" class="line" nam
  L1294">1294./a> 1344./a> 1345./a> "v14 4         if (!.a href="+code=snd_soc_dpcm_be_can_update" class="sref">snd_soc_dpcm_be_can_update./a>(.a href="+c5=stream" c5ass="sref">stream./a>); <5 href59>1274./a>.spaaaaaaaaaaaaaaaaacclass="sref">SND_SOC_DPCM_STATE_STOP./a>5=stream" c5s="line" nam
  L1295">1295./a> 59code=">1361./a> "v14 4 return .a href5de=fe" cla5s="sref">f
./a>,4.a href=5+code59sound/soc/soc-pcm.c#Ldrefsref">SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" claHW_PARAMSsref">dpcm./a>[.a href="+code=streHW_PARAMS[.a hr>stream./a>]..a href="+code=state" class="5) SND_SOC_DPCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref">b
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+cod5> "v14 4  5v14 4  "v14 4 continue; <5 href59a> "v14 4  "v14 4 if (.a hrefcclass="sref">SND_SOC_DPCM_STATE_STOP./a>69">1299./a6 "v14 4  "v14 4 .spa
 cla6s="co60ass="sref">dai_link./a>->.a href="6de=fe" cla6s="sref">f
./a>,4.a href=6+code60de=be" class="sref">b-pcm.c#L1276" i  cl1264" class="line" nam
  L1264">1264./a> ) && 1265./a> "v14 4 .a href="+code=devprepare294.sref">pcm.c#L1330" id sref">dai_link./a>->.a href="6d2=fe" cla6ss="sref">b
./a> = .a hre6 id  60ss="string">"dpcm: hw_pa">1264./a> 1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286)3snd6 href60ound/soc/soc-pcm.c#L1362" id  L1362" 6ass="sref"6state./a> != .a href="+co6e=SND60sound/soc/soc-pcm.c#L1307" id  L1307" class="line" nam
  L1326">1326./a> 1264./a> 1342./a> "> "v14 4  "und/soc/soc-pcm.c#L13286)5s="sref"6sss="sref">stream./a>); <6DPCM_60ATE_HW_PARAMS" class=dref="+code=hw_params" class="sref">hw_params./a>); 1296+code60code=SND_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) 1265./a> "v14 4 .a href="+code=devback>12vprepare2ound/soc/soc-pcm.c#L1330" id  href="sound/soc/soc-pcm.c#L13286)7tate./a>6!="sref">f
./a>,4.a href=6 id  60sound/soc/soc-pcm.c#L./a>.spaaaaaaaaa="+code=hw_params" class="sref">hw_param> "v14 4  "und/soc/soc-pcm.c#L13286)8tate./a>6!ound/soc/soc-pcm.c#L12976 href60sound/soc/soc-pcm.c#LLLLLLLLLb5./k60">1360./a> dev60a> "v14 4  "v14 4 if 1">1361./a> "v14 4 return .a href6sref">f
./6>->.a href="+code=dai_6ink" 61ass="sref">dai_link./a>->.a href="6se=fe" cla6class="sref">nam
./a>); <6 href61de=be" class="sref">b-pcm.c#L1276" iCM_STATE_HW_FREE./a>) && 1355./a> "v14 4          "v(.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" claPREPAR.a href="+code=stream" class=m" claPREPAR.">snd_soc_pcm_runtime./a> *.a href="+6s 13116/a> "61ss="string">&1">1361./a> "v14 4 return .a href6s3[.a href="+code=stream6 clas61v14 4        -pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> 1361./a> "v14 4 return .a href6s5s="sref"6nd_pcm_hw_params./a>)); <6 href61" id m_get_substream" class="sref">sn65" class="6ine" nam
  L1315">1315./a6 "v1461code=/soc/soc-pcm.c#L1363" id  L1363" classprepare=fe" class="sreL1283f classprepare< "+code=stream" class="93hr=be" class="sref">b
./a>; stream./a>]..a href="+cod6de=dai_lin6" class="sref">dai_link./6>->61sounda href="sound/soc/soc-pcm.c#L13286>->.a h6ef="+code=be_hw_params_fi6up" c61sound/soc/socpcm.c#L1258" id  L1258" class="line" nam
  L1258">1258./a>{ 1259./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sr-pcm.c#L13286>9 "v14 4  "v">dpcm_be_dai_hw_params./a>(struct .a href="+code=60" id  L1260" class="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a   L1330" class="line" nam
  L1330">1330./a6">  L1335" class="line" nam
  L1335"619" class=6line" nam
  L1319">1319./6> "v162ass="sref">dai_link./a>->.a href="6v_err" cla6s="sref">dev_err./a>(.a h6ef="+62de=be" class=L1330" class="lmutex_lock_neste L1280">1280./a>mutex_lock_neste < e" nam
  L1289">1289./a> "v14 4 .a href="+code=list_for_each_encar L1280">1280./a> ar ="+code=list_for_each_enmutexL1280">1280./a>mutex4.a   L1330" class="ltream" cCARD_CLASS_RUNTIsref">f
./a>->.a am" cCARD_CLASS_RUNTIsraram> "v14 4  "und/soc/soc-pcm.c#L13286 4  "v14 46 "v14 4  "v14 4  "v14 4 .6pa
 c62ass="sref">dai_link./a>->.a href="6class="lin6" nam
  L1322">1322./a> "614 4 6"v14 4        -pcm.c#L1276" i  cl1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=devprepare2F4.sref">pcm.c#L1330" id ae" class="sref"ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286ass="line"6nam
  L1323">1323./a> "v16 4  "62e" class="sref">b
./a>,4.a href="+cod6wind./a>; 6a href="sound/soc/soc-pcm6c#L1362ATE_HW_PARAMSm
  L1289">1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" class="614 4 } 1361./a> "v14 4 return .a href6  L1325">1625./a> "v14 4         } <6 href6"sound/soc/soc1294" id  L1294" class="lthere2is no po">dpprepara h94">12F4.iflthere2are2no BEsa> , 6amp;.a href="+code=dpcm" 6lass=62sound/soc/socdref="+code=hw_parapcm./empt f="+code=dpcm" ">128empt < e" nam
  L1289">1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./CM_) 132862a>, .spa
 class="stri1307" id  L1307  clrr" class="sref">err./a> < 0) 1270./a>1265./a> "v14 4 .a href="+code=devno back>12vDAIs enabd/soL129sref">pcm.c#L1330" id  href="sound/soc/soc-pcm.c#L13286dpcm" clas6="sref">dpcm./a>->.a h6ef="+6ode=be" class="sref">bspa
 class="stri1307" id  L1307ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286pa
 class=6string">"dpcm: hw_pa6ams B63ref">be_clients./a>, ">1264./a> -">1264./a> ]..a href="+code=runtime_upda61331" clas6="line" nam
  L1331">13316/a> "614 4  "v14 4  "v14 4 g .a href="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda6sref">unwi6d./a>; 1361./a> "v14 4 return .a href6  L1332">1632./a> "v14 4  "v14 4 } <6 href63e" class="sref">b
./a>,4.a href="+cod6dind./a>; 6">state./a> = .a href="+c6de=SN63ATE_HW_PARAMSm
  L1289">1289" class="line" nam
  L1326">1326./a> 1345./a> "v14 4       ss="line" nam
  L1260">1260./a> "v14 4 int .a href="+code=err" class="sref">err./a>,4.a > "v14 4  "und/soc/soc-pcm.c#L13286p" class="6HW_PARAMS./a>; hw_params./a>); "v14 4  "und/soc/soc-pcm.c#L13286p L1325">1614 4 } oueream./a>]..a href="+code=runtime_upda6seam./a>, 636./a> "v14 4 return 0; <6 href63297" class="line" nam
  L1297">1297./6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L1266" id  L1266" classprepare2nam
  L1266">126> 1339./a> "v14 6 .spa64e" class="sre1307" id  L1307" class="line" nam
  L1326">1326./a> 1264./a> ]..6 href="+code=be_clients" 6lass=6sref">be_cliendref="+code=hw_params" class="sref">hw_params./a>); b
./a> = .a hre6="+co644 4  "v14 4  "v14 4 g1307" id  L1307  clrr" class="sref">err./a> < 0) 1270./a>265./a> "v14 4 .a href="+code=devprepare2F4.sref">2ound/spcm.c#L1330" id  href="sound/soc/soc-pcm.c#L13286=snd_pcm_s6bstream" class="sref">snd6pcm_s6bstream./a> *.a href="ss="stri1307" id  L1307ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286_soc_dpcm_6et_substream./a>(.a href=6+code64sound/soc/soc-pcm.c#L .a href="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda6=stream" c6ass="sref">stream./a>); <6 href64ATE_HW_PARAMS1">1361./a> "v14 4 return .a href6de=fe" cla6s="sref">f
./a>,4.a href=6+code64code=">1361./a> "v14 4 return .a href6d335./a> "6sound/soc/soc-pcm.c#L13466 id  64sound/soc/soc1294" id  L1294" class="lf">m
  L_SOC_D evclaoL129>  , 6v14 4         continue; <6 href64sound/soc/soc-pcm.c#L1276" ir1363dapm__SOC_D_evcla=fe" class="sreL1283dapm__SOC_D_evcla< L1345" class="line" nam
  L1345">1345./a> "v14 4       serr" class="sref">err./a>,4.a   L1330" class="ltream" clAPs=m"REAMassaRTa href="+code=stre"+codeAPs=m"REAMassaRTdpcm> "v14 4  "und/soc/soc-pcm.c#L13286_d/soc/soc6a> "v14 4  "v14 4 .spa
 c6ass="64a> "v14 4  "vm
  L1289">1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" claPREPAR.a href="+code=stream" class=m" claPREPAR.">snd_soc_pcm_runtime./a> *.a href="+6de=fe" cla6s="sref">f
./a>,4.a href=6+code65ass="sref">dai_link./a>->.a href="6) ref="+code=ret"oue" nam
  L1330">ouereamnam
  L1337">1337./a> 1289./a> "v14 4 .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=fe" class="sref">f
./a>->.a href="+code=dpcm" class="sref">dpcm./a>NOsref">dpcm./a>[.a href="+codpcm./a>NOclas60">1360./a>  != .a href="+co6e=SND65v14 4        -pcm.c#L1276" imutex_unlockL1280">1280./a>mutex_unlock< e" nam
  L1289">1289./a> "v14 4 .a href="+code=list_for_each_encar L1280">1280./a> ar ="+code=list_for_each_enmutexL1280">1280./a>mutex4.a > "v14 4  "und/soc/soc-pcm.c#L13286asoc_dpcm_6!= .a href="+code=SND_SOC6DPCM_65e" class="sref">b
./a>,4.a href="+cod6ref">state6/a> != .a href="+code=SND6SOC_D65ATE_HW_PARAMS-pcm.c#L1360" id  L1360" class="line" nam
  L1360">1360./a> state./a> != .a6href=6+code=1">1361./a> "v14 4 return .a href6=335./a> "6sound/soc/soc-pcm.c#L13566 id  65356" class="line" nam
  L1356">1356./6> "v14 4  6v14 4         continue; <6 href65sound/soc/soc-pcm.c#L1363" id  "sound/sioctl=fe" class="sre"sound/sioctl< "+code=stream" class="93hr=be" class="sref">b
./a>; 6oc_pc65a> "v14 4  "v14 4 if (.a hunsignedoc-pcm.c#L1363" id  cm L1280">1280./a> mdode=, voidpcm.c#L1342" id  ar64" class="line"ar6PCM_="sref">stream./a>]..a href="+cod6"sref">be_6ubstream./a>); 1359./a> "v14 4 } <6 href66ref">be_clienpcm.c#L1258" id  L1258" class="line" nam
  L1258">1258./a>{ 1280./a>rt ine" nam
  L1259">1259./a> "v14 4 struct .a href="+code=snd_soc_pcm_runtime" class="sref">snd_soc_pcm_runtime./a> *.a href="+code=fe" class="sr-pcm.c#L13286c-pcm.c#L1661" id  L1361" class="lin6" nam66ss="string">&pcm.c#L1258" id  L1258" class="latL12> = soc/soc-pcm.c#L1259" "latL12> = soc/snam
  L1259">1259rt L1280">1280./a>rt ine"_soc_pcm_runtime" clalatL12> = soc/="+code=fe" class="sr-pcm.c#L13286css="sref"6 class="sref">ret./a>; 1362./a>} <6 href66ATE_HW_PARAMSdref="+code=hw_paraalatL12> = soc/ode=list_for_each_entme.e" class="sref">erme.e"soc/ode=list_for_each_enop+code=fe" class=op+soc/ode=list_for_each_enioctl=fe" class="sreioctl<="sref">stream./a>]..a href="+cod6"ef">state6SOC_DPCM_UPDATE_FE./a>; <6 href66ATE_HW_PARAMSW_PARAMS-pcm.c#L1360" id  L136alatL12> = soc/ode=list_for_each_entme.e" class="sref">erme.e"soc/ode=list_for_each_enop+code=fe" class=op+soc/ode=list_for_each_enioctl=fe" class="sreioctl< nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286cstate" cl6>->.a href="+code=dai_6ink" 66code=SND_SOC_-pcm.c#L1360" id  L136 href="slibsioctl=fe" class="sre"href="slibsioctl< nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286c335./a> "6class="sref">nam
./a>); <6 href66sound1">1361./a> "v14 4 return .a href6" "v14 4  6class="line" nam
  L1267"61267.66297" class="line" nam
  L1297">1297./6href="+cod6=soc_pcm_hw_free" class="6ref">66a> "v/soc/soc-pcm.c#L1363" id  L1363"soa>->_shutdown=fe" class="sreL1283"soa>->_shutdown< "+code=stream" class="93hrass="line" nam
  L1258">1258./a>{ dpcm_be_dai_hw_params./a>(struct .a href="+code=bPDhrefss=" L138sref">snd_soc_dp16m.c#L1269"6id  L1269" class="line" n6m
  L67e" cla href="sound/soc/soc-pcm.c#L13286t;.a href=6+code=dev" class="sref">d6v./a>67ref">be_clienpcm.c#L1258" id  L1258" cl=be" class="sref">b
./a>; f
./6>->.a href="+code=dai_6ink" 674 4  "v14 4  "v14 4 g1307" id  L1307" class="lin_substream./a> = 1345./a> "v14 4       serr" class="sref">err./a>,4.a =="+code=fe" class="sr-pcm.c#L13286code=nam
"6class="sref">nam
./a>); <6 href67stream./a> *.enumh1258" id  L1258" class="lin_4 .gge" class="sref">es class="lin_4 .gge"s="st1258" id  L12584 .gge" class="sref">e4 .gge"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+c4 .gge" class="sref">e4 .gge"s="sd  L1355" class="line" nam
  L1355">1355./a> "v1="+code=fe" class="srss="sref">st6sass="line6>1273./a> "v14 4 .spa
 cl6ss="c674 4     4 4  ">dpcm_be_dai_hw_parr" class="sref">ea> <="+code=fe" class="srss="sref">st6sef">state6 L1274" class="line" nam
6 L12767" id m_get_substream" class="sref">sn6#state" cl6_dai_hw_free./a>(.a href=6+code67code=SND_SOC_1307" id  L1307  cl1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+co"sound/"sref">  lose2namF4.sref">pcm.c#L1330" id m_get_substream" class="sref">sn6#335./a> "6ass="sref">stream./a>); <6 href67sound/soc/soc-pcm.c#L./a>.spa  L1355" class="line" nam
  L1355">1355./a> "v ?1265./a> "v14 4 .a href="+cocapcm.em.c#L1330" id :1265./a> "v14 4 .a href="+co"laybackm.c#L1330" id ae" class="sref"ref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286c "v14 4  6sref">state./a> = .a href6"+cod67297" class="line" nam
  L1297">1297./6sref="+cod6ref">runtime_update./a> =6.a hr67ref">dpcm./a>dref="+code=hw_para4 .gge" class="sref">e4 .gge"s="st0ef="+code=dpcm" class="sref">dTRIGGERtBESPOK.a href="+code=stream" class=TRIGGERtBESPOK.ream SND6SOC_DPCM_UPDATE_NO./a>; <6 href68e" class="sref">b
./a"pcm.c#L1266" id  L1266" classbespokem
 .gge"s-mF4.take>  are2nf lassBEm
 .gge"sa> b-pcm.c#L1276" i  cl1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=devbespokem
 .gge"sF="sref">  md1stoppcm.c#L1330" id m_get_substream" class="sref">sn6sref">mute6./a>); "dpcm: hw_pa"sref">b-pcm.c#L1276" iref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286sode=nam
"61./a> "v14 4 return 0; 1282./a>} <6 href68sound/soc/soc-pcm.c#Lcm_be_dai_hw_parr" class="sref">ea> <6">1326./a> es="soundbespoked4 .gge"ine" nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" clasRV_ass=TRIGGERtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="ream> "v14 4  "und/soc/soc-pcm.c#L13286sef">state6_runtime./a> *.a href="+c6de=fe68ATE_HW_PARAMSW_PARAMSdref="+code=hw_pararr" class="sref">ea> <6./a>); "v14 4  "und/soc/soc-pcm.c#L13286=stream" c6ass="sref">stream./a>) err./a> < 0) 1270./a> "v14 4  "v14 4 .a href="+code=de
 .gge"sF="ound/soc/soc-pcm.c#L1330" id  L1330" class="lrr" class="sref">ea> <> "v14 4  "und/soc/soc-pcm.c#L13286s335./a> "6t .a href="+code=snd_soc_6pcm" 68sound/soc/soc} else2a href="sound/soc/soc-pcm.c#L13286" "v14 4  6L1287" id  L1287" class="6ine" 68sound/soc/soc-pcm.c#Le" class="sref">  L1264" class="line" nam
  L1264">1264./a> 1265./a> "v14 4 .a href="+code=dev
 .gge"sF="sref">  md1stoppcm.c#L1330" id m_get_substream" class="sref">sn6sref="+cod6" class="sref">ret./a>; <6 href68sound/soc/soc-pcm.c#L"sref">b-pcm.c#L1276" iref="sound/soc/soc-pcm.c#L1265" id  L1265" cm
  L1309">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286eam./a>]..6 href="+code=be_clients" 6lass=69ass="sref">dai_link./a>->.a href="6eass="sref6s="sref">list_be./a>) { <6 href69ref">be_clients./a>, cm_be_dai_hw_parr" class="sref">ea> <6">1326./a> er1363" class4 .gge"">ef= class="line" nam
  L1349">1349./a> "v14 4  "v14 4 if (serr" class="sref">err./a>,4.a   L1330" class="ltreRV_ass=TRIGGERtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="ream> "v14 4  "und/soc/soc-pcm.c#L13286ode=be" cl6ss="sref">b
./a> = .a hre6="+co69sound/soc/soc-pcm.c#Ldref="+code=hw_pararr" class="sref">ea> <6./a>); "v14 4  "und/soc/soc-pcm.c#L13286>snd5pcm_s6bstream" class="sref">snd6> "v14 4 ss="sref">snd6> "86)3st"+co59ass="sref"0eef">b
./4 4  "v14 soc/soc-pcm.c#L13286>snd5pcm_s6bstream" class="sref="sref">sn6#335./a> "6ass="sref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"4p;& s./a>de=reopcm.c#L1265" id  L1265" cl-pcm.2 L1270">1270./am.2 L5gge"s="sd  L1355" class="line" nam
  L1355" class="lin_4 .gge"s="st1258" id  L12584 .gge" class="sref">e4 .gge"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" class="srefare< "+code=streahref68"6ass="IGGERtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="ream> "v14 4  "und/soc/soc-pcm.c#L13286ode=be" cl6ss="sref">b
. L1330" clclaHW_PARAMSsref">dpcm./a6[.a h6970" class="line" nam
  L1270">1270./a7) hw_params./a>); "vef">b
./4 4  "v14 soc/soc-pcm.c#L13286>snd5pcm_s6bstrea6 href="slibsioctl=fe" class6bstrea6 href="sref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"4p;& 1297./L1265" cl-pcm.2 L1270">1270./am.2 L5gge"s="sd  L1355" class="line74 4  "v14 7 continue; <5 href59a> "v74 4  7v14 4 if (.a hrefcclas="sref">e4 .gge"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" class="srefare< "+code=streahref686 href="IGGERtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="ream> "v14 4  "und/soc/soc-pcm.c#L13286ode=be" cl6ss="sref">b7264">1264.7a> ) &a7p;& 1265.7a> "v14 4 .a href="+code=7evpre7are294.sref">p9">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm71265" id  71265" cm
  L1309">1309./a7 "v1474  "v14 4  "v1m.c#L13286>snd5pcm_shref="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda6=stream" c6ass="sref">stream./a>); <6 href64ATE_HW_PARAMS1">1361./a> "v14 4 return .a href6de=fe" cla6s="srN55./a> "v14 4          "v(" cla6s="srN55soc-pcm.c#L13286ode=be" cl6ss="sref">b72665" id  71d6> "86)3 *.a href="ss="stri1307" id 7pcm.c#L13276)5s="sref"6sss="sref">st7eam./7>); <6DPCM_60A_DPCM_U8">1258./a>{ 1796+codpararr" class="sref">ea> <6./a7ref">err./7> < 0) 1270./a75">1265./a7 "v14 4 .a href="+code=de7back>72vprep6ink" 66code=SND_SOC_-pcm.c#L1360" id  L136tartupslibsioctl=fe" class="sre"href="tartupctl< nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286c335./a> "6class="sref">nam
./7 href="sou7d/soc/soc-pcm.c#L13286)7t7te./a76!="sr class="sref">ea> <6./a>); "v171">1361./a7 "v14 4 return .a href6sr7f">f
71tream./a>]..a href="+cod6"sref">be_6ubsss="6ref">66a> "v/soc/soc-pcm.c#L1363" id  L1363"soa>->_shutdown=fe" class="sreL1283"soa>->_shutdown< "+code=stream" class="93hr7i_link./a>7>.a href="6se=fe" cla67lass=71f">dpcm./a>[.a RV_ass=TRIGGERtss="reclass="line"ef">dpcm_be_dai_hw_params./a>(struct .a href="+code=bPDhrefss=" L138sref">snd_soc_dp16m.c#L1269"6id  L1269" class="line" n6m
  L67e" cla href="sound/soc/soc-pcm.c#L13286t;.a href=671350./5sref">mute5./a>); b
./a>; f
./6>->.a href="+code=dai_6ink" 674 4  "v14 4  "v14 4 g1307" id  L1307" class="lin_substream./a>OC_DPCM_v14 4  "v14oc/soc-pcm.c#L1343" id  L1343" class="lineine" nam
  L1345">1345./a> "v14 4      7laPREPAR.a7href="+code=stream" class7m" cl71href6  L1332">ref="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      7lcm.c#L1327und/soc/s6"v14 4  "v64 4 7   4 71="+code=list_for_each_encar L1280">127v14 4 retu7n .a href6s5s="sref"6nd_p7m_hw_716+code64sound/soc/soc-pcm.c#L_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) 1355./a> "v1="open=fe" class="srss="sref">st6sass="line6>1273./a> "v14 4 .spa
 7eeeeeeee .7 href="+code=SND_SOC_DPCM7="sre71"v14 4  "und/soc/soc-pcm.c#L13286s335./a> "6s="sref">st6sef">state6 L1274" class="line" nam
6 L12767" id m_get_substream" class="sref">sn6#state" cl6_dai_hw_free./a>(.a href=6+code67code=SND_SOC_1307" id  L1307  cl1264" class="line" nam
  L1264">1264./a> 1259./a> "v14 4 struct .a href7"+code=snd7soc_pcm_runtime" class="s7ef">s7d_soc_pcm_runti">1309./a> "v14 4  "v14 Only "tart"v14 B.a href=4 .a sA_Dadylass="sref">dpcm> "v14 4  "und/soc/soc-pcm7am
  L13357619" class=6line" nam
  L7319">72tream./a>]..anam
  L1297">1297.//a>(.a href="+code=dpcm" class="sref">dpcm./a>, &.a href="+code=be" class="sref>b
./a>->.a href="+code=dpcm" claPREPAR.a href="76" ir1363dapm__SOC_D_evcla=fe"dpcm_be_can_update./a>(.a href="+c5=strFRE45" class="line" nam
  L1345">1345.strFRE4la=fe||">dpcm> "v14 4  "und/soc/soc-pcm7a_link./a>76v_err" cla6s="sref">dev_7rr./a72f">dpcm./a>[.a RV_ass=TRIGGERtss="reamnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRdpcm_be_can_update./a>(.a href="+c5=CLOream" class="sref">sa>(.a href="+c5=CLOre#L13286c335./a> "6class="sref">nam
./74 .6pa
 c67ass="sref">dai_link./a>-&7t;.a 72a href="+code=devbesp_DPCM_U>1265./a> "v14 4 .a href="+code=devno back>12vDAIs enabd/soL129sref">pcm.c#L13307> "614 4 67v14 4        -pcm.c#L12767 i  c72_s6bstream" class="sref">snd6> "v14 47v14 4  "un7/soc/soc-pcm.c#L13286ass=7line"726soc_pcm_runti">1309./a> "v14 4  "v14 "tartup must always bea hre" nam
 newst_for_each_entry" class="sref">list_for_each_7ss="sref">7
./a>,4.a href="+cod6wind7/a>; 72 class="sref">st5lass="line5am
  L1326">-">1264./a> snd_soc_dp16m.c#L1269"6id  L1269" class="line" n6m
  L67e" cla href="sound/soc/soc-pcm.c#L13286t;.a href=67ntry./a>(.7 href="+code=dpcm" class=7sref"7dpcm./a>, &.a href="+code=fe"6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L17sound/soc/7oc1294" id  L1294" class=7lther72is no po">dpprepara h/soc-pcm.c#L1270" iddisconnecoue" nam
  L1330"isconneco12vDAIs enabd/soL129sref">pcm.c#L13307try" class7"sref">list_for_each_entr7./a>(7a href="+code=dpcm" cl="+codpcm./a>NOclas60">1360./a>  != .a 7lass="sref7>err./a> < 0) ea> <6./a7 id  href=7sound/soc/soc-pcm.c#L13287dpcm"7319./6> "v162ass="sref">dai_link./a>-&7soc/soc-pc7.c#L1265" id  L1265" cm
 7L13097>1309./a> "v14i">1309./a> "v14 4  "v14 keeph/sa> ";.a .areRV_a sAlist_for_each_7dpcm" clas7="sref">dpcm> "v14 4  "un7/soc/73*.a href="+code=fe" class="sr-pcamnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRdpcm_be_can_update./a>(.a href="+c5=OPENam" class="sref">sa>(.a href="+c5=OPEN#L13286c335./a> "6class="sref">nam
./7;dpcm: hw_7a6ams B63ref">be_clients.7a>, "71264./a> 1258./a>{ 1361./a> "v14 4 re7urn .73tream./a> *.a href="ss="stri1307" id 7">state./a7 = .a href="+c6de=SN63ATE7HW_PA73 class="sref">st5lass="line5am
  L1326">-">1264./a> snd_soc_dp16m.c#L1269"6id  L1269" class="line" n6m
  L67e" cla href="sound/soc/soc-pcm.c#L13286t;.a href=67 classprep7re< L1345" class="line7 nam
73pcm./a>, &.a href="+code=fe"6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L17 nam
  L1270">1260./a> "v14 4 int .a7href=73is no po">dpprepara h/soc-pcm.c#L1270" id+code/soc/soc6pcm.c#+codeund/soc/s6ass="sref"6state./a> != .a 7d/s63code=7ND_SOC_dref="+code=hw_par7ms" c74 href="+code=dpcm" cl="+codpcm./a>NOclas60">1360./a>  != .a 7/a>, 636./7> "v14 4 return 0; <6 hre76329774oc/soc-pcm.c#pararr" class="sref">ea> <6./a766" id  L1766" classprepare2nam
  L1766">17419./6> "v162ass="sref">dai_link./a>-&7./a>]..a h7ef="+code=runtime_upda6ea7./a>]741309./a> "v14i">1309./a> "v14 4  "v14 keeph/sa> ";.a .areRV_a sAlist_for_each_7 id  L13077 clrr" class="sref">err./7> <74*.a href="+code=fe" class="sr-pcamnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRdpcm_be_can_update./a>(.a href="+c5=stream" c5ass="sref">stream./a>); <5 href59>1274./a>.spaatry" class="sref">list_for_each_7 dpcm: hw_7de=devprepare2F4.sref">2o7nd/sp74264./a> 1258./a>{ snd67cm_s67stream./a> *.a href="ss="stri1307" id 7L1307ref="7ound/soc/soc-pcm.c#L1265"7id  L74="+code=list_for_each_encar L1280">127c#L13286_s7c_dpcm_6et_substream./a>(7a hre7=6+code64sound/soc/soc-pcm.c#am
  L1326">-">1264./a> ]..a href="+code=runtime_upda61331" clas6="line" nam
  L1331">13316/a> "614 4  "v14 4  "v14 4 ine" n6m
  L67e" cla href="sound/soc/soc-pcm.c#L13286t;.a href=67oc/soc-pcm7c#L13466 id  64sound/soc/7oc12974f67sound/soc/soc-pcm.c#L./a>.spa6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L17.a   L13307 class="ltream" clAPs=m"R7AMass75 href="+code=dpcm" cl/soc-pcm.c#L1270" idm" class="sref="sref">"6ass="srefd/soc/soc-pcm.c#L13286t;.a href=67aRTdpcm> "714 4  "und/soc/soc-pcm.c#71328675265./a> "v14 4 .a hre="+codpcm./a>NOclas60">1360./a>  != .a 7 4 .a href7"+code=list_for_each_entr7" cla7s="sref">list_pararr" class="sref">ea> <6./a7=6sound/so7/soc-pcm.c#L13506 id  65r7f">re75;& dpcm./a>, &.a hre7="+co75re294.sref">p9">1309./a> "v14 4  "v14 4  "v14 4 .a href="+code=dpcm" class="sref">dpcm> "v14 4  "und/soc/soc-pcm7+code=dpcm7 class="sref">dpcm./a>NOs7ef">d75  "v14 4  "v1m.c#L13286>snd5pcm_shref="+code=ret"oue" nam
  L1330">oueream./a>]..a href="+code=runtime_upda6=stream" c6ass="sref">stream./a>); <6 href64ATE_HW_PARAMS1">1361./a> "v14 4 return .a href6de=fe" cla6s="srN55./a> "v14 4          "v(" cla6s="srN55soound/soc/soc-pcm.c#L13286t;.a href=67ref="+co6e7SND65v14 4        -pcm.c#71276"75tream./a> *.a href="ss="stri1307" id 7< e" na7
  L1289">1289./a> "v14 47.a hr7565" cm
  L1309">1309./a> "v14 4  "v14 keeph/sa> ";.a .areRV_a sAdpcm> "v14 4  "und/soc/soc-pcm7+#L13286_s7+code=list_for_each_enmut7xL12875pcm./a>, &.a href="+code=fe"amnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRdpcm_be_can_update./a>(.a href="+c5=t; L1345" class="line" nam
  L1345">1345./a> "v14 4 e||">dpcm> "v14 4  "und/soc/soc-pcm70">1360./a7 state./a> !href="+code=fe"amnam
  L1337">1337./a> d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=TRdpcm_be_can_update./a>(.a href="+c5=1355./a> "v14 4          "v(.a href="+code=be" ">dpcm> "v14 4  "und/soc/soc-pcm74  6v14 4 7       continue; <6 href67sound76 href="+code=dpcm" cl="+codp8">1258./a>{ 1258./a>{ ]..anam
  L1297">1297./  L1355" class="line" nam
  L1355">1355./a> "v ?1265./a> "v14 4 .a href="+cocapcm.em.c#L1330" id :1265./a> "v14 4 .a href="+co"laybackm.c#L1330" id ae" class="sre7>1280./a>r7 ine" nam
  L1259">1259./7> "v176f">dpcm./a>[.a RV_ass=v14 4  "v14 4  "v14 4 .a href_ass=TRIoc/soc-pcm.c#L13ass="sref">dpcm> "v14 4  "und/soc/soc-pcm.c#L13286c "v14 4  6sref">state./a>7ntime" cla7s="sref">snd_soc_pcm_runt7me./a76a href="+code=devbespokem
 .gge"sF="L_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) st6sass="line6>1273./a> "v14 4 .spa
 71280">12807/a>rt ine"_soc_pcm_runtim7" cla7atL12> = state./a> !href="+code=fe"amnam
  L1337">1337./a> 1264./a> stream./a>]..a href7"+cod76tream./a> *.a href="ss="stri1307" id 7tl< nam7  L1327">13eeeeeeee .a hr7f="+c76 class="sref">ea> </soc/soc-pcm.c#am
  L1326">-">1264./a> sn6sref">mute6./a>); "dpcm: hw_pa"sref">b-pcm.c#L1276" iref="sound/soc/soc-pcm.c#L1265" id  L1">f
./a>,4.a href=6+cm.c#L1265" id  L1">f="6ine" 68sound/soc/soc-pcm.c#Le" clas7i#L13286_s7 mdode=UCLASS_RUNTIME" ca764" c76d  L12584 .gge" classsoc-pcm.c#L./a>.spa6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L17-pcm.c#L13786cstate" cl6>->.a hre7="+co76"v14 4  "und/soc/soc-pcm.c#L13286s335./a> "6"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" class="srefare< "+code=streahref68 class=TRIGGERtBESPRtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="rems" class="sref">hw_params./a>); 1361./a> "v14 47retur77 href="+code=dpcm" class="sre/soc-pcm.c#L1270" idm" class="sref="sref">"6ass="srefd/soc/soc-pcm.c#L13286t;.a href=671267"61267766297" class="line" nam
 7L129777265./a> "v14 4 .a hrepararr" class="sref">ea> <6./a7ss="line" 7am
  L1258">1258./a>{ ea> <6./a>); "v17code=dev" 7lass="sref">d6v./a>67ref"7be_cl77f">dpcm./a>[.a RV_ass=TRIGGERtss="reL_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) st6sass="line6>1273./a> "v14 4 .spa
 7serr" clas7="sref">err./a>,4.a =="+c7de=fe77a href="+code=devbespte./a> !href="+code=fe"amnam
  L1337">1337./a> 1264./a> 7s class="lin_4 .gge"s="st1258" id  L12784 .gge" c7ass="sref">e4 .gge"s="st07 id  77be_dai_hw_parr" class/soc/soc-pcm.c#am
  L1326">-">1264./a> sn6sref="+cod6" class="sref">ret./a>; <6 href68sound/soc/soc-pcm.c#L"sref">b-pcm.c#L1276" iref="sound/soc/soc-pcm.c#L12s="lin_4 .gge"s="st1258" id  L1278l< nam74     4 4  ">dpcm_be_dai_7w_par7" class="sref">ea> <="+codei_hw_parr" class/soc/soc-pcm.c#-pcm.c#L1265" id  L1">f
./a>,4.a href=6+cm.c#L1265" id  L1">f="6ine" 68sound/soc/soc-pcm.c#Le" clas7+co"sound/7sref">  lose2namF4.sref">7cm.c#77d  L12584 .gge" classsoc-pcm.c#L./a>.spa6nd/soc/soc6pcm.c#L1338" id  L1338" c6ass="63a>, .spa
 cla1pcm.c#L17sn6#335./a7 "6ass="sref">stream./a>)7 <6 h77"v14 4  "und/soc/soc-pcm.c#L13286s335./a> "6"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" class="srefare< "+code=streahref68RIGGERtBESPRtss="sref">dpcm./a>[.a RV_ass=TRIGGERtss="rems" class="sref">hw_params./a>); 1309./a>         /soc-pcm.c#L1270" idm" class="sref="sref">"6ass="srefd/soc/soc-pcm.c#L13286t;.a href=67= .a href67+cod67297" class="line" n7m
  L7297">1297./6sref="+codpararr" class="sref">ea> <6./a7PDATE_NO./7>; <6 href68e" class="sre7">b
.78="sref">list_pararr" class="sref">ea> <6./a7 class="li7e" nam
  L1264">1264./a> 7a hre7="sound/soc/soc-pcm.c#L1265" id  L12657 class="li7e" nam
  L1265">1265./a> 7v14 47.a href="+code="+codp8">1258./a>{ dpcm>7"v14 4  "und/soc/soc-pcm.7#L13278 class="lin_4 .gge"s="st1258" id  L127>1282./a>}7<6 href68sound/soc/soc-pc7.c#Lc7_be_dapcm.c#L1270" idm" class="sref="sref">"6ass="sref"v14 4  "vm
  L1289">1289./a> "v17 *.a href=7+c6de=fe68ATE_HW_PARAMSW_7ARAMS78 class="sref">st5lass="line5pcm_s6bstream" class="sref="sref">sn6#335./a> "6ass="sref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"4p;& 1289./a> "v17 n6#335./a7ass="lrr" class="sref">ea7 <78 id  L1294" class="lf">m
  Lpcm_s6bstrea6 href="slibsioctl=fe" class6bstrea6 href="sref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"4p;&   71264" class="line" nam
  71264"71264./lass="lf">m
  Lpisconnecoue" nam
  L1330"isconneco12vD"v14 4  "vm
  L1289">1289./a> "v171265" id  71265" class="line" nam
  71265"79_soc_pcm_runti">1309./a> "v14 4  "v14 "isconneco any non hrart="st_for_each_entry" class="sref">list_for_each_7c/soc-pcm.7#L13286eam./a>]..6 href="7code=7e_clients" 6lalass="lf">m
  L.a hrfor_dpcm_4  rref">f
./a>->.a hrfor_dpcm_4  rrsref">stream./a>); 9ef=5+code=dev" class="sref", dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" class="614 4 } 1361./a> "v14 4 return .a href6  L1325 nam
  id  L1363".a hrbcm./a>[.a href=".a hrbc+co"laybackm.c#L1330" id ae" class="sre7e_clients.7a>, cm_be_dai_hw_parr" cl7ss="s7ef">ea> <6">1326./at; nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdodebcm./a>[.a href="b_pcm_runtime./a> *.a hr>stream./a>]..a href="+codestream" class="sref"bcm./a>[.a href="b_pcm_OP"-pcm75d/soc7 5las8a6s="sr1so727=class="li7re6="+co69sound/soc/soc-p7m.c#L79a href="+code=devbespsoc-pcm.c#L./a>.spabcm./a>[.a href="b_pcm_ d5v./a>57failed %dcasef="+code=dpcm" clasRV_ass=TRIGGERtsUSPENDa href="+code=streRV_ass=T!dpcm_be_can_update./a>(.a href="+c5=13">f
./a>,4.a href=6+code64chref="+c5=13">f=be" ">dpcm> "v14 4  "und/soc/soc-pcm7); "v14 4 7"und/soc/soc-pcm.c#L132867snd5p79tL12> = state./a> !href="+code=fe">stream./a>]..a href="+codestream" class="sref"76" ir1363dapm__SOC_D_evcla=fe" class="sreL1283dapm__SOC_D_eLINKf="+c5=FRE45" class="line" nam
  L1345"LINKf="+c5=FRE4pcm_OP"-pcm75d/soc7 5las8a6s="sr1so727=1282./a>}7nd6> "86)3st"+cpararr" class="sref">ea> <6./a7 href="+co7e=ret"oue" nam
  L1330"v17 4  679="+code=list_for_each_encar L1280">127 nam
  L1375" class="lin_4 .gge"s="s71258"7id  L12584 .gg="+codpcm./a>NOclas60">1360./a>  != .a 7. L1330" c7claHW_PARAMSsref">dpcm./a7[.a h7970" cpararr" class="sref">ea> <6./a8) 1259./a> "v14 4 struct .a href8_DPCM_STAT8_HW_FREE./a>) && 8a hre80class6ink" 66code=SND_SOC_-pcm.c#L1360" newtream" class=m" claPREc#L1360" newtream" sref"t; nam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286c335./a> "6class="sref">nam
./84 4  "v14 8 continue; <5 href59a> "v84 4  8v14 4 ybackm.c#L1330" id ae" class="sre8264">1264.8a> ) &a80f">ea> <6">ref="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      8265">1265.8a> "v14 4 .a href="+code=8evpre80=fe" class="sref">f
./a>->.a href=81265" id  81265" cm
  L1309">1309./a8 "v1484  "v14 4  "v1m.c#L13286>snd5pcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" class="614 4 } snd_soc_pcm_runtime./a> *.a href="+6de=fe" cla6s="B45" class="line" nam
  L1345"cla6s="B459" am
  L1345">1345./a> "v14 4      82665" id  81d6> "86)3st"+co59ass="sref"0eam
  L1326">-">1264./a> st8eam./80ef">s./a>de=reopcm.c#L1265" id  6nd/soc/soc6pcm.c#L1338" id  L133P"-pcm75d/soc7 5las8a6s="sr1so728p8m.c#L13286" class="lin_4 .gge"s="s895">180d  L12584 .gge" class="sref">e4 .gge"s="st0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" clas0" class="line" nam
  L1270"Rtss="sto "tartup som4 B.srss="sref">st6sTOP"-pcm75d/soc7 5las8a6s="sr1so728p9m.c#L13286laHW_PARAMSsref">dpcm./a8TATE_80 id  L1294" class="lf">m
  L_SOC_D evclaoL129>  , 6v14 4         continue; <6 href64sound/soc/soc-pcm.c#L12+code=stream" class=m" claPREPAR.">snd_soc_pcm_runtime./a> *.a href="+6de=fe" cla6s="sref">f
./a>,4.a href=6+code65ass="sref">dai_link./a>->.a href="6) 1265./a8 "v14 4 .a href="+code=de8back>81L1259">1259./a> "v14 4 struct .a href8 href="sou8d/soc/soc-pcm.c#L13286)7t8te./a81_soc_pcm_runt="+codpcm./a>NOclas60">1360./a>  != .a 81">1361./a8 "v14 4 return .a href6sr8f">f
81treampararr" class="sref">ea> <6./a8i_link./a>8>.a href="6se=fe" cla68lass=81"sound/soc/soc-pcm.c#L1265" id  L1265813eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286c335./a> "6class="sref">nam
./8v14 4     8    "v(.a href="+code=be"8class81  "v1ybackm.c#L1330" id ae" class="sre8laPREPAR.a8href="+code=stream" class8m" cl81href6  L1332">ref="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      8lcm.c#L1328und/soc/s6"v14 4  "v64 4 8   4 81="+code=list_for_each_encar L1280">128v14 4 retu8n .a href6s5s="sref"6nd_p8m_hw_816+code64sound/soc/soc-pcm.c#_SOC_D evclaoL129>  , 6v14 4         continue; <6 href64sound/soc/soc-pcm.c#L12+code=stream" class=m" claPREPAR.">snd_soc_pcm_runtime./a> *.a href="+6de=fe" cla6s="B45" class="line" nam
  L1345"cla6s="B459" am
  L1345">1345./a> "v14 4      8eeeeeeee .8 href="+code=SND_SOC_DPCM8="sre81 id  L1294" class="lf">m
  Lam
  L1326">-">1264./a> 1eopcm.c#L1265" id  6nd/soc/soc6pcm.c#L1338" id  L133P"-pcm75d/soc7 5las8a6s="sr1so728"+code=snd8soc_pcm_runtime" class="s8ef">s8297">1297./6sref="+cod6ref">runtime_updatst0" id  L1260" claref="sound/soc/soc-pcm.c#LP./a>6!ound/soc/soc-pcm.c5 class=dr"st129 id  L1330" class="lrr" clas0" class="line" nam
  L1270"Rtss="sto " href="Isom4 B.srss="sref">st6sTOP"-pcm75d/soc7 5las8a6s="sr1so728am
  L13358619" class=6line" nam
  L8319">82_clients" 6lalass="lf">m
  L_SOC_D evclaoL129>  , 6v14 4         continue; <6 href64sound/soc/soc-pcm.c#L12+code=stream" class=m" claPREPAR.">snd_soc_pcm_runtime./a> *.a href="+6de=fe" cla6s="sref">f
./a>,4.a href=6+code65ass="sref">dai_link./a>->.a href="6) 86v_err" cla6s="sref">dev_8rr./a82"sound/soc/soc-pcm.c#L1265" id  L126584 .6pa
 c68ass="sref">dai_link./a>-&8t;.a 82a href="+code="+codp="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      8> "614 4 68v14 4        -pcm.c#L12768 i  c82_s6bspararr" class="sref">ea> <6./a8v14 4  "un8/soc/soc-pcm.c#L13286ass=8line"82tream./a> *.a href="ss="stri1307" id 8ss="sref">8
./a>,4.a href="+cod6wind8/a>; 82 clasi">1309./a> "v14 4  "v14 Chre" nby (" c mixer/mux changessto d_soc_ audio routa> "between de6s andeach_entry" class="sref">list_for_each_8ntry./a>(.8 href="+code=dpcm" class=8sref"8dpcm./i">1309./a> "v14 4  "v * any DAI "sous.each_entry" class="sref">list_for_each_8neeeeeee .8oc1294" id  L1294" class=8lther82is noi">1309./a> "v14 4  "v *_each_entry" class="sref">list_for_each_8try" class8"sref">list_for_each_entr8./a>(8a hreflass="line"ar6PCM_==oc-pcm.c+code=stream" class=m" claPRE=oc-pcm.c+code=stream" sref"t; nam
  L1327">13eeeeeeee .a ream.widgpcm.c#L1259" id  eeee .a ream.widgpcL1280">1280./a> mdodewidgpcm.c#L1259" id  widgpcL1283P"-pcm75d/soc7 5las8a6s="sr1so728lass="sref8>err./a> < 0) ea> <6./a>); "v18 id  href=8sound/soc/soc-pcm.c#L13288dpcm"83tream./a>]..a href="+cod6"sref">be_6ubs .a car>erme.e"soc/ode=6ubs .a car>L1280">1280./a> mdodecar>erme.e"soc/ode=car>L128am
  L1345">1345./a> "v14 4      8soc/soc-pc8.c#L1265" id  L1265" cm
 8L130983f">ea> <6">ref="sound/soc/socierme.e"soc/ode=iine" nam
  id  L1363"olderme.e"soc/ode=oldine" nam
  id  L1363"newerme.e"soc/ode=newine" nam
  id  L1363"path "v14 4 return .path L128am
  L1345">1345./a> "v14 4      8s .6pa
 c68="sref">dpcm> "v14 4  "un8/soc/83=fe" class="sref">f
./a>->.a href=8;dpcm: hw_8a6ams B63ref">be_clients.8a>, "81264./a>  1361./a> "v14 4 re8urn .83be_dai_hw_parr" class/soc/soc-pcm.c#car>erme.e"soc/ode=car>L128runtime./a> *.a hrwidgpcm.c#L1259" id  widgpcL1284.>  L128am
  L1345">1345./a> "v14 4      8ss="sref">8 = .a href="+c6de=SN63ATE8HW_PA83 class="sref"rarr"eopcm.c#L1265" id  widgpcm.c#L1259" id  widgpcL1284.> e4 .ggecar>erme.e"soc/ode=car>L128runtime./a> *.a hrwidgpcm.c#L1259" id  widgpcL1284.> erme.e"soc/ode=car>L128am
  L1345">1345./a> "v14 4      8seeeeeee .80">1260./a> "v14 4 int .a8href=83is no po">dpprarrm
  L1345">1345./a> "v14 4      8d/s63code=8ND_SOC_dref="+code=hw_par8ms" c84 href="+code=dpcm" cl="+codp>1265./a> "v14 4 .a href="+code=devno back>12vDAIs enabd/soL129sref">pcm.c#L13308/a>, 636./8> "v14 4 return 0; <6 hre86329784" cla>1258./a>{ 184_clients" 6lalass="lf">m
  Lmutex_lock_neste>erme.e"soc/ode=mutex_lock_neste>sref"dpcm" class="sref">duar>erme.e"soc/ode=car>L1284.> ]841309./a> "v14ode=cm.c#L1265" id  ierme.e"soc/ode=iine"run0;f="sound/soc/socierme.e"soc/ode=iine"id  L1 class="sref">duar>erme.e"soc/ode=car>L1284.> 12vDAf="sound/soc/socierme.e"soc/ode=iine"++laybackm.c#L1330" id ae" class="sre8 id  L13078 clrr" class="sref">err./8> <84*.a href="+co./a>]..a href="+cod6"sref">be_6ubs .a ream.widgpc_.a hm.c#L1259" id  eeee .a ream.widgpc_.a hL1280">1280./a> mdode.a hm.c#L1259" id  .a hL128OP"-pcm75d/soc7 5las8a6s="sr1so728.dpcm: hw_8de=devprepare2F4.sref">2o8nd/sp84264./a> 13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64"rundpcm" class="sref">duar>erme.e"soc/ode=car>L1284.> 12vDm./a>, 6v14 4   ierme.e"soc/ode=iine"nam
  L1345">1345./a> "v14 4      8snd_pcm_s68stream" class="sref">snd68cm_s68stream./a> *.a href="ss="stri1307" id 8L1307ref="8ound/soc/soc-pcm.c#L1265"8id  L84 class="sref">ea> </">1309./a> "v14 4  "v14 make sure "soua sAFclass="sref">dpcm> "v14 4  "und/soc/soc-pcm8c#L13286_s8c_dpcm_6et_substream./a>(8a hre84d  L12584 .gge" classsoc-!lass="lf">m
  L_SOC_D evclaoL129>  1264./a> 1345./a> "v14 4      8.a   L13308 class="ltream" clAPs=m"R8AMass85L1259">1259./a> "v14 4 struct .a href8aRTdpcm> "814 4  "und/soc/soc-pcm.c#81328685265./a> "v14 4 .a hre/">1309./a> "v14 4  "v14 only check active "soufor_each_entry" class="sref">list_for_each_8 4 .a href8"+code=list_for_each_entr8" cla8514 4 if (.a hrefcclassoc-!lass="lf">m
  L_SOC_D evclaoL129>   re85f">ea> <6">1326./a> 1345./a> "v14 4      8.id  L13078ef">dpcm./a>, &.a hre8="+co85=fe" class="sref">f
./a>->.a href=8+code=dpcm8 class="sref">dpcm./a>NOs8ef">d85264./a> 1309./a> "v14 4  "v14 (" c sync willa href_hissto d_soc_ DSP path or_each_entry" class="sref">list_for_each_8 nd_pcm_s68SND65v14 4        -pcm.c#81276"85be_dai_hw_parr" class/soc/soc-pcm.c#L_SOC_DPCM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0) 1355./ad_soc_ ode= class="srss="sref">st6sass="line6>1273./a> "v14 4 .spa
 8< e" na8
  L1289">1289./a> "v14 48.a hr85 class="sref">ea> <="+codelass="lf">m
  L_SOC_D evclaoL129>  1264./a> state./a> !h">1309./a> "v14 4  "v14 "kip";.a .adoesnass9;t have w_free./a hpabilitylass="sref">dpcm> "v14 4  "und/soc/soc-pcm84  6v14 4 8       continue; <6 href68sound86 href="+code=dpcm" clsoc-!lass="lf">m
  L_SOC_D evclaoL129>     "v14 4 .a hreeeeeeeee/soc-pcm.c#L1270" id+_get_serme.e"soc/ode=caget_sL128OP"-pcm75d/soc7 5las8a6s="sr1so728e4 .a href8r64" class="line"ar6PCM_=8sref"8619./6> "v162ass="sref">dai_link./a>-&8>1280./a>r8 ine" nam
  L1259">1259./8> "v186f">dpcm./a>[.a RV_ass=m
  id  L1363"path "v14 4 return .path L128a hEINVALclass="line" npath_gpcm.c#L1259" id  ne" npath_gpcctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine" ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128ne" 68sound/soc/soc-pcm.c#Le" clas8ntime" cla8s="sref">snd_soc_pcm_runt8me./a86a href="+code=devbespeopcm.c#L1265" id  path "v14 4 return .path L128ad  L1338" c6ass="63a>, .spa
 cla1pcm.c#L181280">12808/a>rt ine"_soc_pcm_runtim8" cla8atL12> = sta/soc/soc-pcm.c#L_SOwar"slibsioctl=fe" c_SOwar"L1276" i  clrr" class="sref">err./a> < 0) st6sass="line6>1273./a> "v14 4 .spa
 8ioctl<=8sref">stream./a>]..a href8"+cod86be_dai_hw_parr" class = sta/soc/soc-pcm.c#_SOC_D evclaoL129>  1264./a> sn6#state" cl6_dai_hw_free./a>(.a href=6+ne" 68sound/soc/soc-pcm.c#Le" clas8nlt; e" na8  L1327">13eeeeeeee .a hr8f="+c86 class="sref">ea> <ref">sta/soc/soc-pcm.c#mutex_unlockerme.e"soc/ode=mutex_unlocksref"dpcm" class="sref">duar>erme.e"soc/ode=car>L1284.> 1345./a> "v14 4      8-pcm.c#L13886cstate" cl6>->.a hre8="+co86"v14 4  "und/soc/soc-pararr" class="sref">ea> <6./a8>); <6 hre866sound1">1361./a> "v14 48retur87L1259">1259./a> "v14 4 struct .a href81267"61267866297" class="line" nam
 8L129787265./a> "v14 4 .a hreh">1309./a> "v14 4  "v14 d_soc_ any new w_free./apath or_each_entry" class="sref">list_for_each_8ss="line" 8am
  L1258">1258./a>{ e4 .ggenewerme.e"soc/ode=newine"a hEINVALclass="line" nprocess_path "v14 4 return .ne" nprocess_path ctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine" ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128, 1ne" 68sound/soc/soc-pcm.c#Le" clas8code=dev" 8lass="sref">d6v./a>67ref"8be_cl87f">dpcm./a>[.a RV_asseopcm.c#L1265" id  newerme.e"soc/ode=newine"38" c6ass="63a>, .spa
 cla1pcm.c#L18serr" clas8="sref">err./a>,4.a =="+c8de=fe87a href="+code=devbespte./a> !href="+code=fe"c#L1360" newtream" class=m" claPREc#L1360" newtream" sref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8c280">12808lass="lin_4 .gge" class="8ref">87tL12> = sta/soc/soc-pcm.c#L#L13clear_pend" c_76" ir1363dapm__SOC_L#L13clear_pend" c_76" isref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8coctl<=8ass="sref">e4 .gge"s="st08 id  87be_dai_hw_parr" classref">sta/soc/soc-pcm.c#L#L136bstisconnecoue" nam
  L1330"#L136bstisconnecosref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8clt; e" na84     4 4  ">dpcm_be_dai_8w_par8" class="sref">ea> <pararr" class="sref">ea> <6./a8>#L13286_s8sref">  lose2namF4.sref">8cm.c#87pcm./" 68sound/soc/soc-pcm.c#Le" clas8sn6#335./a8 "6ass="sref">stream./a>)8 <6 h87"v14 4  "und/soc/soc-h">1309./a> "v14 4  "v14 d_soc_ any old w_free./apath or_each_entry" class="sref">list_for_each_8"ref="soun8/soc/soc-pcm.c#L1265" id 8L12658 cm
  L1309">1309./a> am
  id  L1363"olderme.e"soc/ode=oldine"a hEINVALclass="line" nprocess_path "v14 4 return .ne" nprocess_path ctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine" ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128, 0ne" 68sound/soc/soc-pcm.c#Le" clas8= .a href687" class="line" n7m
  L728m
  L8d83!="sr class="sref">ea> m.c#L1265" id  newerme.e"soc/ode=oldine"a hEc6ass="63a>, .spa
 cla1pcm.c#L18serrE_NO./7>; 86 href68e" class="sre7">b8.78="88 if (.a hrefcclas="sra> !href="+code=fe"c#L1360" newtream" class=m" claPREc#L1360" oldtream" sref"t; neam./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8clt;ss="li7e" 8am
  L1264">1264./a> 7a h8e7="s88a> <6">1326./a> stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8coctss="li7e" 8am
  L1265">1265./a> 7v14847.a 88ef="+code=devbespte./a> !href="+code=fe"c#L1360" isconnecoue" nam
  L1330"#L136bstisconnecosref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" 68sound/soc/soc-pcm.c#Le" clas8clt;>dpcm>7"v18 4  "und/soc/soc-pcm.7#L18278 c88> = ea> <6./a8>#L12./a>}7<6 8ref68sound/soc/soc-pc7.c#8c7_be88m./a> *.a href="ss="stri1307" id 8L130 href=7+c68e=fe68ATE_HW_PARAMSW_7ARA8S78 c8ass="sc#L1270" id+_get_serme.e"soc/ode=caget_sL128OP"- 4  "vm
  L1289">1289./a> "v171268"und/s7c/s8c-pcm.c#L13286=stream7 c68s7="s8812584 .gge" class="sre09./a> "v14 4  "v14 "kip";.a .adoesnass9;t have w_frt_sL128abilitylass="sref">dpcm> "v14 4  "und/soc/soc-pcm84  6335./a7ass8"lrr" class="sref">ea7 &l8;78 i88 4  "und/soc/soc-h">1!lass="lf">m
  L_SOC_D evclaoL129>      71268" class="line" nam
  71268"712689 L1309">1309./a>         /soccnueam
  L1345">1345./a> "v14 4      8.id " id  71268" class="line" nam
  71268"79_s89a>1258./a>{ ]..6 href="7cod8=7e_c89 if (.a hrefcclas="sref">e4 .ggenewe "v14 4 return .path L128a hEINVALclass="line" npath_gpcm.c#L1259" id  ne" npath_gpcctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128ne" 68sound/soc/soc-pcm.c#Le" clas8ntimients.7a>,8cm_be_dai_hw_parr" cl7ss=8s7ef"8ea> <6">1326./at; nm.c#L1265" id  path "v14 4 return .path L128ad  L1338" c6ass="63a>, .spa
 cla1pcm.c#L181280ss="li7re68"+co69sound/soc/soc-p7m.c8L79a 8ref="+code=devbespsoc-a> !href="+code=fe"c#L13ar"slibsioctl=fe" c_SOwar"L1276" i  clrr" class="sref">err./a> < 0) st6sass="line6>1273./a> "v14 4 .spa
 8ioctv14 4 7"un8/soc/soc-pcm.c#L132867snd8p79tL82> = state./a> !hrefa> !href="+code=fe"c#L1_D evclaoL129>  1264./a> sn6#state" cl6_dai_hw_frt_sL128a href=6+ne" 68sound/soc/soc-pcm.c#Le" clas8nlt;2./a>}7nd68 "86)3sta/soc/soc-pcm.c#L#L1x_unlockerme.e"soc/ode=mutex_unlocksref"dpcm" class="sref">duar>erme.e"soc/ode=car>L1284.> ea> <ref">sta/socodp="sound/soc/socpath "v14 4 return .path L128am
  L1345">1345./a> "v14 4      8-pcm
  L1375" 8lass="lin_4 .gge"s="s71258"7id 8912584 .gge" class="srrr" class="sref">ea> <6./a8>#L1330" c7cla8W_PARAMSsref">dpcm./a7[.a8h79708 cparar" class="sref">ea> <6./a8>#L9 href=8sou9d/soc/soc-pcm.c#L12978 id9 80L190 L1309">1309./a> am
  09./a> "v14 4  "v14 d_soc_ any new w_frt_sL128a or_each_entry" class="sref">list_for_each_8"re9M_STAT8_HW9FREE./a>) && 8a h9e80cl901297./6sref="+cod6ref">runtime_updatrme.e"soc/ode=newine"a hEINVALclass="line" nprocess_path "v14 4 return .ne" nprocess_path ctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128ne" e" 68sound/soc/soc-pcm.c#Le" clas8cod9 "v14 8 co9tinue; <5 href59a> "v84 49 8v1490 if (.a hrefcclassoc-!lasL1265" id  newerme.e"soc/ode=newine"38" c6ass="63a>, .spa
 cla1pcm.c#L18ser9>1264.8a> 9a hCM_STATE_HW_FREE./8>) 9a80f"90a> <6">1326./a> stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9 4264.8a> 9a+co69sound/soc/soc-p7m.c9e80=f90ef="+code=devbespte./a> !href="+code=fe"c#L1360" r_pend" c_76" ir1363dapm__SOC_L#L13clear_pend" c_76" isref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9 5264.8a> 9asoc/soc-pcm.c#L132867snd9484  90> = sta/soc/soc-pcm.c#L#L13cleaisconnecoue" nam
  L1330"#L136bstisconnecosref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9 6264.8a> 9a"86)3ea> <6./a8>#L9c#L13286)59="sref"6sss="sref">st8eam9/80ef90ode=list_for_each_encar L1280">128v149c#L13286" 9lass="lin_4 .gge"s="s895"9180d 9L12584 .gge" class="sre09./a> "v14 4  "v14 d_soc_ any old w_frt_sL128a or_each_entry" class="sref">list_for_each_8"re9M9L13286" 9l_PARAMSsref">dpcm./a7[.a9_80 i90sref">state./a> !href="+code=fe"amnarme.e"soc/ode=oldine"a hEINVALclass="line" nprocess_path "v14 4 return .ne" nprocess_path ctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndpcm" class="sref">d.a hm.c#L1259" id  .a hL128ne" e" 68sound/soc/soc-pcm.c#Le" clas8= .9265./a8 "v94 4 .a href="+code=de8bac9>81L191f="+code=dpcm" clsoc-!lasL1265" id  newerme.e"soc/ode=oldine"a hEc6ass="63a>, .spa
 cla1pcm.c#L18ser9f="sou8d/s9c/soc-pcm.c#L13286)7t8te.9a81_s91/a> "v14 4 .a hreeeeeeeee/soc="+code=fe"c#L1360" newtream" class=m" claPREc#L1360" oldtream" sref"t; neam./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9361./a8 "v94 4 return .a href6sr8f">9
81tr91 if (.a hrefcclas="sra> !href="+code=fe"c#L1360" r_pend" c_76" ir1363dapm__SOC_L#L13clear_pend" c_76" isref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9nk./a>8>9.a href="6se=fe" cla68las9=81"s91a> <6">1326./a> stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s="srPLAYCAPTU class="line" nam
  L12a6s="srPLAYCAPTU c ndp68sound/soc/soc-pcm.c#Le" clas8cod9ref="s8und9soc/soc-pcm.c#L1355" 8d  9181
 91ef="+code=devbespte./rr" class="sref">ea> <6./a8>#L94     8   9"v(.a href="+code=be"8cla9s81  91ss="lin_4 .gge"s="st1258" id  L127>129EPAR.a8hre9="+code=stream" class8m" 9l81hr91ai_hw_parr" class/soc/soc-pcm.c#L_SOCpath_gpccpu#L1259" id  ne" npath_gpccpu#"dpcm" class="sref">duar>m.c#L1259" id  .a hL128ne" 68sound/soc/soc-pcm.c#Le" clas8nti9c#L1328und9soc/s6"v14 4  "v64 4 8   9 81="91ss="sref">ea>rr" class="sref">ea> <6./a8>#L94#L13286" 9 href6s5s="sref"6nd_p8m_h9_816+91/" 68sound/soc/soc-pcm.c#Le" clas8sn69eeee .8 hr9f="+code=SND_SOC_DPCM8="s9e81 i9  L1294" class="lf">m
  Lam
 x_unlockerme.e"soc/ode=mutex_unlocksref"dpcm" class="sref">duar>erme.e"soc/ode=car>L1284.> 1eopcodp8">1258./a>{ 1297.rr" class="sref">ea> <6./a8>#L9 L133586199 class=6line" nam
  L83199>82_c9ients"="line"ar6PCM_==oc-pcm.c+codiscongital_xine.e"soc/ode=mutepcm.c+codiscongital_xine"dpcmam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64" class="line"ar6PCM_=="+cxine.e"soc/ode=mutexine"dpcpcm75d/soc7 5las8a6s="sr1so728e" 9nk./a>86v_9rr" cla6s="sref">dev_8rr.9a82"s9und/soass="63a>, .spa
 cla1pcm.c#L18ser9pa
 c68ass9"sref">dai_link./a>-&8t;.9 82a 9ref="+code="+cf="+cod6"sref">be_6ubs .a ream.p-pcm.c#L1295" id  .a ream.p-p0">1280./a> mdode=UCLoc-pcm.c#L1295" id 6seam./a58./a>{ be_6ubsrbc+cheae.e"soc/ode=car>rbc+cheae0">1280./a> mdode=UCLa> "v14 4 return .a hr  L1325 nam =8./a>{ dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla.c#L12a6s="srPLAYBACK5" class="line" nam.c#L12a6s="srPLAYBACKine"ne" soc-p62code=">1361./a> "v14 4 return .a href6  L1325 nam58./a>{ 9 82 c92ode=list_for_each_encar L1280">128v149./a>(.8 hr9f="+code=dpcm" class=8sre9"8dpc92de64sound/soc/soc-pcm.c#_SOCrfor_dpcm_4  rref">f
./a>->.a hrfor_dpcm_4  rrsref">stream./a>); 9ef=5+code=dev" class="sref", dpcm0./a> mdode=UCLa> "v14 4 return .a hr  L1325 nam
  id  L1363".a hrbcm./a>[.a href=".a hrbc+co"laybackm.c#L1330" id ae" class="sre7e_c9eeee .8oc1994" id  L1294" class=8lth9r82is92cparar" class="sref">ea> <6./a8>#L9 class8"sr9f">list_for_each_entr8./a9(8a h93f="+code=dpcm" clsoc-am
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdodebcm./a>[.a href="b_pcm_runtime./a> *.a hr>stream./a>]..a href="+codestream" class="sref"bcm./a>[.a href="b_pcm_OP"-pcm75d/soc7 5las8a6s="sr1so727=cl9="sref8>er9./a> < 0)  "v14 4 .a hreeeeef="+cod6"sref">be_6ubs .a ream.we.e"soc/ode=cpus .a ream.we0">1280./a> mdode=UCLowe.e"soc/ode=cpus.we0">12me./a> *.a hr>str/a>[.a href="b_pcm_ be_6ubs .a ream.we_e0" id  L1260" clariv .a ream.we_e0" id0">1280./a> mdode=UCLorcm.c#L1270" id  Lrvruntime./a> *.a hr>strewe.e"soc/ode=cpus.we0">1 pcm75d/soc7 5las8a6s="sr1so727=cl9=k./a>86v_91265" id  L1265" cm
 8L139983f"93nd/soc/soc-pcm.c#L1265" id  L126584 .9pa
 c68="s9ef">dpcm> "v14 4  "un8/so9/83=f93ef="+code=devbespsoc-pcm.c#L./a>.spabcm./a>[.a href="b_pcm_ 1264./a>  be_clients.8a>,9"812693> = sta/soccnueam
  L1345">1345./a> "v14 4      8.id94  "un8   91">1361./a> "v14 4 re8urn9.83be93m./a> *.a href="ss="stri1307" id 8L139sref">8 = 9a href="+c6de=SN63ATE8HW_9A83 c93ss="sref">ea> </">13"+code=fe"c#L13ar"CM_STATE_STOP"-pcm.c#L1276" i  clrr" class="s/a>[.a href="b_pcm_ st6sass="e./a> *.a hr>str/a>[.a href="b_pcm_ 1264./a> (.8re&9t; L1345" class="line8 na9
83d 93/" 68sound/soc/soc-pcm.c#Le" clas8sn69eeee .80">9260./a> "v14 4 int .a8hre9=83is93 4  "und/soc/soc-h">1!las0./a> mdode=UCLorcm.c#L1270" id  Lrvruntoc-pcm.c#L1265" id  op4 4 return .a hrop4  *.a hr>strewe.e"soc/ode=cpus.we0">1ea> </">13"+code=fe"c#L13rcm.c#L1270" id  Lrvruntoc-pcm.c#L1265" id  op4 4 return .a hrop4  mdode=UCLowe.e"soc/ode=cpus.we0">1"e./a> *.a hr>strxine.e"soc/ode=mutexine"dpcp8sound/soc/soc-pcm.c#Le" clas8+#L9 636./8> "914 4 return 0; <6 hre86329784" 94/a> "v14 4 .arr" class="sref">ea> <6./a8>#L9id  L1866"9classprepare2nam
  L1866"9184_c946> "v162ass="sref">dai_link./a>-&8>129]..a h8ef=9+code=runtime_upda6ea8./a9]841399./a> "v14ode=odp8">1258./a>{ err./8> &9t84*.9 href=rr" class="sref">ea> <6./a8>#L9i: hw_8a6a9evprepare2F4.sref">2o8nd/9p842694ss="lin_4 .gge"s="st1258" id  L127>129pcm_s68str9am" class="sref">snd68cm_968str9am./a>" 66code=SND_SOC_-pcm.c#L1360" fea6 hro" cL1259" id  ne" npathfea6 hro" c"dpcmam
  L1327">13eeeeeeee .a pathsub  continue; <6 href64s.a pathsub  cont0">1280./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpcpcm75d/soc7 5las8a6s="sr1so728e" 93ref">8 = 9/soc/soc-pcm.c#L1265"8id 9L84 c9ass="skm.c#L1330" id ae" class="sre7e_c93286_s8c_d9cm_6et_substream./a>(8a h9e84d 9L12584 .gge" cam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64"rundpcm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc pcm75d/soc7 5las8a6s="sr1so727=cl9oc-pcm8c#L93466 id  64sound/soc/8oc19984"v94 4  "und/soc/f="+cod6"sref">be_6ubs .a ream.p-pcm.c#L1295" id  .a ream.p-p0">1280./a> mdode=UCLoc-pcm.c#L1295" id 6seam./a58./a>{ be_6ubs .a ream.widgpc_.a hm.c#L1259" id  eeee .a ream.widgpc_.a hL1280">1280./a> mdode.a hm.c#L1259" id  .a hL128OP"-pcm75d/soc7 5las8a6s="sr1so728.dp9pcm> "814 9  "und/soc/soc-pcm.c#81329685269./a> "v14 4 .a="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      8lcm9a href8"+c9de=list_for_each_entr8" c9a851494 if (.a hrefc="line"ar6PCM_=="+code=fe" class="sr-pcm.c#L13286cpcm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc1345./a> "v14 4      8lcm9a..a h8ef=9-pcm.c#L13506 id  65r8f">9e85f"95nd/soc/soc-pcm.c#L1265" id  L126584 .9 L13078ef"9dpcm./a>, &.a hre8="+9o85=f95ef="+code=dev="lf">m
  Lam
 x_unlo_neste>erme.e"soc/ode=mutex_lock_neste>sref"dpcm" class="sref">duar>_D evclaoL129>  L1284.> dpcm./a>NOs8ef"9d85269./a> dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla  continue; <6 href64sound/soc/soc-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc1pcm75d/soc7 5las8a6s="sr1so728./a9ecm_s68str95v14 4        -pcm.c#81279"85be95m./a> *.a href="ss="stri1307" id 8L139 e" na8
  91289">1289./a> "v14 48.a 9r85 c95s./a>de=reopcm.c#L1265" id  6nd/npath_gpcm.c#L1259" id  ne" npath_gpcctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm  continue; <6 href64sound/soc/cm" class="sref">d.a hm.c#L1259" id  .a hL128ne" 6L1338=" c6ass="63a>, .spa
 cla1pcm.c#L1812893286_s8+co9e=list_for_each_enmut8xL19885pc9512584 .gge" class="sref">e4 .gge"s="st0"CM_STATE_STOP"-pcm.c#L1276" i  clrr" class="sref">err./a> < 0)  "e"sref">st6sass="line6>1273./a> "v14 4 .spa
 8ioc9oc-pcm8 state./a> !h">1a h"dpcmss="sref">dpcm./a>[.a href="+code=stream" class="sref">stre264">1264./a> sn6#state" cl6_dai_hw_frt_sL128a href=6+ne"  :ef">sn6#state" cl6_dai_hw_free./a>(.a href=6+ne" 68sound/soc/soc-pcm.c#Le" clas8nlt9v14 4 8   9   continue; <6 href68sou9d86 h9ef="+code=dpcmrr" class="sref">ea> <6./a8>#L9lass="8re"9ound/sioctl< "+cod8=st9e862696a>1258./a>{  "v14 4  "v14 d_socalculany dPOK.randive "souss="338oc-pc BE oc/seach_entry" class="sref">list_for_each_8"re90./a>r8 in9" nam
  L1259">1259./8> "9186f"9dpcm./a>[.a RVL1265" id  6nd/npath_ss_path "v14 4 return .ne" nprocess_path ctl&l>stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cm  continue; <6 href64sound/soc/cm" class="sref">d.a hm.c#L1259" id  .a hL128ne" e" 68sound/soc/soc-pcm.c#Le" clas8cod9e" cla8s="9ref">snd_soc_pcm_runt8me.9a86a 96 class="sref">f
./a>->.a href=8+co9">12808/a>9t ine"_soc_pcm_runtim8" c9a8atL96/a> dpcm. L1326">-">1264./a> stream./a>]..a href8"+c9d86be9dai_hw_parr" cm.c#L1265" id  6nd/soc/soc6pcm.c#L1338" id  L133P"-p6ass="63a>, .spa
 cla1pcm.c#L181289 e" na8  L9327">13eeeeeeee .a hr8f="9c86 c9ass="sref">ea> <ref"=09./a> "v14 4  "v14 d_socle./aup _hislor_each_entry" class="sref">list_for_each_8 4 93286_s8 md9de=UCLASS_RUNTIME" ca864"9c86d 9L12584 .gge" classssss/soc-pcm.c#_SOCrfor_dpcm_4  rref">f
./a>->.a hrfor_dpcm_4  rrsref">stream./a>); 9ef=5+code=dev" class="sref", dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla  continue; <6 href64sound/soc/soc-pcm.c#L12+cod1./a> "v14 4 return .a href6  L1325 nam
  id  L1363".a hrbcm./a>[.a href=".a hrbc+co"layba class="sref">list_for_each_8 4 93c-pcm8 ->.a hre8="+9o86"v94 4  "und/soc/soc-paraa>[.a RVL1265" id  6nd/npat/a>]..a href="+codestream" class="sref"bcm.ir1363dapm__SOC_L#L1isref">stime./a> *.a href="+6de=fe" cla6LINK_STef">FREclass="line" nam
  LCARD cla6LINK_STef">FREc0">1pcm75d/soc7 5las8a6s="sr1so728./a9<6 hre866s9und1">1361./a> "v14 48ret9r87L1959">1259./a> "v14 4 struct .a href81269"61267866297" class="line" nam
 8L129787269./a> "v14 4 .a hreh">13Lclass="line" n60" isconnecoue" nam
  L1330"#L136bstisconnecosref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cmamp; 1258./a>{ e4 .ggenewe/a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla  continue; <6 href64sound/soc/soc-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9<./a>r8 in9="sref">d6v./a>67ref"8be_9l87f"9dpcm./a>[.a RVrr" class="sref">ea> <6./a8>#L9" clas8="s9ef">err./a>,4.a =="+c8de=9e87a 97 class="sref">f
./a>->.a href=8+co9">12808las9="lin_4 .gge" class="8ref9>87tL97/a> dpcm.360" r_pend" c_76" ir1363dapm__SOC_L#L13clear_pend" c_76" isref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cmamp; e4 .gge"s="st08 id9 87be9dai_hw_parr" cL1265" id  6nd/npath_gpcmpu#L1259" id  ne" npath_gpccpu#"dpcm" class="sref">duar>m.c#L1259" id  .a hL128ne" 68sound/soc/soc-pcm.c#Le" clas8nti9 e" na84  9  4 4  ">dpcm_be_dai_8w_p9r8" c9ass="sref">ea>="lf">m
  Lam
 x_unlockerme.e"soc/ode=mutex_unlocksref"dpcm" class="sref">duar>_D evclaoL129>  L1284.>   lose2namF4.sref">8cm.9#87pc9712584 .gge" codp="sound/soc/soc-pcm.c#L1259" id  L1259" am
  L1345">1345./a> "v14 4      8> "9335./a8 "69ss="sref">stream./a>)8 <69h87"v94 4  "rr" class="sref">ea> <6./a8>#L9="soun8/so9/soc-pcm.c#L1265" id 8L12958 cm989">1259./a> "v14 4 struct .a href81269 href687" 9lass="line" n7m
  L728m
 9L8d839="sr c" 66code=SND_SOC_-pcm.c#L1360" fea6 hrclos63dapm__SOC_L#L13cleafea6 hrclos6"dpcmam
  L1327">13eeeeeeee .a pathsub  continue; <6 href64s.a pathsub  cont0">1280./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpcpcm75d/soc7 5las8a6s="sr1so728e" 9E_NO./7>; 96 href68e" class="sre7">b9.78="98 if (ass="63a>, .spa
 cla1pcm.c#L181289ss="li7e" 9am
  L1264">1264./a> 7a h9e7="s98a> <6">132am
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLASS_RUNTIME" car64"rundpcm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc pcm75d/soc7 5la
 cla1pcm.c#L181289s clas8="s9am
  L1265">1265./a> 7v14947.a 98ef="+code="+cf="+cod6"sref">be_6ubs .a ream.p-pcm.c#L1295" id  .a ream.p-p0">1280./a> mdode=UCLoc-pcm.c#L1295" id 6seam./a58./a>{  = 1345./a> "v14 4      8> "92./a>}7<6 9ref68sound/soc/soc-pc7.c#9c7_be98m./a> *.a href="ss="stri1307" id 8L139 href=7+c69e=fe68ATE_HW_PARAMSW_7ARA9S78 c98ss="sref">ea>="lf">m
  Lam
 x_unlo_neste>erme.e"soc/ode=mutex_lock_neste>sref"dpcm" class="sref">duar>_D evclaoL129>  L1284.> -">1264./a> stream./a>); 92inueehsub  continue; <6 href64AShsub  cont"dpcp8sound/soc/soc-pcm.c#Le" clas8cod9335./a7ass9"lrr" class="sref">ea7 &l9;78 i98cparar" class="sref">ea> <6./a8>#L9ef">  71269" class="line" nam
  71269"712699 L1309">1309.309./a> "v14 4  "v14 make srk FE;t hasslor_eacondyd_sopcm each_entry" class="sref">list_for_each_8 4 9" id  71269" class="line" nam
  71269"79_s991e64sound/soc/soc-pcm.c#_SOCrfor_dpcm_4  rref">f
./a>->.a hrfor_dpcm_4  rrsref">stream./a>); 9ef=5+code=dev" class="sref", dpcm" class="sref">dpcm./a>[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla  continue; <6 href64sound/soc/soc-pcm.c#L12+cod1./a> "v14 4 return .a href6  L1325 nam
  id  L1363".a hrbcm./a>[.a href=".a hrbc+co"layba class="sref">list_for_each_8 4 9c-pcm.7#L19286eam./a>]..6 href="7cod9=7e_c99 if (.a hrefcclas="sref">e4 .ggenewenpat/a>]..a href="+codestream" class="sref"bcm.ir1363dapm__SOC_L#L1isref">stime./a> *.a href="+6de=fe" cla6LINK_STef">FREclass="line" nam
  LCARD cla6LINK_STef">FREc0">1pcm75d/soc7 5las8a6s="sr1so728./a9ients.7a>,9cm_be_dai_hw_parr" cl7ss=9s7ef"99nd/soc/soc-pcm.c#L1265" id  L126584 .9ss="li7re69"+co69sound/soc/soc-p7m.c9L79a 99ef="+code=dev="lf">m
  Lam
 n60" isconnecoue" nam
  L1330"#L136bstisconnecosref">stream./a>); 92inueespoked4 .gge"ine" nam
  id  L1363"6+cmamp; 1292./a>}7nd69 "86)3[.a href="+code=stream" class="sref">stream./a>]..a href="+code=runtime_upda6w" cla  continue; <6 href64sound/soc/soc-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7e=r9t"oue" nam
  L1330"v17 4 9679="99ss="sref">ea>="lf">m
  Lam
 x_unlockerme.e"soc/ode=mutex_unlocksref"dpcm" class="sref">duar>_D evclaoL129>  L1284.> 1345./a> "v14 4      8> "9330" c7cla9W_PARAMSsref">dpcm./a7[.a9h797099 4  "rr" class="sref">ea> <6./a8>#20 href=8so20 hreRAMSsref">dpcm./a7[.20 hr>20 hs="lin/pre>dpcf=8s7e/27/baa2cc99nf3d2bade8eba2ae60724as925ce_3/20 hr>" class="sref">ea> <6./a8>#20 1ref=8so20  class="line" nam
  71220  c>20 1e64s=09./a> "v14 4  "v14 d_socundny o w_frecmach_entry" class="sref">list_for_each_8 420 2ref=8so20 86eam./a>]..6 href="7co20 86>20 ents"="line"ar6PCM_==oc-pcm.reamp-pcm.c#L1295" id  cm.reamp-p"dpcmam
  L1327">13eeeeeeee .a href="+code=SND_SOC_DPCM_UCLASS_RUNTIME" ccm L1280">1280./a> mdode=UCLrme.e"soc/ode=+t>12vDm./ass="line"ar6PCM_=="+cnupcm.c#L1295" id nuplayba class="sref">list_for_each_8 420 3ref=8so20 m_be_dai_hw_parr" cl7ss20 m_>20 nd/soass="63a>, .spa
 cla1pcm.c#L18se20 4ref=8so20 +co69sound/soc/soc-p7m.20 +c>20 " ccm L1280">1280./a> mdode=UCLASS_RUNTIME"plat128="sref">ea> <6./a8>#L9lass="8re"9ound/sioctl< "+cod8=st9e862696a>1258./a>{ 13ound/soc/so866" c-pcm.7#L18286eam./a>].5 ccm L1280">1280./an0t;6">1326./a> list_for_each_8 420 2356="line" nam
  71220  c>20 1e64s=09./a> "vo6">13srea7" c9a7s="99ai_hw_parr" cL1265" id  6nd//hw_pa696aam =8./a>{ be_6ub13cleanewtream" class=m" claPREc#L1360" newtre9ef">list_for_eacm.werefcclas="srf="+cod6"sref">be_6ub20 1e64s=09./a> "vo6">13srea7" c9a76="99ai_hw_"+code=runtime_upda6w" hw_"+696a6m =8./a>{ list_for_eacm=caget_sL128OP"-oc-pcm.c#L12chan20 1e64s=09./a> "vo6">13srea7" c9a77="99ai_hw_uar>_D evclaoL129> {  =  "9330" c7cla9W_PARAhw_ 8696apcm./a7[.a9h7chara>); 92inueespoked4_+ne"  :ef">sn6#stated4_+ne"UL"+c64]ass="sr-pcm.c#L13286cpcm0./a> md96a9="99ai_hw_in/pre>dhw_in696aime./a> *.a h94 if (.a hrefc="line"ar6PCM_=="+code=fe" cl13c0p79tL99ss="lin_4 o728e" class="8re"sound/sioctl< 13c0p79tL99ss="lin_4 28e" cef">  71268" class="line" n13c0ass="sr-pcm.c#L13286cpcm0./a> md9613/20 hr>" 1pcm.c#L18ser9f="sou8d/s" 1pc>" 1p="+code=stream" class="sref">stream" 1r_each_8 4ream" sref"t; neam./a>); 4rea>" 1ntr8" c9a85149="9c86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6dym./ic6cp?ef">sn6#statym./ictr8" ||cleanewtream" class=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6+o v19 4  "und/soc/so+o v190 4re d_socle./aup _hislor_each_entry"" 1>13eeeeeeear_pend" c_76" isref">steear_>" 1ATE_HW_FREE./8>) 9a80f"90a> <6">1326. hrplaree./L128oc/soc-pcm.c#L12channrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1so728e" class="8re"sound/sioctl< "+cod8=stre86265./a> "v14 4 .a hreeeeeeeee/soc-pcm.c#L1270" id+_get_serme.e"soc/ode=caget_s" 1+c>20 " ccnecosref">stream./a>); 9ccnec>" 1ked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6so728e" class="8re"sound/sioctl< 13c1ass="sr-pcm.c#L13286cpcm0./a> md961ss="8re"9o8cla9s81  91ss="lin_4 .g9o8cl>" 1-pcm.c#L1265" id  ignore_sus" c_64./a>   71268" class="line" nam
  71268"712689 L1309">1309./a>         /soccnueam
  L1345">1345./a> "v14 4      8.id " i" 1s="99ai_hw_parr" class/soc/soc-pcmhw_pa>" 1ked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s28e" cef">  71268" class="line" n13c1ass="sr-pcm.c#L13286cpcm0./a> md9616="99ai_hwss="sref">duar>m.c#L1259hwss=>" 16m =8./a>{ " 1=UCLASS_RUNTIME" ca86ore_sus" c_64./a> be_6ubannrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1so728e" class="8re"sound/sioctl< "+cod8=stre86265./a> "v14 4 .a hreeeeeeeee/soc-pcm.c#L1270" id+_get_serme.e"soc/ode=caget_s" 18="99ai_hw4" class="lf">m
  Lam
 xhw4" >" 1886cstate" cl6>->.a hre8="3"6+cm.c#L12a6so728e" class="8re"sound/sioctl< 13c1ass="sr-pcm.c#L13286cpcm0./a> md9619="99ai_hwduar>erme.e"soc/ode=car>hwdua>" 1;.a href=51ngital_xine.e"soc/ode=muteonge.werefcclas="srf="+cod6"sref">be_6ubannrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1s28e" cef">  71268" class="line" nam
  71268"712689 L1309">1309./a>         /soccnueam
  L1345">1345./a> "v14 4      8.id " i" 23/20 hr>" 8ef"9s82979>1297.rr" cla" 8ef>" 8eed4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s28e" cef">  71268" class="line" n13c1ass="sr-pcm.c#L13286cpcm0./a> md962r_each_8 4"="line"ar6PCM_==oc-pcm. 4"=">" 8a>-&8>129]..a h8ef=9+code=runtime_upda6ea8./a" 8>13eeeeeee"dpcmam
  L1327">13eeeeeee"dp>" 8sound/soc/so7ref9 L13078 cl9r" class" 8+c>20 " cc+code="+cf="+cod6"sref">cc+co>" 8am
  id  L1363 86>20 ents"="line"ar6PCM_==oc-the PCM-pcm.c#L1295" id  cm.reamp-p"dpcmam
  L13272ss="8re"9odode=UCLoc-pcm.c#L1295" 9odod>" 8-pcm.c#L1265"9="9c86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6+o v19 4  "und/soc/so+o v190 4re d_socle./aup _hislor_each_entry"" 2s="99ai_hwCLa> "v14 4 return .a hrhwCLa>" 8ked4 .gge"ine" nam
  sound/soc/so7re sn6#stated4_+ne"UL"+, sizeofc9v14 4 7"un9/soed4_+ne"  :ef">sn6#stated4_+ne"UL"+)1)ss="sref">dpcm./a>[.a href="+code=stream" cla" 86="99ai_hw./a>]..a href="+code=runhw./a>" 8de=car>L1284.> list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6s8a6s=_+ne"  :ef">sn6#stats8a6s=_+ne"#L1259" id  L1259" am
  L1345">1345./" 87="99ai_hwound/soc/soc-pcm.c#_SOCrhwoun>" 84  rref">f
./a>->.a hrfor_dpcm_4 " 88="99ai_hwam./a>); 9ef=5+code=dev"hwam.>" 8class="sref", dpcm" class="sref">dpchsub  continue; <6 href64AShsub  cont"dpcp8/7>; 96 ed4_94 ernal 4  "und/soc/soc-pc192 ed4_94 ernal28-pc9v14 4 7"un9/soass=m" claPREc#L1360" newtre9ef">list_for_eacm9lass="lin_4 .gge"s="s71259"7id 9912584 .gge" c-pcm9lass="lin_4 .gge"c-pcm9lasnd9p79tL99ss="lin_4 ed4_+ne"  :ef">sn6#stated4_+ne"UL"+, /soass="63a>, .spa
 cla1pcm.c#L18se20 4rm./a>[.a href="+code=stream" cla" 89="99ai_hwode=dpcm" clsoc-am
  L13hwode>" 8ime./a> *.a href="+6de=fe" cl dpcm" class="sref">dpco728e" class="8re"sound/sioctl< p79tL99ss="lin_4 28e" cef">  71268" class="line" n<6 href64sound/soc/socv19 4  "und/soc/so=fe" cl59" id  L1259" am
  L1345">1345./" 33/20 hr>"  ccm L1280">1280./a> mdo"  cc>"  cm =8./a>{  mdode=UCLowe.e"soc/ 4./a>"  e" class="sre7">b8.78="88 if (.a hrefccl"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6dym./ic6cp?ef">sn6#statym./ictr8"5">1345./a> "v14 4      8.id " i" 3>13eeeeeee_e0" id0">1280./a> mdodeee_e0>"  ; 92inueespoked4 .gge"ine" nam
  id  L1363"6 sn6#stated4_+ne"UL"+, sizeofc9v14 4 7"un9/soed4_+ne"  :ef">sn6#stated4_+ne"UL"+)1a(*)ss="sref">dpcm./a>[.a href="+code=stream" cla" 3+c>20 " cccode=devbespsoc-pcm.c#L.cccod>"  ked4 .gge"ine" nam
  id  L136f="sound/smutexerme.e"s"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6s8a6s=_+ne"  :ef">sn6#stats8a6s=_+ne"#L1259" id  L1259" am
  L1345">1345./" 3ss="8re"9o">1264./a> 1>"  -pcm.c#L1265" id  ignueae" id  L1259" am
  L1345">1345./" 3s="99ai_hw61./a> "v14 4 re8urn9.83hw61.>"  ked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s sn6#stated4_+ne"UL"+, sizeofc9v14 4 7"un9/soed4_+ne"  :ef">sn6#stated4_+ne"UL"+)1a !h">1- !h">dss="sref">dpcm./a>[.a href="+code=stream" cla" 36="99ai_hwref">ea> </">13"+code=hwref>"  de=car>L1284.> list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6s8a6s=_+ne"  :ef">sn6#stats8a6s=_+ne"#L12p79tL99ss="lin_4 2.werefcclas="srf="+cod6"sref">be_6ubannrar_mi"slibsioctl+ne"  :ef">sn6#state" cl6_dai_hw_free./a>(.aspa
 cla1pcm.c#L18se20 4re9" id  L1259" am
  L1345">1345./" 37="99ai_hw>[.a href="b_pcm_ [.>"  4  rref">f
./a>->.a hrfor_dpcm_4 " 38="99ai_hwund/soc/soc-h">1!las0./ahwund>"  class="sref", dpcm" class="sref">dpchsub  continue; <6 href64AShsub  cont"dpcp8/7>; 96 ed4 4  "und/soc/soc-pc192 ed428-pc9v14 4 7"un9/soass=m" claPREc#L1360" newtre9ef">list_for_eacm9lass="lin_4 .gge"s="s71259"7id 9912584 .gge" c-pcm9lass="lin_4 .gge"c-pcm9lasnd9p79tL99ss="lin_4 ed4_+ne"  :ef">sn6#stated4_+ne"UL"+, /soass="63a>, .spa
 cla1pcm.c#L18se20 4rmclass="sref">dpco728e" class="8re"sound/sioctl< pef">f
./a>->.a hrfor_dpcm_4 " 39="99ai_hw4 4 return .a hrop4 "  ime./a> *.a href="+6de=fe" cla6LINK_STef">FR28e" cef">  71268" class="line" n<6 href64sound/soc/socv19 4  "und/soc/so=fe" cl59" id  L1259" am
  L1345">1345./" 43/20 hr>" 1265" id  op4 4 return ." 126>" 12>-&8>129]..a h8ef=9+code=runtime_upda6ea8./a" 4r_each_8 4_c946> "v162ass="sref">d 4_c9>" 1ntr8" c9a85149="9c86 c9ass="sref">ea> <ref"=09./a> "v14 4  "v14 d_socle./aup _hislor_each_entry"" 1>13eeeeeee"v14ode=odp8">1258./a>{ ee"v1>" 1*.a href="+6de=fe" cla6LINK_STef">FREev_erchannrar_mi"L1283ev_erc28-pc9v14 4 7"un9/soass=m" claPREc#L1360" newtre9ef">list_for_eacm9lass="lin_4 .gge"s="s71259"7id 9912584 .gge" v14 4 .spa
 8ioc9oc-pcm8 20 " cc8> &9t84*.9 href=rr" clacc8> >" 1ked4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6s"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6+ne"  :ef">sn6#state" cl6_d59" id  L1259" am
  L1345">1345./" 4ss="8re"9olin_4 .gge"s="st1258" id9olin>" 1-pcm.c#L1265" id  ign97099 4  "rr" class="sref">ea> <6./a8>#20 href=8so20 hreRAMSsref">dpcm./a7[." 1s="99ai_hw" 66code=SND_SOC_-pcm.c#hw" 6>" 15>-&8>129]..a h8ef=9+code=runtime_upda6ea8./a" 46="99ai_hw L1327">13eeeeeeee .a pahw L1>" 1 68sound/soc/soc-pcm.c#Le" cls="line" nam
  L1270"ode6apcm: eamno validPOK.reass=m" claPREc#L1360" newtre9ef">list_for_eacm9lass="lin_4 .gge"s="s71259"7id 9912584 .gge" v14 4 .spa
 8ioc9oc-pcm8 dpcm.c#L1265" id  L1265"/soass="63a>, .spa
 cla1pcm.c#L18se20 4rmclass="sref">dpced4_+ne"  :ef">sn6#stated4_+ne"UL"+)ef=8so20 hreRAMSsref">dpcm./a7[." 17="99ai_hw4 .gge" cam
  L1327">13ehw4 .>" 14  rref">f
./a>->.a hrfor_dpcm_4 " 48="99ai_hw80">1280./a> mdode=UCLAShw80">" 1utdowcl>stream 86>20 ents"="line"ar6PCDAPM te"c/soc s8a6s= work-pcm.c#L1295" id  cm.reamp-p"dpcmam
  L132749="99ai_hwdode=UCLoc-pcm.c#L1295" hwdod>" 1a href="sound/smutexerme.e"sINIT_DELAYED_WORund/soc/so7ref9dINIT_DELAYED_WORum: ea href64sound/soc/soc"ss=m" claPREc#L1360" newtre9ef">list_for_eac.esioed_work 4 .spa
 8ioc9oc-sioed_work#L12p79tL99ss="lin_4 26 hr_.esioed_work 4 .spa
 8ioc9o26 hr_.esioed_workUL"+)ef=8so20 hreRAMSsref">dpcm./a7[." 53/20 hr>" pc_.a hL1280">1280./a> m" pc_>" pc  rref">f
./a>->.a hrfor_dpcm_4 " 5r_each_8 4lcm9a href8"+c9de=list_f 4lcm>" pref", dpcm" class="sref">dpcass=m" claPREc#L1360" newtre9ef">list_for_each19 4  "und/soc/so=fe" clAShsub  cont"dpcp8v19 4  "und/soc/so=fe" class="sr-pcm.c#L13286cpcm0./a> md965>13eeeeeee  continue; <6 href64AShee  c>" p2ef", dpcm" class="sref">dpcv19 4  "und/soc/so=fe" cl1265./a> 7v14947.a 98ef="+code="+cf="+cod6"sref">be_6ubs .a rea13cleanewtream" class=m" claPREc#L1360" newass="sr-pcm.c#L13286cpcm0./a> md965+c>20 " cccode=dev="lf">m
  Lam
 xcccod>" pnecoue" nam
  L1330"#L136bstisconnec" pss="8re"9oss="sref">duar>_D evclao9oss=>" p-pcm.c#L1265"9="9c86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6+o v19 4  "und/soc/so+o v190 4re d_socle./aup _hislor_each_entry"" 5s="99ai_hw="+code=runtime_upda6w" hw="+>" pked4 .gge"ine" nam
  9="9c86 c9ass="srefo728e" class="8re"sound/sioctl< 5">1345./a> "v14 4      8.id " i" 56="99ai_hwde=reopcm.c#L1265" id  6hwde=>" pde=car>L1284.>  7v14947.a 9s8a6s=7#L19286eam./a>]s8a6s=7" cln .a href6  L1325 nam58./a>{ 9 82 c92odes8a6s="sr1so728e" 9E_NO./am
  L1265">1265./a> 7v14947.a 98ef="+code="+cf="+cod6"sref">be_6ubs .a rea13cleanewtream" class=m" claPREc#L1360" newass="sr-pcm.c#L13286cpcm0./a> md9657="99ai_hw 92inueespoked4 .gge"inehw 92>" p=UCLASS_RUNTIME" ca86ore_sus" c_64./a>   71268" class="line" n5">1345./a> "v14 4      8.id " i" 58="99ai_hwf">err./a> < 0) >" p886cstate" cl6>->.a hre8="3"6+cm.c#L12a6so19 4  "und/soc/so=fe" cl1265./a> 7v14947.a 9s8a6s=7#L19286eam./a>]s8a6s=7" cln .a href6  L1325 nam58./a>{ ea>nd8/a>9 82 c92odes8a6s="sr1so728e" 9E_NO./am
  L1265">1265./a> 7v14947.a 98ef="+code="+cf="+cod6"sref">be_6ubs .a rea13cleanewtream" class=m" claPREc#L1360" newass="sr-pcm.c#L13286cpcm0./a> md9659="99ai_hwe264">1264./a>  *.a href="+6dgotocleanewtream" clo na84  9  4 4  ">ou20 href=8so20 hreRAMSsref">dpcm./a7[." 63/20 hr>" 2696a>1258./a>{ -&8>129]..a h8ef=9+code=runtime_upda6ea8./a" 6r_each_8 4 6lalass=09./a> "v14 4   4 6l>" 2calculany dPOK.randive "souss="338oc" 2>13eeeeeeech_entry" class="sref">leech_>" 2ach_8"re90./a>r8 in9" nam
  L1259">125ASoC PCM-operation_SOCrfor_dpcm_4  rref">f
./a>->.a hrfor" 2+c>20 " cc./a>); 92inueespoked4 .gcc./a>" 23pcm.c#L1265"9="9c86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eac.c#L13286cp?ef">sn6#state" cl6_dai_hw_frt_sL128a href=6dym./ic6cp?ef">sn6#statym./ictr8"5 d_socle./aup _hislor_each_entry"" 6ss="8re"9oa h"dpcmss="sref">dpcm. 9oa h>" 2-pcm.c#L1265" id  ignc86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odea> mdode=UCLAShsub 6 href6465" id  ignShsub  cont"dpcp8sound/soc/soa> mdode=UCLAShsub  continue; <6 href64ef=8so20 hreRAMSsref">dpcm./a7[." 6s="99ai_hwlibsioctl=fe" class="srfhwlib>" 2ked4 .gge"ine" nam
  sound/soc/so7re"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odehw_pars=7#L19286eam./a>]hw_pars=7ed4 .gge"iShsub  cont"dpcp8sound/soc/sohw_pars=7#L19286eam./a>]sound/soc/sohw_pars=7ef64ef=8so20 hreRAMSsref">dpcm./a7[." 66="99ai_hwpcm.c#L181289 e" na8  L9hwpcm>" 2hL128ne" 68sound/soc/soc-pcm.c#Le" c"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odepreparef">  71268" claprepareL128ne" 68soShsub  cont"dpcp8sound/soc/sopreparef">  71268" clasound/soc/soprepareef64ef=8so20 hreRAMSsref">dpcm./a7[." 67="99ai_hw>list_for_each_8 4 93286hw>li>" 2a href=5+pcm.c#L1270" id  L1270" cla"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odetrigg channrar_mi"L128trigg cL128ne" 68soShsub  cont"dpcp8sound/soc/sotrigg channrar_mi"L128sound/soc/sotrigg cef64ef=8so20 hreRAMSsref">dpcm./a7[." 68="99ai_hwef">stream./a>); 9ef=5+chwef">" 2class="sref", dpcm" class="sref">dpchss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odehw_freef">  71268" clahw_freeL128ne" 68soShsub  cont"dpcp8sound/soc/sohw_freef">  71268" clasound/soc/sohw_freeef64ef=8so20 hreRAMSsref">dpcm./a7[." 69="99ai_hwbcm.ir1363dapm__SOC_L#L1hwbcm>" 2ime./a> *.a href="+6dlass="sref">dpchss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92ode./a> mdode=UCLAShsub<6 href645" id  ignShsub  cont"dpcp8sound/soc/so./a> mdode=UCLAShsub  continue; <6 href64ef=8so20 hreRAMSsref">dpcm./a7[." 73/20 hr>" v14 4 .a hreh">13Lclass=" v14>" v1L128ne" 68sound/soc/soc-pcm.c#Le" c"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odepo94 erf">  71268" clapo94 erL128ne" 68soShsub  cont"dpcp8s>list_fpo94 erf">  71268" clas>list_fpo94 eref64ef=8so20 hreRAMSsref">dpcm./a7[." 7r_each_8 4">stream./a>); 92inueesp 4">s>" ve"ine" nam
  id  L1363"6+cmamp; list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odeioctl 4  "und/soc/soioctlef645" id  ignShsub  cont"dpcp8s>list_fioctl 4  "und/soc/sos>list_fioctlef64ef=8so20 hreRAMSsref">dpcm./a7[." 7>13eeeeeee..a href="+code=runtime_ee..a>" vach_8"re90./a} ueae d_socle./aup _hislor_each_entry"" 7+c>20 " cca 97 class="sref">f
./a>cca 9>" vked4 .gge"ine" nam
  c86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odea> mdode=UCLAShsub 6 href6465" id  ignShsub  cont"dpcp8s>list_fa> mdode=UCLAShsub s>list_fa> mef64ef=8so20 hreRAMSsref">dpcm./a7[." 7ss="8re"9oa h"dpcmss="sref">dpcm.39oa h>" v-pcm.c#L1265" id  ignc86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odehw_pars=7#L19286eam./a>]hw_pars=7ed4 .gge"iShsub  cont"dpcp8s>list_fhw_pars=7#L19286eam./a>]s>list_fhw_pars=7ef64ef=8so20 hreRAMSsref">dpcm./a7[." 7s="99ai_hwsref">stream./a>); 92inuhwsre>" vked4 .gge"ine" nam
  sound/soc/so7re"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odepreparef">  71268" claprepareL128ne" 68soShsub  cont"dpcp8s>list_fpreparef">  71268" clas>list_fprepareef64ef=8so20 hreRAMSsref">dpcm./a7[." 76="99ai_hw">duar>m.c#L1259" id  .ahw">d>" vhL128ne" 68sound/soc/soc-pcm.c#Le" c"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odetrigg channrar_mi"L128trigg cL128ne" 68soShsub  cont"dpcp8s>list_ftrigg channrar_mi"L128s>list_ftrigg cef64ef=8so20 hreRAMSsref">dpcm./a7[." 77="99ai_hwduar>_D evclaoL129> " va href=5+pcm.c#L1270" id  L1270" cla"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odehw_freef">  71268" clahw_freeL128ne" 68soShsub  cont"dpcp8s>list_fhw_freef">  71268" clas>list_fhw_freeef64ef=8so20 hreRAMSsref">dpcm./a7[." 78="99ai_hw  8> "9335./a8 "69ss="srhw  8>" vclass="sref", dpcm" class="sref">dpchss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92ode./a> mdode=UCLAShsub<6 href645" id  ignShsub  cont"dpcp8s>list_f./a> mdode=UCLAShsubs>list_f./a> ef64ef=8so20 hreRAMSsref">dpcm./a7[." 79="99ai_hw259./a> "v14 4 struct .ahw259>" vime./a> *.a href="+6dlass="sref">dpchss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odepo94 erf">  71268" clapo94 erL128ne" 68soShsub  cont"dpcp8s>list_fpo94 erf">  71268" clas>list_fpo94 eref64ef=8so20 hreRAMSsref">dpcm./a7[." 83/20 hr>" " 66code=SND_SOC_-pcm.c#" " 6>" " "ine" nam
  id  L1363"6+cmamp; list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odeioctl 4  "und/soc/soioctlef645" id  ignShsub  cont"dpcp8s>list_fioctl 4  "und/soc/sos>list_fioctlef64ef=8so20 hreRAMSsref">dpcm./a7[." 8r_each_8 4
  L1327">13eeeeeeee .a  4
  >" "a>-&8>129]..a h8ef=9+code=runtime_upda6ea8./a" 8>13eeeeeeelt;6">132am
  L1327">13eeelt;>" "sound/soc/so7ref9 L13078 cl9r" class" 8+c>20 " cc80">1280./a> mdode=UCLAScc80">" "3pcm.c#L1265"9="9c86 c9ass="srefh_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st5 d_socle./aup _hislor_each_entry"" 8ss="8re"9odode=UCLoc-pcm.c#L1295" 9odod>" "-pcm.c#L1265" id  ignc86 c9ass="sref"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92ode" class="8re"soundtl< 111111111111Shsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st/soc7 5las8a6s="sr1s" class="8re"soundtl< ef=8so20 hreRAMSsref">dpcm./a7[." 8s="99ai_hw  continue; <6 href64AShhw  c>" "ked4 .gge"ine" nam
  sound/soc/so7re"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odecopde=stream" classcopdef6465" id  ignShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st/soc7 5las8a6s="sr1scopde=stream" classcopdef64ef=8so20 hreRAMSsref">dpcm./a7[." 86="99ai_hwref">ea>="lf">m
  Lam
 xhwref>" "hL128ne" 68sound/soc/soc-pcm.c#Le" c"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odesilenc mdode=UCLAShsubsilenc L128ne" 68soShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st/soc7 5las8a6s="sr1ssilenc mdode=UCLAShsubsilenc L128ef=8so20 hreRAMSsref">dpcm./a7[." 87="99ai_hwss="sref">duar>_D evclaohwss=>" "a href=5+pcm.c#L1270" id  L1270" cla"ss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odepagef">  71268" clapageef6465" id  ignShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st/soc7 5las8a6s="sr1spagef">  71268" clapageef64ef=8so20 hreRAMSsref">dpcm./a7[." 88="99ai_hwdowcL1259" id  ne" npathhwdow>" "class="sref", dpcm" class="sref">dpchss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>std8/a>9 82 c92odemmaLe" clas8cod9ecmmmaLef6465" id  ignShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a hr>st/soc7 5las8a6s="sr1smmaLe" clas8cod9ecmmmaLef64ef=8so20 hreRAMSsref">dpcm./a7[." 89="99ai_hw9">1309.309./a> "v14 4  hw9">>" "ime./a> *.a h h8ef=9+code=runtime_upda6ea8./a" 93/20 hr>" s="sref">list_for_each_8" s=">" s=ound/soc/so7ref9 L13078 cl9r" class" 9r_each_8 4am./a>); 9ef=5+code=dev" 4am.>" sntr8" c9a85149="9c86 c9ass="srefo728e" class="8re"sound/sioctl< 5">1345./a> "v14 4      8.id " i" 9>13eeeeeee63dapm__SOC_L#L1isref">see63d>" s*.a href="+6de=fe" cla6LINK_STef">FR/7>; 96 het_us.we0">1"e./a> *./7>; 96 het_us..a h9c86 c9ass="srefo19 4  "und/soc/so=fe" cl/a9"und/s7c/s9c-pcm.am58./a>{ list_for_eacus.we0">1"e./a> *.a hr>st)ef=8so20 hreRAMSsref">dpcm./a7[." 9+c>20 " cccode=dev="lf">m
  Lam
 ncccod>" snecoue" nam
  L1330"#L136bstisconnec" 9ss="8re"9o./a>); 92inueespoked4 .g9o./a>" s-pcm.c#L1265"9="9c86 c9ass="srefe8e" cef">  71268" class="line" n5">1345./a> "v14 4      8.id " i" 9s="99ai_hw_parr" cL1265" id  6nd//hw_pa>" sked4 .gge"ine" nam
  sound/soc/so7re <>; 96 het_us.we0">1"e./a> *./7>; 96 het_us..a h9c86 c9ass="srefo19 4  "und/soc/so=fe" cl/a9"und/s7c/s9c-pcm.am58./a>{ ea><6 href64sound/soc/sochss=m" claPREc#L1360" newtre9ef">list_for_eacus.we0">1"e./a> *.a hr>st)ef=8so20 hreRAMSsref">dpcm./a7[." 96="99ai_hw="+code=runtime_upda6w" hw="+>" ste>erme.e"soc/ode=mutex_lock_neste>s" s7="99ai_hwduar>_D evclaoL129> " sd  L1363"6+cm  continue; <6 hrefv_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1s 96 ed4 4  "und/soc/so192 ed428-p5 d_socle./aup _hislor_each_entry"" 98="99ai_hw  8> "9330" c7cla9W_PARAhw  8>" sclass="sref", dpcm" class="sref">dpchsub  continue; <6 href64AShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1s 96 ed4 4  "und/soc/so192 ed428-p9c86 c9ass="sref"ss=m" claPREc#L1360" new)ef=8so20 hreRAMSsref">dpcm./a7[." 99="99ai_hwlin/pre>dhwlin>" s;.a href=51ngital_xine.e"soc/ode=muteong">ea> <ref"=09./a> "v14 4  "v14 d_socle./aup _hislor_each_entry""1_3/20 hr>"1class="sref">ea> <6./a1>#20 10eed4 .gge"ine" nam
  id  L1363"6+cm.c#L12a6sEev_erchannrar_mi"L1283ev_erc28-pc9v14 4 7"un9/sov_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=14 4 .spa
 8ioc9oc-pcm8 dpcm./a7[."1or_each_8 120 2ref=8so20 86eam./a>].16 hre10e"ine" nam
  id  L1366666666697099 4  "rr" class="sref">ea> <6./a8>#20 href=8so20 hreRAMSsref">dpcm./a7[."1">13eeeeee1e .a href="+code=SND_SOC_1PCM_U10*.a href="+6de=fe" cl h8ef=9+code=runtime_upda6ea8./a"1 +c>20 " c1m L1280">1280./a> mdode=U1LASS_10ref=8+co9">12808las9="lin_4 .gge" class="8ref_104c>20 " c1m/a>); 92inueespoked4 .g918626910d" c_76" ir1363dapm__SOC_L#L13clear_9105c>20 " c1mparr" cL1265" id  6nd//h1_pa691aam =8./a>{  7v14947.a 98ef="+cofreef">  71268" cla8ef="+cofreeef64AShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1s 96 freef">  71268" cla896 free0 href=8so20 hreRAMSsref">dpcm./a7[."1"6c>20 " c1m"+code=runtime_upda6w" h1_"+691a6m =8f">list_for_eacu na84  9  4 4  ">ou20 hr:f=8so20 hreRAMSsref">dpcm./a7[."1"7c>20 " c1muar>_D evclaoL129> list_for_eacm9lass="lin_4 .gge"s="s71259"7id 9912584 .gge" v14 4 .spa
 8ioc9oc-pcm8 1a   "9"7id  !h">1amaLp/s6 ok1265" id  L1265"79tL99ss="lin_4 2.werefcclas="srf="+cod6"sref">be_6ubannrar_mi"slibsioctl+ne"  :ef">sn6#state" cl6_daf=8so20 hreRAMSsref">dpcm./a7[."1"8c>20 " c1m 8> "9330" c7cla9W_PARAh1_ 86910class="sref", dpcm" class="sref">dpce=caget_sL128OP"-oc-pcm.c#L12channrar_mi"slibsioctl=f+ne"  :ef">sn6#state" cl6_d59" id  L1259" am
  L1345">1345./"1a9="99ai_h1_in/pre>dh1_in691aime./a> *.a h97099 4  "rr" class="sref">ea> <6./a8>#20 href=8so20 hreRAMSsref">dpcm./a7[."113/20 hr>"11pcm.c#L18ser9f="sou8d/s"11pc>"11p="+c808las9="lin_4 .gge" class="8ref_11r_each_8 1ream" sref"t; neam./a>); 1rea>"11calculany dPOK.randive "souss="338oc"11>13eeeeee1ar_pend" c_76" isref">ste1ar_>"11ATE_H>r8 in9" nam
  L1259">125is-the curr259 PCM-operation-forpthis-FE ?SOCrfor_dpcm_4  rref">f
./a>->.a hrfor"11+c>20 " c1necosref">stream./a>); 9c1nec>"11ked4 UNTIME" ccm L1280">1-pcm.7#L192ntincan_updpcm75d/soc7 5las8a6-pcm.7#L192ntincan_updpcm28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rref">f
./a>->.a hrfor"114c>20 " c18cla9s81  91ss="lin_4 .g918cl>"11-pcm.d_socle./aup _hislor_each_entry""11s="99ai_h1_parr" class/soc/soc-pcmh1_pa>"11ked4 .gge"inee.e"soc/ode=muteong-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7e=r9t"ou_updpcm75d/soc7 5las8a=r9t"ou_updpcmef64AS28./a9ients.7a>,9cm_be_dai_hw_UPD26584 91ef="+code=devbesbe_dai_hw_UPD26584 92./acm_4  rref">f
./a>->.a hrfor"116c>20 " c1ss="sref">duar>m.c#L1259h1ss=>"11hL128ne" 68sound/soc/97099 41ass="sr-pcm.c#L13286cpcm0./a> md9117="99ai_h16+91/" 68sound/soc/soc-ph16+9>"11=UCLASS_RUNTI97099 40ass="sr-pcm.c#L13286cpcm0./a> md9118="99ai_h14" class="lf">m
  Lam
 xh14" >"11886cs808las9="lin_4 .gge" class="8ref_119="99ai_h1duar>erme.e"soc/ode=car>h1dua>"11;.a h./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 c9ass="sref1-pcm.7#L192ntincan_updpcm75d/soc7 5las8a6-pcm.7#L192ntincan_updpcm28-p59" id  L1259" am
  L1345">1345./"123/20 hr>"18ef"9s82979>1297.rr" cla"18ef>"12=ound/soc/so7ref9 L13078 cl9r" class"12r_each_8 1"="line"ar6PCM_==oc-pcm. 1"=">"12"7co20 86>20 ents"="line"ar6PCis-the curr259 PCM-operation-forpthis-BE ?SOCrfor_dpcm_4  rref">f
./a>->.a hrfor"18>13eeeeee1"dpcmam
  L1327">13eeeeee1"dp>"12ASS_RUNTIME" ccm L1280">1-pcm.7#L192nbincan_updpcm75d/soc7 5las8a6-pcm.7#L192nbincan_updpcm28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpccm_4  rref">f
./a>->.a hrfor"18+c>20 " c1+code="+cf="+cod6"sref">c1+co>"12ked4 .gge"ine" nam
  cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rref">f
./a>->.a hrfor"12ss="8re"91dode=UCLoc-pcm.c#L1295" 91dod>"12-pcm.d_socle./aup _hislor_each_entry""12s="99ai_h1CLa> "v14 4 return .a hrh1CLa>"12ked4 .gge"inee.e""soc/ode=muteong-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7e=r9t"ou_updpcm75d/soc7 5las8a=r9t"ou_updpcmef64AS28./a9ients.7a>,9cm_be_dai_hw_UPD26584 91ef="+code=devbesbe_dai_hw_UPD26584 92./a ||_socle./aup _hislor_each_entry""126c>20 " c1./a>]..a href="+code=runh1./a>"18de=car>L1284.> <""soc/ode=muteong-pcm.c#L12+code=streaL1259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7e=r9t"ou_updpcm75d/soc7 5las8a=r9t"ou_updpcmef64AS28./a9ients.7a>,9cm_be_dai_hw_UPD2658B 91ef="+code=devbesbe_dai_hw_UPD2658B 92./a  href href_socle./aup _hislor_each_entry""127="99ai_h1ound/soc/soc-pcm.c#_SOCrh1oun>"12a href=5+pcm.c#L1270" class="sref">dpclas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7e=r9t"ou_updpcm75d/soc7 5las8a=r9t"ou_updpcmef64)acm_4  rref">f
./a>->.a hrfor"128="99ai_h1am./a>); 9ef=5+code=dev"h1am.>"18class="sref", dpcm" c97099 41ass="sr-pcm.c#L13286cpcm0./a> md9189="99ai_h1ode=dpcm" clsoc-am
  L13h1ode>"12ime./a> *.a h97099 40ass="sr-pcm.c#L13286cpcm0./a> md9133/20 hr>"1 ccm L1280">1280./a> mdo"1 cc>"13p="+c808las9="lin_4 .gge" class="8ref_13r_each_8 1./a> mdode=UCLowe.e"soc/ 1./a>"1 e" cl./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 c9ass="sref1-pcm.7#L192nbincan_updpcm75d/soc7 5las8a6-pcm.7#L192nbincan_updpcm28-p59" id  L1259" am
  L1345">1345./"13>13eeeeee1_e0" id0">1280./a> mdodee1_e0>"13sound/soc/so7ref9 L13078 cl9r" class"13+c>20 " c1code=devbespsoc-pcm.c#L.c1cod>"1 ked4 0 86>20 ents"="line"ar6PCget-the /am
  L12-forpthis-BE OCrfor_dpcm_4  rref">f
./a>->.a hrfor"13ss="8re"91">1264./a> 1>"1 -pcm. href="sound/soc/so7re ea>  f
./a>->.a hrfor"13s="99ai_h161./a> "v14 4 re8urn9.83h161.>"13am =8./a>{ ea>   mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rref">f
./a>->.a hrfor"136="99ai_h1ref">ea> </">13"+code=h1ref>"1 de=cad_socle./aup _hislor_each_entry""137="99ai_h1>[.a href="b_pcm_ [.>"13=UCLASS_RUNTI97099 4lass="sref">dpclas="sref">e4 .ggbidata259" id  L1259m L128o19 4  "und/soc/so=fe" cl1265./a> 7v14947.a 9s8a6s=7#L19286eam./a>]s8a6s=7" cln .a href6  L132L"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7es8a6s="sr1so728e" 9E_NO./am
  L1265">9" id  L1259" am
  L1345">1345./"138="99ai_h1und/soc/soc-h">1!las0./ah1und>"13886cs808las9="lin_4 .gge" class="8ref_139="99ai_h14 4 return .a hrop4 "13;.a h./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 c9ass="sref1-pcm.7#L192ngetcparar" class="sref">ea>  1345./"143/20 hr>"11265" id  op4 4 return ."1126>"14=ound/soc/so7ref9 L13078 cl9r" class"14r_each_8 1_c946> "v162ass="sref">d 1_c9>"14"7co20 86>20 ents"="line"ar6PCget-the BE "sound/ cm=oc-OCrfor_dpcm_4  rref">f
./a>->.a hrfor"11>13eeeeee1"v14ode=odp8">1258./a>{ e1"v1>"11*.a henumac86 c9ass="sref6-pcm.7#L192ncm=ocass="sref">ea>  20 " c18> &9t84*.9 href=rr" clac18> >"11ked4 .gge"inec86 c9ass="sref1-pcm.7#L192nbingetcpm=ocass="sref">ea>   mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rref">f
./a>->.a hrfor"14ss="8re"91lin_4 .gge"s="st1258" id91lin>"14-pcm.d_socle./aup _hislor_each_entry""11s="99ai_h1" 66code=SND_SOC_-pcm.c#h1" 6>"115>-&8>129]..a97099 4lass="sref">dpclas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7epm=ocass="sref">ea>  m=oc28-p9" id  L1259" am
  L1345">1345./"146="99ai_h1 L1327">13eeeeeeee .a pah1 L1>"11 68so808las9="lin_4 .gge" class="8ref_117="99ai_h14 .gge" cam
  L1327">13eh14 .>"114  rr./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 c9ass="sref1-pcm.7#L192nbingetcpm=ocass="sref">ea>  1345./"148="99ai_h180">1280./a> mdode=UCLASh180">"11utdow" id  L1259" am
  L1345">1345./"149="99ai_h1dode=UCLoc-pcm.c#L1295" h1dod>"11a hre0 86>20 ents"="line"ar6PCset-the BE "sound/ cm=oc-OCrfor_dpcm_4  rref">f
./a>->.a hrfor"153/20 hr>"1pc_.a hL1280">1280./a> m"1pc_>"1pc  rrvoidec86 c9ass="sref1-pcm.7#L192nbinsetcpm=ocass="sref">ea>   mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>cm_4  rref">f
./a>->.a hrfor"15r_each_8 1lcm9a href8"+c9de=list_f 1lcm>"15e" class="sre7">b8.78= nd/soass="63a>, ..gge"s="st1258" id  L127>1292./, enumac86 c9ass="sref6-pcm.7#L192ncm=ocass="sref">ea>  , ..g=ocass="sref">ea>  m=oc28-pacm_4  rref">f
./a>->.a hrfor"15>13eeeeee1  continue; <6 href64AShe1  c>"1p2ef",d_socle./aup _hislor_each_entry""15+c>20 " c1code=dev="lf">m
  Lam
 xc1cod>"15ked4 .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7epm=ocass="sref">ea>  m=oc28-pnShsub  cont"dpcp8sm=ocass="sref">ea>  m=oc28-p9" id  L1259" am
  L1345">1345./"1pss="8re"91ss="sref">duar>_D evclao91ss=>"1p-pcm.808las9="lin_4 .gge" class="8ref_15s="99ai_h1="+code=runtime_upda6w" h1="+>"1pked4 ./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 c9ass="sref1-pcm.7#L192nbinsetcpm=ocass="sref">ea>  1345./"156="99ai_h1de=reopcm.c#L1265" id  6h1de=>"15te>erme.e"soc/ode=mutex_lock_neste>s"157="99ai_h1 92inueespoked4 .gge"ineh1 92>"1p=UCLA0 86>20 ents"="line"ar6Prfor_dpcm_4  rref">f
./a>->.a hrfor"158="99ai_h1f">err./a> < 0) >"1p886cs0 86>20 ents"="line"ar * We c6>2only hw_free, cmop, pause or suspend a BE DAIee.eany of itund/ss-FErfor_dpcm_4  rref">f
./a>->.a hrfor"159="99ai_h1e264">1264./a> 20 ents"="line"ar * are not "soning, paused or suspended forpth/ cpecified 
  L12-direction.rfor_dpcm_4  rref">f
./a>->.a hrfor"163/20 hr>"12696a>1258./a>{ -&80 86>20 ents"="line"ar *Crfor_dpcm_4  rref">f
./a>->.a hrfor"16r_each_8 1 6lalass=09./a> "v14 4   1 6l>"12calcuUNTIME" ccm L1280">1-pcm.7#L192nm75dbcofree  i " i" 58="99>1345./a> pcm.7#L192nbincan_updpcm28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpccm_4  rre.randive "1ouss="338oc" 2>13eeeeeeec1_entr16="+code=SND_SOC_1PCM_7#L192nbingetcpm=oc28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rref">f
./a>-1gt;.a hrfor" 2+c>20 " cc.1a>); 12inuee href64AShe1  c>"1p2ef",d_socle./aup _hislor1each_entry"" 6ss="8re"9oa1h"dpc1ss="sref">dpcm7#L192nbingetcpm=oc28-p9cm0./adata259" id  L1259mp9cm0./adata cont"dpc7#L192nbinsetcpm=oc28-p59" id  L12reRAMSsref1>dpcm./a7[." 6s="99ai_hwl1bsioc1l=fe" class="sas="sref">e4 .ggbidat28-pnShsub  cont"dpcp8sm=ocass="sref">ea>  m=oc28-p9" id  L12reRAMSsref1>dpcm./a7[." 66="99ai_hwp1m.c#L16.c#L1265" id  6h1de=>"15te>erme.e"soc/reRAMSsref1>dpcm./a7[." 67="99ai_hw>1ist_f16vclaoL129> te./rr" class="sref">e .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8asoc7li12665./a> 7v14947.asoc7li126680">te29h1_ua6910ef="list_n.gge"inec86 c9aslist_n.evbesb href64AShe1  c>"1p2ef",d_socle./au">f
./a>-&>dpcm./a7[." 68="99ai_hwe1">str16/a> mdode=UCLASh180">"11utdow" id  L12reRAMSsref1>dpcm./a7[." 69="99ai_hwb1m.ir1163dapm__SOC_L#L1hwbcm>cmh1_pa>"11ked4 .ggdata259" id  L1259m L1280">flas="sref">e4 .ggbind/sdrive0L1"slidata.e"5las8a=r9t"ou_updpcnd/sdrive0L1"slidata.e""st1258" id  L127>1292./acm_4  rrereRAMSsref1>dpcm./a7[." 73/20 hr>" v14 4 .1 hreh">13Lclass=" v14>>>>>>>>>cohsunueass="sref">ea>  m=oc28-p9" id  L12reRAMSsref1>dpcm./a7[." 7r_each_8 4"1strea17f"t; neam./a>); 1rea>"11calculany dPOKreRAMSsref1>dpcm./a7[." 7>13eeeeeee.1a hre17OC_L#L1isref">see63d>" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocass="sref">ea>  m=data259" id  L1259m L1280">flas="sref">e4 .ggbind/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./a9f="+co7epm=ocass="sref">ea>  m=oc28-p9" id  L12r">f
./a>-1each_entry"" 7+c>20 " cca197 cl1ss="sref">f
./a>cca 9>cmh1_pa>"11ked4 .ggds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodeSTcRT,9cm_be_dai_hw_UPD2658B 91efSTcodeSTcRTm=ocae_dai_hw_UPD26584 92./a ||_socle./areRAMSsref1>dpcm./a7[." 7ss="8re"9oa1h"dpc1ss="sref">dpcm.39oa h>>see63d>" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodePAUSED,9cm_be_dai_hw_UPD2658B 91efSTcodePAUSEDm=ocae_dai_hw_UPD26584 92./a ||_socle./areRAMSsref1>dpcm./a7[." 7s="99ai_hws1ef">s1ream./a>); 92inuhwsre>>see63d>" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodeSUSPEND,9cm_be_dai_hw_UPD2658B 91efSTcodeSUSPENDa.e""st1258" id  L127>1292./acm_4  rrereRAMSsref1>dpcm./a7[." 76="99ai_hw"1duar>1.c#L1259" id  .ahw">d>>>>>>>>>13h1ode>"12ime./a> *.a h97099 40ass="sr-pcreRAMSsref1>dpcm./a7[." 77="99ai_hwd1ar>_D1evclaoL129> _D evclao91ss=>"1p-pcm.808las9="lreRAMSsref1>dpcm./a7[." 78="99ai_hw 18> "917/a> mdode=UCLASh180">"11utdow" id  L12reRAMSsref1>dpcm./a7[." 79="99ai_hw219./a>1"v14 4 struct _==oc-pcm. 1"=">"12"7co20 end a BEsafe to 1345//a> 6PCget-th, pa80 86>20 ents"="line"ar *Crfor_dpcm_4  rrereRAMSsref1>dpcm./a7[." 83/20 hr>" "166cod1=SND_SOC_-pcm."18class="sref", dpcm" c97099 41ass="sr-pcreRAMSsref1>dpcm./a7[." 8r_each_8 4
1 L1321">13ee>_D evclao91ss=>"1p-pcm.808las9="lde=runtime1upda6ea8./a" 8>13eeeeeeel1;6">112am
  e_upda6w" h1="+>"1pked4 ./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 ccm L1280">1-pcm.7#L192nm75dbcofree  i " i" 58="99>1345./a> pcm..7#L192nbinsetcpm=oc28-p59" id  L12ef9 L130781cl9r" class" 8+c>20 " cc81">12818"lf">m
  Lam
 ncccod>" snecoue" nam
 1up _hislor1each_entry"" 8ss="8re"9od1de=UC1oc-pcm4 .gge"ineh1 92>"1p=UCLA0 86>20 ents"="line"ar6Prfor_dpcm_4  rrereRAMSsref1>dpcm./a7[." 8s="99ai_hw 1conti1ue; <6; 0) >"1p886cs0 86>20 ents"change hw 19286e, cmop, pause or suspend a BE D0 86>20 eef">  7d,0 86>20 ents"="line"ar6Prfor_dpcm_4  rrereRAMSsref1>dpcm./a7[." 86="99ai_hwr1f">ea1="lf">; 0) >"1p886cs0nts"="line"ar * are not "soning, paused or suspended forpth/ cpecified 
  L12-direction.rfor_dpcm_4  rrereRAMSsref1>dpcm./a7[." 87="99ai_hws1="sre18poked4 .gge"ineh1 92>"1p=UCa80 86>20 ents"="line"ar *Crfor_dpcm_4  rrereRAMSsref1>dpcm./a7[." 88="99ai_hwd1wcL1219" id > "v14 4   1 6l>"12calcuUNTIME" ccm L12b  cont"dpcp8s>list_fhalcuUNTIME" ccm L12b  conpcm.7#L192nbincan_updpcm28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpccm_4  rrereRAMSsref1>dpcm./a7[." 89="99ai_hw91>1309183dapm__SOC_L#L1hwbcm>7#L192nbingetcpm=oc28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpce4 .ggbidata>20 nd/soass="63a>, ..gge"s="st1258" id  L127>1292./acm_4  rrede=runtime1upda6ea8./a" 93/20 hr>" s1"sref1>list_ href64AShe1  c>"1p2ef",d_socle./aef9 L130781cl9r" class" 9r_each_8 4a1./a>)1 9ef=5+code=de7#L192nbingetcpm=oc28-p9cm0./adata259" id  L1259mp9cm0./adata cont"dpc7#L192nbinsetcpm=oc28-p59" id  L12> "v14 4  1   8.id " i" 9>13eeeeeee61dapm_1SOC_L#L1isref"as="sref">e4 .ggbidat28-pnShsub  cont"dpcp8sm=ocass="sref">ea>  m=oc28-p9" id  L12reRAMSsref1>dpcm./a7[." 9+c>20 " ccc1de=de1="lf">m
  Lam
 ncccod>" snecoue" nam
 1L1330"#L131bstisconnec" 9ss="8re"9o.1a>); 12inueespoked4 29h1_ua6910ef="list_ng,_each_126rt/soc7 5las8a6s=list_ng,_each_126rt x_unloEXPORT_SYMBOLdata259" id  L1259m L1280">te./rr" class="sref">e .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8asoc7li12665./a> 7v14947.asoc7li126680">te29h1_ua6910ef="list_n.gge"inec86 c9aslist_n.evbesb href64AShe1  c>"1p2ef",d_socle./a> "v14 4  1   8.id " i" 9s="99ai_hw_1arr" 1L1265"href64AShe1  c>"1p2ef",d_socle./a>eRAMSsref1>dpcm./a7[." 96="99ai_hw=1+code19c#L1259" id  .ahw">d>cmh1_pa>"11ked4 .ggdata259" id  L1259m L1280">flas="sref">e4 .ggbind/sdrive0L1"slidata.e"5las8a=r9t"ou_updpcnd/sdrive0L1"slidata.e""st1258" id  L127>1292./acm_4  rreode=mutex_1ock_neste>s" s7="99ai_hwd1ar>_D19soc-pcm.c#_SOCrh1oun>"1111111cohsunueass="sref">ea>  m=oc28-p9" id  L12up _hislor1each_entry"" 98="99ai_hw 18> "919/a> mdode=UCLASh180">"11utdow" id  L12reRAMSsref1>dpcm./a7[." 99="99ai_hwl1n/pre1dhwlin>" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocass="sref">ea>  m=data259" id  L1259m L1280">flas="sref">e4 .ggbind/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8a6s="sr1so728./aont"dpcp8sm=ocass="sref">ea>  m=oc28-p9" id  L12up _hislor2each_entry""1_3/20 hr>"1c2ass="2ref">ea> <6./a1>#20cmh1_pa>"11ked4 .ggds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodeSTcRT,9cm_be_dai_hw_UPD2658B 91efSTcodeSTcRTm=ocae_dai_hw_UPD26584 92./a ||_socle./2reRAMSsref2>dpcm./a7[."1or_each_8 122 2ref28so20 86eam./a>].16 hre10e"ine" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodePAUSED,9cm_be_dai_hw_UPD2658B 91efSTcodePAUSEDm=ocae_dai_hw_UPD26584 92./a ||_socle./2reRAMSsref2>dpcm./a7[."1">13eeeeee1e2.a hr2f="+code=SND_SOC_1PCM_e10e"ine" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodeSUSPEND,9cm_be_dai_hw_UPD2658B 91efSTcodeSUSPENDa.e"ae_dai_hw_UPD26584 92./a ||_socle./2r3RAMSsref2>dpcm./a7[." 9+c>20 " ccc2L128020s="sref">f
./a>cca 9>e10e"ine" s*.a href="+6ds="sr1so728./a9f="+co7epm=ocasas8a=r9t"ou_updpcmef64AS28./a9STcodePREPA-pcm.am58./a>{ 1292./acm_4  rr2in_4 .gge"2class="8ref_104c>20 " c1m2a>); 20s="sref">dpcm.39oa h>>see63d>13h1ode>"12ime./a> *.a h97099 40ass="sr-p23dapm__SOC2L#L13clear_9105c>20 " c1m2arr" 2L1265" id  6nd>_D evclao91ss=>"1p-pcm.808las9="2reRAMSsref2>dpcm./a7[."1"6c>20 " c1m2+code20.c#L1265" id  6h1de=>"15te>erme.e"soc2reRAMSsref2>dpcm./a7[."1"7c>20 " c1m2ar>_D2evclaoL129> 20 ents"="line"ar *Crfor_dpcm_4  rr2reRAMSsref2>dpcm./a7[."1"8c>20 " c1m28> "9230" c7cla9W_PA"18class="sref", dpcm" c97099 41ass="sr-p259" am
  L2345">1345./"1a9="99ai_h1_2n/pre2_D evclao91ss=>"1p-pcm.808las9="2reRAMSsref2>dpcm./a7[."113/20 hr>"112cm.c#218ser9e_upda6w" h1="+>"1pked4 ./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p9c86 ccm L12b  cont"dpcp8s>list_fhalcuUNTIME" ccm L12b  conpcm..7#L192nbinsetcpm=oc28-p59" id  L12in_4 .gge"2class="8ref_11r_each_8 1r2am" s2ef"t; neam./a>); 1rea>"11calculany dPO2.randive "2ouss="338oc"11>13eeeeee1a2_pend21 L1327">13eeeeee1"dp>"12ASS_RUNT8v_8 420Shsub  cont"dpcp8s>list_SS_RUNT8v_8 420Shsub  cpcm.7#L192nbincan_updpcm28-p9cmpef="sound/soc/so7re ea>incan_updpcm28-ps="sr1so728./a9f="+co7es8a6s="sr1so7soc/ode=actie0L1"slidata>cm_4  rr2f">f
./a>-2gt;.a hrfor"11+c>20 " c1n2cosre21s="sref">f
./a>cca 9>c">13eeeeee1"dp>"12cmwtre9ef">list_formd80">te7#L192nbingetcpm=oc28-p9cm0./a>eef64AShsub  cont"dpcpp9cm0./a>eef64ASf">ea>incan_updpcm28-eeef64AShsub  cont"dpcp8v_8 420 235"st1258" id  L127>1292./acm_4  rr2f">f
./a>-2gt;.a hrfor"114c>20 " c182la9s82  91ss="lin_4 .g918cl>"11-pcm.d_socle./2up _hislor2each_entry""11s="99ai_h1_2arr" 2lass/soc/soc-pcmh1_pa>"11ked4 .ggid  ignShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a h.a hr>std8/a>9 82 c92odetrigg cha"st1258" id  L127>1292./acm_4  rr2feRAMSsref2gt;.a hrfor"116c>20 " c1s2="sre2">duar>m.c#L1259h1ss=>"11hL12_pa>"11ked4 .ggid  ignShsub  cont"dpcp8v_8 420 2356="line" nam
  71220  c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcm75d/soc7 5las8a6s="sr1sus.we0">1"e./a> *.a h.a hr>std8/a>9 82 c92odetrigg chanloEXPORT_SYMBOL_s="sr1so728./a9f="+co7es8a6s="sr1so7s13eeeeee1"dp>"12cmwtre9ef">list_formd80">.7#L192nbinsetcpm=oc28-p59" id  L12ieRAMSsref2pcm0./a> md9117="99ai_h16291/" 28sound/soc/soc-ph16+9>"11=UCLASS_RUNTI97099 40ass="sr-p2m.c#L132862pcm0./a> md9118="99ai_h142 clas2="lf">m
  Lam
 xh14" >"11886cs808las9="2in_4 .gge"2class="8ref_119="99ai_h1d2ar>er2e.e"soc/ode=car>h1dua>"11;.a h./a9ients.7a>,9EXPORT_SYMBOL_GP>m
  Lam
 x_unloEXPORT_SYMBOL_GP>28-p8v_8 420Shsub  cont"dpcp8s>list_SS_RUNT8v_8 420Shsub  cpcm..7#L192nbinsetcpm=oc28-p59" id  L1259" am
  L2345">1345./"123/20 hr>"182f"9s82979>1297.rr" cla"18ef>"12=ound/soc/so72ef9 L130782cl9r" class"12r_each_8 1"2"line2ar6PCM#ifdef13eeeeee1"dp>"12CONFIG_DEBUG_FSont"dpcp8s>listCONFIG_DEBUG_FS9>1297.rr" cla"18ef>"12=ound/soc/so72erandive "2gt;.a hrfor"18>13eeeeee1"2pcmam2  L132co7eic chart"dpcea>  _9oc-pc x_unt1258" id  L127>1292./, enumac86 c9ass="sref6-pcm.7#L192ncm=ocass="sref">ea>  , ..g=ocass="sref">ea>  m=oc28-pacm_4  rr2f">f
./a>-2gt;.a hrfor"18+c>20 " c1+2ode="22inuee href64AShe1  c>"1p2ef",d_socle./2f">f
./a>-2gt;.a hrfor"12ss="8re"91d2de=UC22s="sref">dpcm7witchh1_pa>"11ked4 .ggds="sr1so728./a9f="+co7epm=ocsb href64AShe1  c>"1p2ef",d_socle./2up _hislor2each_entry""12s="99ai_h1C2a> "v24 4 return .a cases8a=r9t"ou_updpcmef64AS28./a9STcodeNEWcm.am58./a>{ ou20 hr:f=8so20 2up _hislor2each_entry""126c>20 " c1.2a>]..2 href="+code=runh1ss=>"11hL12_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L125eRAMSsref2each_entry""127="99ai_h1o2nd/so2/soc-pcm.c#_SOcases8a=r9t"ou_updpcmef64AS28./a9STcodeOPENcm.am58./a>{ ou20 hr:f=8so20 2u.c#L132862gt;.a hrfor"128="99ai_h1a2./a>)2 9ef=5+code=dev"h1am.>"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L125n_4 .gge"2pcm0./a> md9189="99ai_h1o2e=dpc2" clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodeHW_PARAMSont"dpcp8s>listmef64AS28./a9STcodeHW_PARAMS4 re na84  9  4 4  ">ou20 hr:f=8so20 2m.c#L132862pcm0./a> md9133/20 hr>"1 2cm L123ef">ea> <6./a1>#20"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12in_4 .gge"2class="8ref_13r_each_8 1.2a> md231clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodePREPA-pcm.am58./a>{ ou20 hr:f=8so20 2mrandive "2345">1345./"13>13eeeeee1_20" id23="+code=SND_SOC_1PCM_"18clas_4 .spa
 8ioc9oc-pcm8   7"7id  !h">1am7#L192nbinsetcpm=oc28-p59" id  L12i">f
./a>-2cl9r" class"13+c>20 " c1c2de=de233clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodeSTcRT,9cm_be_dai_hw_UPD2658B 91efSTcodeSTcRTm=oc na84  9  4 4  ">ou20 hr:f=8so20 2m">f
./a>-2gt;.a hrfor"13ss="8re"91"21264.23s="sref">dpcm.39oa h>"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12ip _hislor2gt;.a hrfor"13s="99ai_h162./a> 23 4 return .a cases8a=r9t"ou_updpcmef64AS28./a9STcodeSTOP,9cm_be_dai_hw_UPD2658B 91efSTcodeSTOPm=oc na84  9  4 4  ">ou20 hr:f=8so20 2mp _hislor2gt;.a hrfor"136="99ai_h1r2f">ea23href="+code=runh1ss=>"11hL12_4 .spa
 8ioc9oc-pcm8  "7id  !h">1am7#L192nbinsetcpm=oc28-p59" id  L12ieRAMSsref2each_entry""137="99ai_h1>2.a hr23soc-pcm.c#_SOcases8a=r9t"ou_updpcmef64AS28./a9STcodeSUSPEND,9cm_be_dai_hw_UPD2658B 91efSTcodeSUSPENDa.e" na84  9  4 4  ">ou20 hr:f=8so20 2m.c#L132862345">1345./"138="99ai_h1u2d/soc239ef=5+code=dev"h1am.>"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12in_4 .gge"2class="8ref_139="99ai_h1424 ret23 clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodePAUSED,9cm_be_dai_hw_UPD2658B 91efSTcodePAUSEDm=oc na84  9  4 4  ">ou20 hr:f=8so20 259" am
  L2345">1345./"143/20 hr>"11265" i24ef">ea> <6./a1>#20"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12ef9 L130782cl9r" class"14r_each_8 1_2946> 241clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodeHW_FREpcm.am58./a>{ ou20 hr:f=8so20 25randive "2gt;.a hrfor"11>13eeeeee1"214ode24="+code=SND_SOC_1PCM_"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12e">f
./a>-2cl9r" class"14+c>20 " c182 &9t8243clsoc-am
  Lcases8a=r9t"ou_updpcmef64AS28./a9STcodeCLOSpcm.am58./a>{ ou20 hr:f=8so20 25">f
./a>-2gt;.a hrfor"14ss="8re"91l2n_4 .24s="sref">dpcm.39oa h>"18clas_4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L12ep _hislor2each_entry""11s="99ai_h1"266cod241265" id  6nd>_D evclao91ss=>"1p-pcm.808las9="259" am
  L2345">1345./"146="99ai_h1 21327"24.c#L1265" id  6h1de=>"15te>erme.e"soc2in_4 .gge"2class="8ref_117="99ai_h142.gge"24="b_pcm_ [.>4 .spa
 8ioc9oc-pcm8 1am7#L192nbinsetcpm=oc28-p59" id  L1259" am
  L2345">1345./"148="99ai_h182">12824"lf">m
  Lam
 xh14" >"11886cs808las9="259" am
  L2345">1345./"149="99ai_h1d2de=UC2oc-pcm
  Lam
 xh14" >"11886cs808las9="2f">f
./a>-2gt;.a hrfor"153/20 hr>"1p2_.a h21280">co7eic _pa>"11ked4 .ggdsize_97099 4  "rr" cldsize_9">ea>  cm_4  rr2f">f
./a>-2gt;.a hrfor"15r_each_8 1l2m9a h2ef8"+c9de=list_f 1lcm>>>>>>>>>>>>>>>>>"15e" class="sre7">b8.78= nd/soass="63a>, ..gge"s="schart"dpc"12size_97099 4  "rr" cldize_9">ea>  ea>  m=oc28-pacm_4  rr2f">f
./a>-2gt;.a hrfor"15>13eeeeee1 2conti2ue; <6 href64AShe1  c>"1p2ef",d_socle./2up _hislor2each_entry""15+c>20 " c1c2de=de2="lf">m
  Lam
#L192nbincan_updpcm28-p9cmpef=hw2b  conc/so7re ea>incan_updpcm28-e  conc/so7re ea=e./rr" class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ahw2b  conc/so7re e7#L192nbinsetcpm=oc28-p59" id  L1259" am
  L2345">1345./"1pss="8re"91s2="sre25s="sref">dpcm7#L192nbingetcpm=oc28-p9cm0./adata259" id  L1259mp9cm0./adata cont"dpc7#L192nbinsetcpm=oc28-p59" id  L12in_4 .gge"2class="8ref_15s="99ai_h1=2+code2514 4 re8urn9.83h161.>"13am =8size_97099 4  "rr" cldsize_9">ea>  ea=e>"11=UCLASS_RUNTI97099 40ass="sr-p259" am
  L2345">1345./"156="99ai_h1d2=reop2m.c#L1265" id  6h1de=>"15te>erme.e"soc2ode=mutex_2ock_neste>s"157="99ai_h1 22inue25vclaoL129> f
./a>-2gt;.a hrfor"158="99ai_h1f2>err.2584 4 re8urn9.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2f9" am
  L2gt;.a hrfor"159="99ai_h1e264">125p28abAMSsredo>dhwlin>L129> 1amaLp/s6 ok1265" idnd/sdrive0L1"slidata.e"flas="sref">e4 .ggbidai_"15"9c86 c9ass="sredai_"15"a.e"flas="sref">e4 .ggbi99ai9c86 c9ass="sre99aif">es "sound/ cm=oc-OCrfor_dpcm_4  rr2f">f
./a>-2gt;.a hrfor"163/20 hr>"12296a>126ef">ea> <6./a1>#20 10eed4 .gge"ine" nam
 UCLNUL"+code=devno bacNUL"0">1p ?a2==oc-pcm. 1"9oc-pcm8 1am :a2==oc-pcm. 1"9oc-pcm8 f
./a>-2gt;.a hrfor"16r_each_8 1 2lalas26f"t; neam./a>); 1rea>"11calculany dPO2.randive "2ouss="338oc" 2>13eeeeeeec2_entr26="+code=SND_S83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13==oc-pcm. 1"9oc-pcm8 1amaneam./a>); 1rea>"11calculany dPO2.p _hislor2gt;.a hrfor" 2+c>20 " cc.2a>); 26s="sref">f
./a>cca 9>e10e"ine" s*.a href="+6data>ea>  _9oc-pcm59" id  L1259m L12>ea>  _9oc-pc x_un class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=ocsor failed1265" id  L1265)ef=8so20 2f9" am
  L2each_entry"" 6ss="8re"9oa2h"dpc26inueespoked4 .g918626910d" c_76" ir132reRAMSsref2>dpcm./a7[." 6s="99ai_hwl2bsioc26ass/soc/soc-pcmh1n class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=oc las=as8a=r9t"ou_updpcmef64AS28./a9STcodeHW_PARAMSont"dpcp8s>listmef64AS28./a9STcodeHW_PARAMS4 resbe_dai_hw_UPD2658B 92./a  href href_socle./2reRAMSsref2>dpcm./a7[." 66="99ai_hwp2m.c#L26href="+code=runh1n class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=oc lls=as8a=r9t"ou_updpcmef64AS28./a9STcodeSTOP,9cm_be_dai_hw_UPD2658B 91efSTcodeSTOPm=oc5las8a=r9t"ou_updpcmef64)acm_4  rr2reRAMSsref2>dpcm./a7[." 67="99ai_hw>2ist_f26soc-pcm.c#_SOCrh1oun>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2u">f
./a>-2>dpcm./a7[." 68="99ai_hwe2">str269ef=5+code=dev"h1am.>>dhwlin>L129> P  con:st7id  !h">1am "sound/ cm=oc-OCrfor_dpcm_4  rr2u9" am
  L2>dpcm./a7[." 69="99ai_hwb2m.ir1263dapm__SOC_L#L1hwbcm>>dhwlin>L129> 1amaneam./a>); 1rea>"11calculany dPO2reRAMSsref2>dpcm./a7[." 73/20 hr>" v24 4 .2 hreh">13Lclass=" v14>>>>>>>>>Crh1oun>83h161.>"13am =parar" cformat_99ai9c86 c9ass="sreparar" cformat_99ai x_unloEXPORT_SYMBOLb  concformatc/so7re e))aneam./a>); 1rea>"11calculany dPO2r">f
./a>-2>dpcm./a7[." 7r_each_8 4"2strea27f8"+c9de=list_f 1lcm>>>>>>>>>>>>>>>>>loEXPORT_SYMBOLb  concchannelsc/so7re e)aneam./a>); 1rea>"11calculany dPO2rrandive "2>dpcm./a7[." 7>13eeeeeee.2a hre27OC_L#L1isref">see63d>>>>>>>>>>>>>>>>>loEXPORT_SYMBOLb  concr="sr1so728./a9f="+b  concr="s x_unloEXPORT_SYMBOLb  conc/so7re e))UPD2658B 92./a  href href_socle./2r">f
./a>-2each_entry"" 7+c>20 " cca297 cl27"lf">m
  Lam
 ncccod>" snecoue" nam
 2reRAMSsref2>dpcm./a7[." 7ss="8re"9oa2h"dpc2ss="sref">dpcm2==oc-pcm. 1"=">"12"7co20BEs"ar6PCset-the BE "sound/ cm=oc-OCrfor_dpcm_4  rr2reRAMSsref2>dpcm./a7[." 7s="99ai_hws2ef">s2714 4 re8urn9.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13==oc-pcm. 1"9oc-pcm8 1am)UPD2658B 92./a  href href_socle./2reRAMSsref2>dpcm./a7[." 76="99ai_hw"2duar>27.c#L1265" id  6h1de=>"15te>erme.e"soc2reRAMSsref2>dpcm./a7[." 77="99ai_hwd2ar>_D2evclaoL129> "11ked4 .gglist_emptt/soc7 5las8a6s=list_emptt x_un./rr" class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8aboc7li12665./a> 7v14947.aboc7li126680">)sb href64AShe1  c>"1p2ef",d_socle./2reRAMSsref2>dpcm./a7[." 78="99ai_hw 28> "9270" c7cla9W_PARAh1_ 86910class="sref"offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2reRAMSsref2>dpcm./a7[." 79="99ai_hw229./a>273dapm__SOC_L#L1hwbcm>>dhwlin>L129> 1am)UPD2658B 92./a  href href_socle./2reRAMSsref2>dpcm./a7[." 83/20 hr>" "266cod28hreh">13Lclass=" v14>goto.83h161.>"13am =ou97099 4  "rr" clous="sref">ea> <6./a8>#20 href=8so20 2reRAMSsref2>dpcm./a7[." 8r_each_8 4
2 L13228f8"+c9de=listm
  Lam
 xh14" >"11886cs808las9="2de=runtime2upda6ea8./a" 8>13eeeeeeel2;6">128>1280./a> mdodee1_e0>"13sound/soc/so72ef9 L130782cl9r" class" 8+c>20 " cc82">12828"lf">m
  Lam
 xc1cod>"15ked4list_ng,_each_126rt/soc7 5las8a6s=list_ng,_each_126rt x_unloEXPORT_SYMBOLdata259" id  L1259m L1280">te./rr" class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8aboc7li12665./a> 7v14947.aboc7li126680">te29h1_ua6910ef="list_ .gge"inec86 c9aslist_ .4 resb href64AShe1  c>"1p2ef",d_socle./2up _hislor2each_entry"" 8ss="8re"9od2de=UC28s="sref">dpcm.39oa h>7#L192nbingetcpm=oc28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpcea>  m=data259" id  L1259m L1280">flas="sref">e4 .ggbind/sdrive0L1"slidata.e"ef">ea> <6./a8>#20 href=8so20 2reRAMSsref2>dpcm./a7[." 8s="99ai_hw 2conti28eam./a>); 92inuhwsre>incan_updpcm28-e  conc/so7re ea=e./rr" class="sref">edata259" id  L1259m L1280">flas="sref">e4 .ggbihw2b  conc/so7re e7#L192nbinsetcpm=oc28-p59" id  L12reRAMSsref2>dpcm./a7[." 86="99ai_hwr2f">ea28.c#L1265" id  6h1de=>"15te>erme.e"soc2reRAMSsref2>dpcm./a7[." 87="99ai_hws2="sre28soc-pcm.c#_SOCrh1oun>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2reRAMSsref2>dpcm./a7[." 88="99ai_hwd2wcL12289ef=5+code=dev"h1am.>>dhwlin>L129> 1ama
 xc1cod>"15ked4 .gge"inec86 c9ass="sreflas="sref">e4 .ggbidai_"15"9c86 c9ass="sredai_"15"a.e"flas="sref">e4 .ggbi99ai9c86 c9ass="sre99aif">e)UPD2658B 92./a  href href_socle./2reRAMSsref2>dpcm./a7[." 89="99ai_hw92>130928c-pcm
  Lam
 xh14" >"11886cs808las9="2de=runtime2upda6ea8./a" 93/20 hr>" s2"sref29hreh">13Lclass=" v14>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2ef9 L130782cl9r" class" 9r_each_8 4a2./a>)29f8"+c9de=list_f 1lcm>>>>>>>>>>>>>>>>>l==oc-pcm. 1"9oc-pcm8 1amaneam./a>); 1rea>"11calculany dPO2> "v14 4  2   8.id " i" 9>13eeeeeee62dapm_29OC_L#L1isref">see63d>>>>>>>>>>>>>>>>>loEXPORT_SYMBOLdata>ea>  _9oc-pcm59" id  L1259m L12>ea>  _9oc-pc x_un class="sref">e .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=ocsor failed1265" id  L1265)ef=8so20 2reRAMSsref2>dpcm./a7[." 9+c>20 " ccc2de=de2="lf">m
  Lam
 ncccod>" snecoue" nam
 2L1330"#L132bstisconnec" 9ss="8re"9o.2a>); 29s="sref">dpcm.39oa h>cmh1n class="sref">e .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=oc las=as8a=r9t"ou_updpcmef64AS28./a9STcodeHW_PARAMSont"dpcp8s>listmef64AS28./a9STcodeHW_PARAMS4 resbe_dai_hw_UPD2658B 92./a  href href_socle./2> "v14 4  2   8.id " i" 9s="99ai_hw_2arr" 29eam./a>); 92inuhwsre>>seen class="sref">e .gge"inec86 c9ass="sreflas="sref">e4 .ggbidata259" id  L1259m L1280">12cm0./a> mdode=UCLNUL"+code=devno bacNUL"0">1pcm75d/soc7 5las8ads="sr1so728./a9f="+co7epm=oc lls=as8a=r9t"ou_updpcmef64AS28./a9STcodeSTOP,9cm_be_dai_hw_UPD2658B 91efSTcodeSTOPm=oc5las8a=r9t"ou_updpcmef64)acm_4  rr2>eRAMSsref2>dpcm./a7[." 96="99ai_hw=2+code29c#L1259" id  .ahw">d>s=" v14>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=onpc-ptfgge"inec86 c9asonpc-ptf x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12size7099 4  "rr" cldizeg=oc -.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es "sound/ cm=oc-OCrfor_dpcm_4  rr2eeRAMSsref2ock_neste>s" s7="99ai_hwd2ar>_D29soc-pcm.c#_SOCrh1oun>"1111111>>>>>>>>l==oc-pcm. 1"9oc-pcm8 P  con:st7id  !h">1am "sound/ cm=oc-OCrfor_dpcm_4  rr2up _hislor2each_entry"" 98="99ai_hw 28> "9299ef=5+code=dev"h1am.>>dhwlin>L129> 1amaneam./a>); 1rea>"11calculany dPO2reRAMSsref2>dpcm./a7[." 99="99ai_hwl2n/pre2dhwlin>.ahw">d>s=" v14>83h161.>"13am =parar" cformat_99ai9c86 c9ass="sreparar" cformat_99ai x_unloEXPORT_SYMBOLb  concformatc/so7re e))aneam./a>); 1rea>"11calculany dPO3up _hislor3each_entry""1_3/20 hr>"1c3ass="3ref">ea> <6./a1>#20.ahw">d>s=" v14>83h161.>"13am =b  concchannelsc/so7re e)aneam./a>); 1rea>"11calculany dPO3reRAMSsref3>dpcm./a7[."1or_each_8 123 2ref38so20 86eam./a>].16 hre10e"ines=" v14>83h161.>"13am =b  concr="sr1so728./a9f="+b  concr="s x_unloEXPORT_SYMBOLb  conc/so7re e))UPD2658B 92./a  href href_socle./3reRAMSsref3>dpcm./a7[."1">13eeeeee1e3.a hr3f="+code=SND_Sm
  Lam
 xh14" >"11886cs808las9="3r3RAMSsref3>dpcm./a7[." 9+c>20 " ccc3L128030"lf">m
  Lam
 ncccod>" snecoue" nam
 3in_4 .gge"3class="8ref_104c>20 " c1m3a>); 30s="sr83h161.>"13am =ou97099 4  "rr" clous="sr na84  9  4 4  ">ou20 hr:f=8so20 33dapm__SOC3L#L13clear_9105c>20 " c1m3arr" 3L1265" id  6nd"11hL12_pa>"11ked4 .ggoffsh97099 4  "rr" cloffsh9f">eUPD2658B 92./a  href href_socle./3r6apm__SOC3Ldpcm./a7[." 96="99ai_hw=3+code303eeeeeeee .a pah1 L1>"11 68so808las9="3reRAMSsref3>dpcm./a7[."1"7c>20 " c1m3ar>_D3evclaoeee .a pah1 L1>"11 68so808las9="3r8RAMSsref3>ach_entry"" 98="99ai_hw 38> "9330" c7co7eic _pa>"11ked4 .ggdsize_97099 4  "rr" cldsize_9">ea>    _UL"d_fils x_un7#L192nbingetcpm=oc28-fils="sref6-pcm.7#Lfils x_ut"dpclist__us c x_ut"dpces "sound/ cm=oc-OCrfor_dpcm_4  rr359" am
  L3345">1345./"1a9="99ai_h1_3n/pre30p28abAMSsredo>dhwlin>.ahw">d>s=" v14>83h161.>"13am =pize_97099 4  "rr" cldize_9">ea>  te29h1_ua6910ef="loff_97099 4  "rr" clloff_9 x_ut"dpce) "sound/ cm=oc-OCrfor_dpcm_4  rr3reRAMSsref3>dpcm./a7[."113/20 hr>"113cm.c#31list_ href64AShe1  c>"1p2ef",d_socle./3in_4 .gge"3class="8ref_11r_each_8 1r3am" s319ef=5+code=de7#L192nbingetcpm=oc28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpcea>  m=nils="sref6-pcm.7#Lfils x_uflas="sref">e4 .ggbipc-v>  _datac/so7re   _dataf">eUPD2658B 92./a  href href_socle./3.randive "3ouss="338oc"11>13eeeeee1a3_pend31="+code=SND_S83h161.>"13am =8size_97099 4  "rr" cldsize_9">ea>  ea>  m=PAGdeSIZE7099 4  "rr" clPAGdeSIZE80">te29h1_ua6910ef="offsh97099 4  "rr" cloffsh9f">ea=e>te29h1_ua6910ef="rh97099 4  "rr" clrh9f">ea=e>"11=UCLASS_RUNTI97099 40ass="sr-p3f">f
./a>-3gt;.a hrfor"11+c>20 " c1n3cosre31s="sref">f
./chart"dpc20 " c183la9s831inueespoked4 .g918626910d" c_76" ir133up _hislor3each_entry""11s="99ai_h1_3arr" 3lass/soc/soc-ploEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 ss="sref">ea>  m=kmallocgge"inec86 c9askmalloc x_unloEXPORT_SYMBOLout_c=oc97099 4  "rr" clout_c=oc9a.e"te29h1_ua6910ef="GFP_KERNEts.7a>,9EXPORT_SGFP_KERNEtf">e)UPD2658B 92./a  href href_socle./3feRAMSsref3gt;.a hrfor"116c>20 " c1s3="sre3">duar>m.c#L12cmh1!loEXPORT_SYMBOLbufgge"inec86 c9assuf1so7) "sound/ cm=oc-OCrfor_dpcm_4  rr3reRAMSsref3pcm0./a> md9117="99ai_h16391/" 31soc-pcm.c#_SOCrh1oun>"11hL12-loEXPORT_SYMBOLENOMEMgge"inec86 c9asENOMEM1so7"11=UCLASS_RUNTI97099 40ass="sr-p3f8RAMSsref3pcm0./a> md9118="99ai_h143 clas31/a> mdode=UCLASh180">"11utdow" id  L13in_4 .gge"3class="8ref_119="99ai_h1d3ar>er319duar>m.c#L12cmh1 class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbicpu_dai7099 4  "rr" clcpu_dai"sreflas="sref">e4 .ggbid c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pcpo728e" c/so7re 1345./"123/20 hr>"183f"9s832hreh">13Lclass=" v14>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=cass="how c9ass="sref6-pcm.7#Lcass="how c9asspcm.7 class="sref">end/sdrive0L1"slidata.e"te29h1_ua6910ef="SNDRV_91efSTREAM_PLAYBACK,9cm_be_dai_hw_UPDRV_91efSTREAM_PLAYBACKf">es "sound/ cm=oc-OCrfor_dpcm_4  rr3ef9 L130783cl9r" class"12r_each_8 1"3"line32so20 86eam./a>].16 hre10e"ines=" v14>oc/soc-ploEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12out_c=oc97099 4  "rr" clout_c=oc9a.e"a-.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">e)UPD2658B 92./a  href href_socle./3erandive "3gt;.a hrfor"18>13eeeeee1"3pcmam32>1280./a> mdodee1_e0>"13sound/soc/so73f">f
./a>-3gt;.a hrfor"18+c>20 " c1+3ode="323duar>m.c#L12cmh1 class="sref">end/sdrive0L1"slidata.e"flas="sref">e4 .ggbicpu_dai7099 4  "rr" clcpu_dai"sreflas="sref">e4 .ggbid c>annrar_mi"slibsioctl=fe" channrar_mi"L1283P"-pccfe8e" 7099 4  "rr" clcfe8e" " chm75d/soc7 5las8achannels_min7099 4  "rr" clchannels_min1so7) "sound/ cm=oc-OCrfor_dpcm_4  rr35n_4 .gge"3gt;.a hrfor"12ss="8re"91d3de=UC32s="sref">dpcm.39oa h>83h161.>"13am =offsh97099 4  "rr" cloffsh9f">ea+ss="sref">ea>  m=cass="how c9ass="sref6-pcm.7#Lcass="how c9asspcm.7 class="sref">end/sdrive0L1"slidata.e"te29h1_ua6910ef="SNDRV_91efSTREAM_CAPTU-pcm.am58./a>{ es "sound/ cm=oc-OCrfor_dpcm_4  rr3ep _hislor3each_entry""12s="99ai_h1C3a> "v34 4 return .a >].16 hre10e"ines=" v14>oc/soc-ploEXPORT_SYMBOLbufgge"inec86 c9assuf1so7 +.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">es13eeeeee1"dp>"12out_c=oc97099 4  "rr" clout_c=oc9a.e"a-.83h161.>"13am =offsh97099 4  "rr" cloffsh9f">e)UPD2658B 92./a  href href_socle./3up _hislor3each_entry""126c>20 " c1.3a>]..32.c#L1265" id  6h1de=>"15te>erme.e"soc35eRAMSsref3each_entry""127="99ai_h1o3nd/so32vclaoL129> ea=e83h161.>"13am =pimpl _UL"d_from_buff cont"dpcp8s>list_impl _UL"d_from_buff cpcm.7 class="sref">eus c_bufgge"inec86 c9asus c_buff">es>  te29h1_ua6910ef="pponc/so7re ea
 xc1cod>"15ked4 ufgge"inec86 c9assuf1so7te29h1_ua6910ef="offsh97099 4  "rr" cloffsh9f">e)UPD2658B 92./a  href href_socle./3u8RAMSsref3gt;.a hrfor"128="99ai_h1a3./a>)32/a> mdode=UCLASh180">"11utdow" id  L135n_4 .gge"3pcm0./a> md9189="99ai_h1o3e=dpc3" clsoc-am
  L="sref">ea>  m=kine"gge"inec86 c9askine" x_unloEXPORT_SYMBOLbufgge"inec86 c9assuf1so7)UPD2658B 92./a  href href_socle./3m.c#L132863pcm0./a> md9133/20 hr>"1 3cm L133SND_SOC_-pcm."18clas29h1_ua6910ef="rh97099 4  "rr" clrh9f">eUPD2658B 92./a  href href_socle./3mf9 L130783class="8ref_13r_each_8 1.3a> md33>13ee>_D evclao91ss=>"1p-pcm.808las9="3mrandive "3345">1345./"13>13eeeeee1_30" id33>1280./a> mdodee1_e0>"13sound/soc/so73i">f
./a>-3cl9r" class"13+c>20 " c1c3de=de333clsoco7eic conste7#L192nbingetcpm=oc28-fils_opera/ cp65./a> 7v14947.asils_opera/ cp6">ea>    _fm75f">ea=e href64AShe1  c>"1p2ef",d_socle./3m">f
./a>-3gt;.a hrfor"13ss="8re"91"31264.33s="sref">dpcmm75d/soc7 5las8amdod7099 4  "rr" clododf">ea=e83h161.>"13am =pimpl _mdod7099 4  "rr" clpimpl _mdodf">es "sound/ cm=oc-OCrfor_dpcm_4  rr3ip _hislor3gt;.a hrfor"13s="99ai_h163./a> 33 4 return .a m75d/soc7 5las8aUL"d7099 4  "rr" clrhadf">ea=e83h161.>"13am =cass="a>  _UL"d_fils="sref6-pcm.7#Lcass="a>  _UL"d_fils x_us "sound/ cm=oc-OCrfor_dpcm_4  rr3ip _hislor3gt;.a hrfor"136="99ai_h1r3f">ea33href="+code=rm75d/soc7 5las8allsee c/so7re ea=e83h161.>"13am =cefault_llsee c/so7re 1345./"138="99ai_h1u3d/soc33/a> mdode=UCLASh180">"11utdow" id  L13in_4 .gge"3class="8ref_139="99ai_h1434 ret33 clso"15e" class="sre7">bm=ocass=debugfs_add7099 4  "rr" clbm=ocass=debugfs_add x_un7#L192nbingetcpm=oc28-p9cm0./a> mdode=UCLAShsub  continue; <6 href64AShsub  cont"dpc1345./"143/20 hr>"11365" i34list_ href64AShe1  c>"1p2ef",d_socle./3ef9 L130783cl9r" class"14r_each_8 1_3946> 341clsoc-am
  Lcmh1!loEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidai_"15"9c86 c9ass="sredai_"15"a.e") "sound/ cm=oc-OCrfor_dpcm_4  rr35randive "3gt;.a hrfor"11>13eeeeee1"314ode34="+code=SND_SOC_1PCM_"18clas>"11=UCLASS_RUNTI97099 40ass="sr-p3e">f
./a>-3cl9r" class"14+c>20 " c183 &9t834"lf">m
  Lam
 ncccod>" snecoue" nam
 35">f
./a>-3gt;.a hrfor"14ss="8re"91l3n_4 .34s="sref">dpcmloEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidebugfs_cass=roo97099 4  "rr" cldebugfs_cass=roo9f">ea=e83h161.>"13am =cebugfs_cUL"  _dinnrar_mi"slibsiocebugfs_cUL"  _din x_unloEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidai_"15"9c86 c9ass="sredai_"15"a.e"flas="sref">e4 .ggbi99ai9c86 c9ass="sre99aif">es "sound/ cm=oc-OCrfor_dpcm_4  rr3ep _hislor3each_entry""11s="99ai_h1"366cod34 4 return .a >].16 hre10e"ineloEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbicarwtre9ef">list_forarw1so7flas="sref">e4 .ggbidebugfs_rarw=roo97099 4  "rr" cldebugfs_rarw=roo91so7)UPD2658B 92./a  href href_socle./359" am
  L3345">1345./"146="99ai_h1 31327"34>duar>m.c#L12cmh1!loEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidebugfs_cass=roo97099 4  "rr" cldebugfs_cass=roo9f">esb href64AShe1  c>"1p2ef",d_socle./3in_4 .gge"3class="8ref_117="99ai_h143.gge"34soc-pcm.c#_SOCrh1oun>83h161.>"13am =dev_dbcm59" id  L1259m ev_dbc x_unloEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidevm59" id  L1259m evf">es "sound/ cm=oc-OCrfor_dpcm_4  rr3e8RAMSsref3345">1345./"148="99ai_h183">128349ef=5+code=dev"h1am.>>dhwlin>L2==oc-pcm. 1"9oc-pcm8 1amaneam./a>); 1rea>"11calculany dPO359" am
  L3345">1345./"149="99ai_h1d3de=UC34p28abAMSsredo>dhwlin>.ahw">d>sloEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidai_"15"9c86 c9ass="sredai_"15"a.e"flas="sref">e4 .ggbi99ai9c86 c9ass="sre99aif">e)UPD2658B 92./a  href href_socle./3f">f
./a>-3gt;.a hrfor"153/20 hr>"1p3_.a h35ef">ea> <6./a1>#20"18clas-loEXPORT_SYMBOLEINVAts.7a>,9EXPORT_SYINVAtf">eUPD2658B 92./a  href href_socle./3f">f
./a>-3gt;.a hrfor"15r_each_8 1l3m9a h35f8"+c9de=listm
  Lam
 xh14" >"11886cs808las9="3f">f
./a>-3gt;.a hrfor"15>13eeeeee1 3conti35>1280./a> mdodee1_e0>"13sound/soc/so73up _hislor3each_entry""15+c>20 " c1c3de=de35"lf">m
  Lam
 xc1cod>"15ked4rtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidebugfs_cass=c9ass="sref6-pcm.7#Lcebugfs_cass=c9assf">ea=e83h161.>"13am =cebugfs_cUL"  _fils="sref6-pcm.7#Lcebugfs_cUL"  _fils x_unl4 .spa
 8ioc9oc-pcm8 1ama
0444aneam./a>); 1rea>"11calculany dPO359" am
  L3345">1345./"1pss="8re"91s3="sre35s="sref">dpcm.39oa h>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>loEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7flas="sref">e4 .ggbidebugfs_cass=roo97099 4  "rr" cldebugfs_cass=roo9f">eaneam./a>); 1rea>"11calculany dPO35p _hislor3class="8ref_15s="99ai_h1=3+code35 4 return .a >].16 hre10e"ines=" v14>oc/soc-p>>>>>>>>loEXPORT_SYMBOLrtd7099 4  "rr" clrtd1so7te./rr" class="sref">ecass="a>  _fm75d/soc7 5las8a6scass="a>  _fm75f">e)UPD2658B 92./a  href href_socle./3f9" am
  L3345">1345./"156="99ai_h1d3=reop3m.c#L1265" id  6h1de=>"15te>erme.e"soc3ode=mutex_3ock_neste>s"157="99ai_h1 32inue35sound/soc/soc-ph16+9>"11=UCLASS_RUNTI97099 40ass="sr-p3f">f
./a>-3gt;.a hrfor"158="99ai_h1f3>err.35"lf">m
  Lam
 xh14" >"11886cs808las9="3f9" am
  L3gt;.a hrfor"159="99ai_h1e364">135p28ab#endif
  Lam
 xh14" >"11886cs808las9="3f">f
./a>-3gt;.a hrfor"163/20 hr>"12396a>136ef">e


The original LXR softw 86>by thes8a=r9t"ouhttp:/86curceforge.net/projects/lxr">LXR =">"unitt x_u, this experi"12"al version>by 8a=r9t"oumailto:lxr@"16ux.no">lxr@"16ux.no" chm lxr."16ux.no kindly hostsd by 8a=r9t"ouhttp:/8www.redpill-"16pro.no">Redpill L16pro AS x_u, provider of L16ux consult-pc and opera/ cp6 service6 since 1995.