Lines Matching refs:cpcm

882 	struct snd_cs46xx_pcm * cpcm = runtime->private_data;  in snd_cs46xx_pb_trans_copy()  local
883 memcpy(cpcm->hw_buf.area + rec->hw_data, runtime->dma_area + rec->sw_data, bytes); in snd_cs46xx_pb_trans_copy()
889 struct snd_cs46xx_pcm * cpcm = runtime->private_data; in snd_cs46xx_playback_transfer() local
890 return snd_pcm_indirect_playback_transfer(substream, &cpcm->pcm_rec, in snd_cs46xx_playback_transfer()
914 struct snd_cs46xx_pcm *cpcm = substream->runtime->private_data; in snd_cs46xx_playback_direct_pointer() local
916 if (snd_BUG_ON(!cpcm->pcm_channel)) in snd_cs46xx_playback_direct_pointer()
920 ptr = snd_cs46xx_peek(chip, (cpcm->pcm_channel->pcm_reader_scb->address + 2) << 2); in snd_cs46xx_playback_direct_pointer()
924 ptr -= cpcm->hw_buf.addr; in snd_cs46xx_playback_direct_pointer()
925 return ptr >> cpcm->shift; in snd_cs46xx_playback_direct_pointer()
932 struct snd_cs46xx_pcm *cpcm = substream->runtime->private_data; in snd_cs46xx_playback_indirect_pointer() local
935 if (snd_BUG_ON(!cpcm->pcm_channel)) in snd_cs46xx_playback_indirect_pointer()
937 ptr = snd_cs46xx_peek(chip, (cpcm->pcm_channel->pcm_reader_scb->address + 2) << 2); in snd_cs46xx_playback_indirect_pointer()
941 ptr -= cpcm->hw_buf.addr; in snd_cs46xx_playback_indirect_pointer()
942 return snd_pcm_indirect_playback_pointer(substream, &cpcm->pcm_rec, ptr); in snd_cs46xx_playback_indirect_pointer()
967 struct snd_cs46xx_pcm *cpcm = substream->runtime->private_data; in snd_cs46xx_playback_trigger() local
968 if (! cpcm->pcm_channel) { in snd_cs46xx_playback_trigger()
977 snd_cs46xx_poke(chip, (cpcm->pcm_channel->pcm_reader_scb->address + in snd_cs46xx_playback_trigger()
980 if (cpcm->pcm_channel->unlinked) in snd_cs46xx_playback_trigger()
981 cs46xx_dsp_pcm_link(chip,cpcm->pcm_channel); in snd_cs46xx_playback_trigger()
1001 snd_cs46xx_poke(chip, (cpcm->pcm_channel->pcm_reader_scb->address + in snd_cs46xx_playback_trigger()
1004 if (!cpcm->pcm_channel->unlinked) in snd_cs46xx_playback_trigger()
1005 cs46xx_dsp_pcm_unlink(chip,cpcm->pcm_channel); in snd_cs46xx_playback_trigger()
1055 static int _cs46xx_adjust_sample_rate (struct snd_cs46xx *chip, struct snd_cs46xx_pcm *cpcm, in _cs46xx_adjust_sample_rate() argument
1060 if ( cpcm->pcm_channel == NULL) { in _cs46xx_adjust_sample_rate()
1061 cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate, in _cs46xx_adjust_sample_rate()
1062 cpcm, cpcm->hw_buf.addr,cpcm->pcm_channel_id); in _cs46xx_adjust_sample_rate()
1063 if (cpcm->pcm_channel == NULL) { in _cs46xx_adjust_sample_rate()
1068 cpcm->pcm_channel->sample_rate = sample_rate; in _cs46xx_adjust_sample_rate()
1071 if ((int)cpcm->pcm_channel->sample_rate != sample_rate) { in _cs46xx_adjust_sample_rate()
1072 int unlinked = cpcm->pcm_channel->unlinked; in _cs46xx_adjust_sample_rate()
1073 cs46xx_dsp_destroy_pcm_channel (chip,cpcm->pcm_channel); in _cs46xx_adjust_sample_rate()
1075 if ( (cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate, cpcm, in _cs46xx_adjust_sample_rate()
1076 cpcm->hw_buf.addr, in _cs46xx_adjust_sample_rate()
1077 cpcm->pcm_channel_id)) == NULL) { in _cs46xx_adjust_sample_rate()
1083 if (!unlinked) cs46xx_dsp_pcm_link (chip,cpcm->pcm_channel); in _cs46xx_adjust_sample_rate()
1084 cpcm->pcm_channel->sample_rate = sample_rate; in _cs46xx_adjust_sample_rate()
1096 struct snd_cs46xx_pcm *cpcm; in snd_cs46xx_playback_hw_params() local
1103 cpcm = runtime->private_data; in snd_cs46xx_playback_hw_params()
1111 if (_cs46xx_adjust_sample_rate (chip,cpcm,sample_rate)) { in snd_cs46xx_playback_hw_params()
1116 snd_BUG_ON(!cpcm->pcm_channel); in snd_cs46xx_playback_hw_params()
1117 if (!cpcm->pcm_channel) { in snd_cs46xx_playback_hw_params()
1123 if (cs46xx_dsp_pcm_channel_set_period (chip,cpcm->pcm_channel,period_size)) { in snd_cs46xx_playback_hw_params()
1135 if (runtime->dma_area != cpcm->hw_buf.area) in snd_cs46xx_playback_hw_params()
1137 runtime->dma_area = cpcm->hw_buf.area; in snd_cs46xx_playback_hw_params()
1138 runtime->dma_addr = cpcm->hw_buf.addr; in snd_cs46xx_playback_hw_params()
1139 runtime->dma_bytes = cpcm->hw_buf.bytes; in snd_cs46xx_playback_hw_params()
1143 if (cpcm->pcm_channel_id == DSP_PCM_MAIN_CHANNEL) { in snd_cs46xx_playback_hw_params()
1145 } else if (cpcm->pcm_channel_id == DSP_PCM_REAR_CHANNEL) { in snd_cs46xx_playback_hw_params()
1147 } else if (cpcm->pcm_channel_id == DSP_PCM_CENTER_LFE_CHANNEL) { in snd_cs46xx_playback_hw_params()
1149 } else if (cpcm->pcm_channel_id == DSP_IEC958_CHANNEL) { in snd_cs46xx_playback_hw_params()
1159 if (runtime->dma_area == cpcm->hw_buf.area) { in snd_cs46xx_playback_hw_params()
1172 if (cpcm->pcm_channel_id == DSP_PCM_MAIN_CHANNEL) { in snd_cs46xx_playback_hw_params()
1174 } else if (cpcm->pcm_channel_id == DSP_PCM_REAR_CHANNEL) { in snd_cs46xx_playback_hw_params()
1176 } else if (cpcm->pcm_channel_id == DSP_PCM_CENTER_LFE_CHANNEL) { in snd_cs46xx_playback_hw_params()
1178 } else if (cpcm->pcm_channel_id == DSP_IEC958_CHANNEL) { in snd_cs46xx_playback_hw_params()
1200 struct snd_cs46xx_pcm *cpcm; in snd_cs46xx_playback_hw_free() local
1202 cpcm = runtime->private_data; in snd_cs46xx_playback_hw_free()
1206 if (!cpcm) return -ENXIO; in snd_cs46xx_playback_hw_free()
1208 if (runtime->dma_area != cpcm->hw_buf.area) in snd_cs46xx_playback_hw_free()
1224 struct snd_cs46xx_pcm *cpcm; in snd_cs46xx_playback_prepare() local
1226 cpcm = runtime->private_data; in snd_cs46xx_playback_prepare()
1229 if (snd_BUG_ON(!cpcm->pcm_channel)) in snd_cs46xx_playback_prepare()
1232 pfie = snd_cs46xx_peek(chip, (cpcm->pcm_channel->pcm_reader_scb->address + 1) << 2 ); in snd_cs46xx_playback_prepare()
1240 cpcm->shift = 2; in snd_cs46xx_playback_prepare()
1243 cpcm->shift--; in snd_cs46xx_playback_prepare()
1248 cpcm->shift--; in snd_cs46xx_playback_prepare()
1262 memset(&cpcm->pcm_rec, 0, sizeof(cpcm->pcm_rec)); in snd_cs46xx_playback_prepare()
1263 cpcm->pcm_rec.sw_buffer_size = snd_pcm_lib_buffer_bytes(substream); in snd_cs46xx_playback_prepare()
1264 cpcm->pcm_rec.hw_buffer_size = runtime->period_size * CS46XX_FRAGS << cpcm->shift; in snd_cs46xx_playback_prepare()
1268 tmp = snd_cs46xx_peek(chip, (cpcm->pcm_channel->pcm_reader_scb->address) << 2); in snd_cs46xx_playback_prepare()
1270 tmp |= (4 << cpcm->shift) - 1; in snd_cs46xx_playback_prepare()
1272 snd_cs46xx_poke(chip, (cpcm->pcm_channel->pcm_reader_scb->address) << 2, tmp); in snd_cs46xx_playback_prepare()
1275 …snd_cs46xx_poke(chip, (cpcm->pcm_channel->pcm_reader_scb->address + 1) << 2, pfie | cpcm->pcm_chan… in snd_cs46xx_playback_prepare()
1277 snd_cs46xx_poke(chip, BA1_PBA, cpcm->hw_buf.addr); in snd_cs46xx_playback_prepare()
1280 tmp |= (4 << cpcm->shift) - 1; in snd_cs46xx_playback_prepare()
1357 struct snd_cs46xx_pcm *cpcm = NULL; in snd_cs46xx_interrupt() local
1382 cpcm = ins->pcm_channels[i].private_data; in snd_cs46xx_interrupt()
1383 snd_pcm_period_elapsed(cpcm->substream); in snd_cs46xx_interrupt()
1392 cpcm = ins->pcm_channels[i].private_data; in snd_cs46xx_interrupt()
1393 snd_pcm_period_elapsed(cpcm->substream); in snd_cs46xx_interrupt()
1503 struct snd_cs46xx_pcm * cpcm; in _cs46xx_playback_open_channel() local
1506 cpcm = kzalloc(sizeof(*cpcm), GFP_KERNEL); in _cs46xx_playback_open_channel()
1507 if (cpcm == NULL) in _cs46xx_playback_open_channel()
1510 PAGE_SIZE, &cpcm->hw_buf) < 0) { in _cs46xx_playback_open_channel()
1511 kfree(cpcm); in _cs46xx_playback_open_channel()
1516 runtime->private_data = cpcm; in _cs46xx_playback_open_channel()
1519 cpcm->substream = substream; in _cs46xx_playback_open_channel()
1522 cpcm->pcm_channel = NULL; in _cs46xx_playback_open_channel()
1523 cpcm->pcm_channel_id = pcm_channel_id; in _cs46xx_playback_open_channel()
1532 chip->playback_pcm = cpcm; /* HACK */ in _cs46xx_playback_open_channel()
1620 struct snd_cs46xx_pcm * cpcm; in snd_cs46xx_playback_close() local
1622 cpcm = runtime->private_data; in snd_cs46xx_playback_close()
1625 if (!cpcm) return -ENXIO; in snd_cs46xx_playback_close()
1629 if (cpcm->pcm_channel) { in snd_cs46xx_playback_close()
1630 cs46xx_dsp_destroy_pcm_channel(chip,cpcm->pcm_channel); in snd_cs46xx_playback_close()
1631 cpcm->pcm_channel = NULL; in snd_cs46xx_playback_close()
1638 cpcm->substream = NULL; in snd_cs46xx_playback_close()
1639 snd_dma_free_pages(&cpcm->hw_buf); in snd_cs46xx_playback_close()