in clients/cmt_speech.c [879:913]
static void cs_hsi_data_enable(struct cs_hsi_iface *hi,
struct cs_buffer_config *buf_cfg)
{
unsigned int data_start, i;
BUG_ON(hi->buf_size == 0);
set_buffer_sizes(hi, buf_cfg->rx_bufs, buf_cfg->tx_bufs);
hi->slot_size = L1_CACHE_ALIGN(hi->buf_size);
dev_dbg(&hi->cl->device,
"setting slot size to %u, buf size %u, align %u\n",
hi->slot_size, hi->buf_size, L1_CACHE_BYTES);
data_start = L1_CACHE_ALIGN(sizeof(*hi->mmap_cfg));
dev_dbg(&hi->cl->device,
"setting data start at %u, cfg block %u, align %u\n",
data_start, sizeof(*hi->mmap_cfg), L1_CACHE_BYTES);
for (i = 0; i < hi->mmap_cfg->rx_bufs; i++) {
hi->rx_offsets[i] = data_start + i * hi->slot_size;
hi->mmap_cfg->rx_offsets[i] = hi->rx_offsets[i];
dev_dbg(&hi->cl->device, "DL buf #%u at %u\n",
i, hi->rx_offsets[i]);
}
for (i = 0; i < hi->mmap_cfg->tx_bufs; i++) {
hi->tx_offsets[i] = data_start +
(i + hi->mmap_cfg->rx_bufs) * hi->slot_size;
hi->mmap_cfg->tx_offsets[i] = hi->tx_offsets[i];
dev_dbg(&hi->cl->device, "UL buf #%u at %u\n",
i, hi->rx_offsets[i]);
}
hi->iface_state = CS_STATE_CONFIGURED;
}