siu_stream
struct siu_stream playback;
struct siu_stream capture;
static void siu_dai_open(struct siu_stream *siu_stream)
static void siu_dai_pcmdatapack(struct siu_stream *siu_stream)
struct siu_stream *siu_stream;
siu_stream = &port_info->playback;
siu_stream = &port_info->capture;
siu_stream->rw_flg = 0; /* stream-data transfer flag */
siu_dai_open(siu_stream);
siu_dai_pcmdatapack(siu_stream);
struct siu_stream *siu_stream = &port_info->playback;
struct snd_pcm_substream *substream = siu_stream->substream;
desc = dmaengine_prep_slave_sg(siu_stream->chan,
desc->callback_param = siu_stream;
siu_stream->tx_desc = desc;
siu_stream->cookie = cookie;
dma_async_issue_pending(siu_stream->chan);
struct siu_stream *siu_stream = &port_info->capture;
struct snd_pcm_substream *substream = siu_stream->substream;
desc = dmaengine_prep_slave_sg(siu_stream->chan,
desc->callback_param = siu_stream;
siu_stream->tx_desc = desc;
siu_stream->cookie = cookie;
dma_async_issue_pending(siu_stream->chan);
struct siu_stream *siu_stream = container_of(work, struct siu_stream,
struct snd_pcm_substream *substream = siu_stream->substream;
dev_dbg(dev, "%s: flags %x\n", __func__, siu_stream->rw_flg);
if (!siu_stream->rw_flg) {
siu_stream->cur_period,
siu_stream->period_bytes);
count = siu_stream->period_bytes;
siu_stream->cur_period,
siu_stream->period_bytes),
siu_stream->period_bytes);
struct siu_stream *siu_stream = &port_info->capture;
if (siu_stream->xfer_cnt > 0x1000000)
if (siu_stream->rw_flg)
siu_stream->cur_period = 0;
siu_stream->rw_flg = RWF_STM_RD;
queue_work(system_highpri_wq, &siu_stream->work);
struct siu_stream *siu_stream = &port_info->capture;
struct device *dev = siu_stream->substream->pcm->card->dev;
if (!siu_stream->rw_flg)
siu_stream->rw_flg = 0;
struct siu_stream *siu_stream;
siu_stream = &port_info->playback;
param = &siu_stream->param;
siu_stream = &port_info->capture;
param = &siu_stream->param;
siu_stream->chan = dma_request_channel(mask, filter, param);
if (!siu_stream->chan) {
siu_stream->substream = ss;
struct siu_stream *siu_stream;
siu_stream = &port_info->playback;
siu_stream = &port_info->capture;
dma_release_channel(siu_stream->chan);
siu_stream->chan = NULL;
siu_stream->substream = NULL;
struct siu_stream *siu_stream;
siu_stream = &port_info->playback;
siu_stream = &port_info->capture;
rt = siu_stream->substream->runtime;
siu_stream->buf_bytes = snd_pcm_lib_buffer_bytes(ss);
siu_stream->period_bytes = snd_pcm_lib_period_bytes(ss);
info->port_id, rt->channels, siu_stream->period_bytes);
if (siu_stream->buf_bytes % siu_stream->period_bytes) {
__func__, siu_stream->buf_bytes,
siu_stream->period_bytes);
xfer_cnt = bytes_to_frames(rt, siu_stream->period_bytes);
siu_stream->format = rt->format;
siu_stream->xfer_cnt = xfer_cnt;
(unsigned long)rt->dma_addr, siu_stream->buf_bytes,
siu_stream->period_bytes,
siu_stream->format, rt->channels, (int)xfer_cnt);
struct siu_stream *siu_stream = &port_info->playback;
if (!siu_stream->rw_flg)
struct siu_stream *siu_stream;
siu_stream = &port_info->playback;
siu_stream = &port_info->capture;
siu_stream->cur_period,
siu_stream->period_bytes) - rt->dma_addr;
siu_read32(base + SIU_SBFSTS), ptr, siu_stream->buf_bytes,
siu_stream->cookie);
if (ptr >= siu_stream->buf_bytes)
siu_stream->rw_flg = 0;
struct siu_stream *siu_stream = &port_info->playback;
if (siu_stream->rw_flg)
siu_stream->rw_flg = RWF_STM_WT;
queue_work(system_highpri_wq, &siu_stream->work);
struct siu_stream *siu_stream = arg;
if (!siu_stream->rw_flg)
if (++siu_stream->cur_period >=
GET_MAX_PERIODS(siu_stream->buf_bytes,
siu_stream->period_bytes))
siu_stream->cur_period = 0;
__func__, siu_stream->cur_period,
siu_stream->cur_period * siu_stream->period_bytes,
siu_stream->buf_bytes, siu_stream->cookie);
queue_work(system_highpri_wq, &siu_stream->work);
snd_pcm_period_elapsed(siu_stream->substream);