5 Dec
2017
5 Dec
'17
3:21 a.m.
Hi Takashi, again
+static void ak4613_dummy_write(struct work_struct *work) +{
- struct ak4613_priv *priv = container_of(work,
struct ak4613_priv,
dummy_write_work);
- struct snd_soc_component *component = priv->component;
- unsigned int mgmt1;
- unsigned int mgmt3;
- /* wait 5 LR clocks */
- udelay(5000000 / priv->rate);
- snd_soc_component_read(component, PW_MGMT1, &mgmt1);
- snd_soc_component_read(component, PW_MGMT3, &mgmt3);
- snd_soc_component_write(component, PW_MGMT1, mgmt1);
- snd_soc_component_write(component, PW_MGMT3, mgmt3);
+}
In my understanding, it's better to have care of kernel preemption in this case because data transmission is already activated and these should be executed as quick as possible to prevent much presentation loss.
To avoid v6 patch, I want to know more clearly. Do you mean it needs spin lock ? If so lock in trigger, and unlock here ? Or lock/unlock on each ?
Best regards --- Kuninori Morimoto