unsigned int period_pos;
unsigned int buffer_pos;
bool is_stream_running;
-
struct task_struct *playback_task;
wait_queue_head_t playback_waitq;
-
void (*copy_fn)(void *alsa, void *most, unsigned int bytes);
};
if ((channel->iface == iface) && (channel->id == channel_id))
return channel;
}
-
return NULL;
}
channel->period_pos -= runtime->period_size;
return true;
}
-
return false;
}
if (period_elapsed)
snd_pcm_period_elapsed(channel->substream);
}
-
return 0;
}
if (channel->cfg->direction == MOST_CH_TX)
kthread_stop(channel->playback_task);
most_stop_channel(channel->iface, channel->id, &comp);
-
return 0;
}
if (!channel->copy_fn)
return -EINVAL;
-
channel->period_pos = 0;
channel->buffer_pos = 0;
-
return 0;
}
*sample_res = strsep(&buf, ".\n");
if (!*sample_res)
goto err;
-
return 0;
err:
strscpy(pcm->name, device_name, sizeof(pcm->name));
snd_pcm_set_ops(pcm, direction, &pcm_ops);
snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_VMALLOC, NULL, 0, 0);
-
return 0;
err_free_adpt:
if (!channel)
return -EINVAL;
-
if (channel->is_stream_running)
period_elapsed = copy_data(channel, mbo);
-
most_put_mbo(mbo);
-
if (period_elapsed)
snd_pcm_period_elapsed(channel->substream);
-
return 0;
}
pr_err("Failed to register %s configfs subsys\n", comp.name);
most_deregister_component(&comp);
}
-
return ret;
}