Lines Matching refs:chip
41 struct snd_cs46xx *chip; member
44 static void remove_symbol (struct snd_cs46xx * chip, struct dsp_symbol_entry * symbol) in remove_symbol() argument
46 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in remove_symbol()
77 struct snd_cs46xx *chip = scb_info->chip; in cs46xx_dsp_proc_scb_info_read() local
79 void __iomem *dst = chip->region.idx[1].remap_addr + DSP_PARAMETER_BYTE_OFFSET; in cs46xx_dsp_proc_scb_info_read()
81 ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_scb_info_read()
83 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_scb_info_read()
111 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_scb_info_read()
115 static void _dsp_unlink_scb (struct snd_cs46xx *chip, struct dsp_scb_descriptor * scb) in _dsp_unlink_scb() argument
117 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in _dsp_unlink_scb()
156 cs46xx_dsp_spos_update_scb(chip,scb->parent_scb_ptr); in _dsp_unlink_scb()
159 cs46xx_dsp_spos_update_scb(chip,scb); in _dsp_unlink_scb()
165 static void _dsp_clear_sample_buffer (struct snd_cs46xx *chip, u32 sample_buffer_addr, in _dsp_clear_sample_buffer() argument
168 void __iomem *dst = chip->region.idx[2].remap_addr + sample_buffer_addr; in _dsp_clear_sample_buffer()
177 void cs46xx_dsp_remove_scb (struct snd_cs46xx *chip, struct dsp_scb_descriptor * scb) in cs46xx_dsp_remove_scb() argument
179 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_remove_scb()
196 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_dsp_remove_scb()
197 _dsp_unlink_scb (chip,scb); in cs46xx_dsp_remove_scb()
198 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_remove_scb()
203 remove_symbol (chip,scb->scb_symbol); in cs46xx_dsp_remove_scb()
236 struct snd_cs46xx *chip = scb_info->chip; in cs46xx_dsp_proc_free_scb_desc() local
238 dev_dbg(chip->card->dev, in cs46xx_dsp_proc_free_scb_desc()
249 void cs46xx_dsp_proc_register_scb_desc (struct snd_cs46xx *chip, in cs46xx_dsp_proc_register_scb_desc() argument
252 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_register_scb_desc()
269 scb_info->chip = chip; in cs46xx_dsp_proc_register_scb_desc()
291 _dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u32 dest, in _dsp_create_generic_scb() argument
296 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in _dsp_create_generic_scb()
311 dev_dbg(chip->card->dev, "dsp_spos: creating SCB <%s>\n", name); in _dsp_create_generic_scb()
313 scb = cs46xx_dsp_create_scb(chip,name,scb_data,dest); in _dsp_create_generic_scb()
326 dev_dbg(chip->card->dev, in _dsp_create_generic_scb()
329 dev_dbg(chip->card->dev, in _dsp_create_generic_scb()
332 dev_dbg(chip->card->dev, in _dsp_create_generic_scb()
354 spin_lock_irqsave(&chip->reg_lock, flags); in _dsp_create_generic_scb()
357 cs46xx_dsp_spos_update_scb(chip,scb->parent_scb_ptr); in _dsp_create_generic_scb()
359 spin_unlock_irqrestore(&chip->reg_lock, flags); in _dsp_create_generic_scb()
363 cs46xx_dsp_proc_register_scb_desc (chip,scb); in _dsp_create_generic_scb()
369 cs46xx_dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, in cs46xx_dsp_create_generic_scb() argument
376 task_entry = cs46xx_dsp_lookup_symbol (chip,task_entry_name, in cs46xx_dsp_create_generic_scb()
380 dev_err(chip->card->dev, in cs46xx_dsp_create_generic_scb()
385 return _dsp_create_generic_scb (chip,name,scb_data,dest,task_entry, in cs46xx_dsp_create_generic_scb()
390 cs46xx_dsp_create_timing_master_scb (struct snd_cs46xx *chip) in cs46xx_dsp_create_timing_master_scb() argument
415 scb = cs46xx_dsp_create_generic_scb(chip,"TimingMasterSCBInst",(u32 *)&timing_master_scb, in cs46xx_dsp_create_timing_master_scb()
424 cs46xx_dsp_create_codec_out_scb(struct snd_cs46xx * chip, char * codec_name, in cs46xx_dsp_create_codec_out_scb() argument
454 scb = cs46xx_dsp_create_generic_scb(chip,codec_name,(u32 *)&codec_out_scb, in cs46xx_dsp_create_codec_out_scb()
462 cs46xx_dsp_create_codec_in_scb(struct snd_cs46xx * chip, char * codec_name, in cs46xx_dsp_create_codec_in_scb() argument
499 scb = cs46xx_dsp_create_generic_scb(chip,codec_name,(u32 *)&codec_input_scb, in cs46xx_dsp_create_codec_in_scb()
507 cs46xx_dsp_create_pcm_reader_scb(struct snd_cs46xx * chip, char * scb_name, in cs46xx_dsp_create_pcm_reader_scb() argument
513 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_create_pcm_reader_scb()
591 ins->null_algorithm = cs46xx_dsp_lookup_symbol (chip,"NULLALGORITHM", in cs46xx_dsp_create_pcm_reader_scb()
595 dev_err(chip->card->dev, in cs46xx_dsp_create_pcm_reader_scb()
601 scb = _dsp_create_generic_scb(chip,scb_name,(u32 *)&pcm_reader_scb, in cs46xx_dsp_create_pcm_reader_scb()
611 cs46xx_dsp_create_src_task_scb(struct snd_cs46xx * chip, char * scb_name, in cs46xx_dsp_create_src_task_scb() argument
620 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_create_src_task_scb()
626 dev_dbg(chip->card->dev, "dsp_spos: setting %s rate to %u\n", in cs46xx_dsp_create_src_task_scb()
681 ins->s16_up = cs46xx_dsp_lookup_symbol (chip,"S16_UPSRC", in cs46xx_dsp_create_src_task_scb()
685 dev_err(chip->card->dev, in cs46xx_dsp_create_src_task_scb()
692 _dsp_clear_sample_buffer (chip,src_buffer_addr,8); in cs46xx_dsp_create_src_task_scb()
693 _dsp_clear_sample_buffer (chip,src_delay_buffer_addr,32); in cs46xx_dsp_create_src_task_scb()
700 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&src_task_scb, in cs46xx_dsp_create_src_task_scb()
704 scb = _dsp_create_generic_scb(chip,scb_name,(u32 *)&src_task_scb, in cs46xx_dsp_create_src_task_scb()
717 cs46xx_dsp_create_filter_scb(struct snd_cs46xx * chip, char * scb_name,
758 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&filter_scb,
767 cs46xx_dsp_create_mix_only_scb(struct snd_cs46xx * chip, char * scb_name, in cs46xx_dsp_create_mix_only_scb() argument
799 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&master_mix_scb, in cs46xx_dsp_create_mix_only_scb()
807 cs46xx_dsp_create_mix_to_ostream_scb(struct snd_cs46xx * chip, char * scb_name, in cs46xx_dsp_create_mix_to_ostream_scb() argument
851 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&mix2_ostream_scb, in cs46xx_dsp_create_mix_to_ostream_scb()
861 cs46xx_dsp_create_vari_decimate_scb(struct snd_cs46xx * chip,char * scb_name, in cs46xx_dsp_create_vari_decimate_scb() argument
896 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&vari_decimate_scb, in cs46xx_dsp_create_vari_decimate_scb()
905 cs46xx_dsp_create_pcm_serial_input_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest, in cs46xx_dsp_create_pcm_serial_input_scb() argument
940 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&pcm_serial_input_scb, in cs46xx_dsp_create_pcm_serial_input_scb()
948 cs46xx_dsp_create_asynch_fg_tx_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest, in cs46xx_dsp_create_asynch_fg_tx_scb() argument
986 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&asynch_fg_tx_scb, in cs46xx_dsp_create_asynch_fg_tx_scb()
995 cs46xx_dsp_create_asynch_fg_rx_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest, in cs46xx_dsp_create_asynch_fg_rx_scb() argument
1001 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_create_asynch_fg_rx_scb()
1035 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&asynch_fg_rx_scb, in cs46xx_dsp_create_asynch_fg_rx_scb()
1045 cs46xx_dsp_create_output_snoop_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest,
1078 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&output_snoop_scb,
1087 cs46xx_dsp_create_spio_write_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest, in cs46xx_dsp_create_spio_write_scb() argument
1115 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&spio_write_scb, in cs46xx_dsp_create_spio_write_scb()
1123 cs46xx_dsp_create_magic_snoop_scb(struct snd_cs46xx * chip, char * scb_name, u32 dest, in cs46xx_dsp_create_magic_snoop_scb() argument
1151 scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&magic_snoop_scb, in cs46xx_dsp_create_magic_snoop_scb()
1159 find_next_free_scb (struct snd_cs46xx * chip, struct dsp_scb_descriptor * from) in find_next_free_scb() argument
1161 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in find_next_free_scb()
1244 cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, in cs46xx_dsp_create_pcm_channel() argument
1249 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_create_pcm_channel()
1281 dev_dbg(chip->card->dev, "IEC958 pass through\n"); in cs46xx_dsp_create_pcm_channel()
1315 dev_err(chip->card->dev, "dsp_spos: no free PCM channel\n"); in cs46xx_dsp_create_pcm_channel()
1321 dev_err(chip->card->dev, in cs46xx_dsp_create_pcm_channel()
1342 src_parent_scb = find_next_free_scb(chip,mixer_scb->sub_list_ptr); in cs46xx_dsp_create_pcm_channel()
1348 dev_dbg(chip->card->dev, in cs46xx_dsp_create_pcm_channel()
1350 src_scb = cs46xx_dsp_create_src_task_scb(chip,scb_name, in cs46xx_dsp_create_pcm_channel()
1361 dev_err(chip->card->dev, in cs46xx_dsp_create_pcm_channel()
1374 dev_dbg(chip->card->dev, "dsp_spos: creating PCM \"%s\" (%d)\n", in cs46xx_dsp_create_pcm_channel()
1377 pcm_scb = cs46xx_dsp_create_pcm_reader_scb(chip,scb_name, in cs46xx_dsp_create_pcm_channel()
1388 dev_err(chip->card->dev, in cs46xx_dsp_create_pcm_channel()
1393 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_dsp_create_pcm_channel()
1404 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_create_pcm_channel()
1409 int cs46xx_dsp_pcm_channel_set_period (struct snd_cs46xx * chip, in cs46xx_dsp_pcm_channel_set_period() argument
1413 u32 temp = snd_cs46xx_peek (chip,pcm_channel->pcm_reader_scb->address << 2); in cs46xx_dsp_pcm_channel_set_period()
1439 dev_dbg(chip->card->dev, in cs46xx_dsp_pcm_channel_set_period()
1444 snd_cs46xx_poke (chip,pcm_channel->pcm_reader_scb->address << 2,temp); in cs46xx_dsp_pcm_channel_set_period()
1449 int cs46xx_dsp_pcm_ostream_set_period (struct snd_cs46xx * chip, in cs46xx_dsp_pcm_ostream_set_period() argument
1452 u32 temp = snd_cs46xx_peek (chip,WRITEBACK_SCB_ADDR << 2); in cs46xx_dsp_pcm_ostream_set_period()
1478 dev_dbg(chip->card->dev, in cs46xx_dsp_pcm_ostream_set_period()
1483 snd_cs46xx_poke (chip,WRITEBACK_SCB_ADDR << 2,temp); in cs46xx_dsp_pcm_ostream_set_period()
1488 void cs46xx_dsp_destroy_pcm_channel (struct snd_cs46xx * chip, in cs46xx_dsp_destroy_pcm_channel() argument
1491 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_destroy_pcm_channel()
1499 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_dsp_destroy_pcm_channel()
1505 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_destroy_pcm_channel()
1507 cs46xx_dsp_remove_scb(chip,pcm_channel->pcm_reader_scb); in cs46xx_dsp_destroy_pcm_channel()
1510 cs46xx_dsp_remove_scb(chip,pcm_channel->src_scb); in cs46xx_dsp_destroy_pcm_channel()
1521 int cs46xx_dsp_pcm_unlink (struct snd_cs46xx * chip, in cs46xx_dsp_pcm_unlink() argument
1527 chip->dsp_spos_instance->npcm_channels <= 0)) in cs46xx_dsp_pcm_unlink()
1530 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_dsp_pcm_unlink()
1532 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_pcm_unlink()
1538 _dsp_unlink_scb (chip,pcm_channel->pcm_reader_scb); in cs46xx_dsp_pcm_unlink()
1539 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_pcm_unlink()
1544 int cs46xx_dsp_pcm_link (struct snd_cs46xx * chip, in cs46xx_dsp_pcm_link() argument
1547 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_pcm_link()
1552 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_dsp_pcm_link()
1555 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_pcm_link()
1572 cs46xx_dsp_spos_update_scb(chip,pcm_channel->pcm_reader_scb); in cs46xx_dsp_pcm_link()
1575 cs46xx_dsp_spos_update_scb(chip,parent_scb); in cs46xx_dsp_pcm_link()
1578 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_dsp_pcm_link()
1583 cs46xx_add_record_source (struct snd_cs46xx *chip, struct dsp_scb_descriptor * source, in cs46xx_add_record_source() argument
1586 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_add_record_source()
1595 parent = find_next_free_scb (chip,ins->record_mixer_scb->sub_list_ptr); in cs46xx_add_record_source()
1602 pcm_input = cs46xx_dsp_create_pcm_serial_input_scb(chip,scb_name,addr, in cs46xx_add_record_source()
1609 int cs46xx_src_unlink(struct snd_cs46xx *chip, struct dsp_scb_descriptor * src) in cs46xx_src_unlink() argument
1617 cs46xx_dsp_scb_set_volume (chip,src,0,0); in cs46xx_src_unlink()
1619 spin_lock_irqsave(&chip->reg_lock, flags); in cs46xx_src_unlink()
1620 _dsp_unlink_scb (chip,src); in cs46xx_src_unlink()
1621 spin_unlock_irqrestore(&chip->reg_lock, flags); in cs46xx_src_unlink()
1626 int cs46xx_src_link(struct snd_cs46xx *chip, struct dsp_scb_descriptor * src) in cs46xx_src_link() argument
1628 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_src_link()
1637 parent_scb = find_next_free_scb (chip,ins->master_mix_scb->sub_list_ptr); in cs46xx_src_link()
1647 cs46xx_dsp_spos_update_scb(chip,parent_scb); in cs46xx_src_link()
1652 int cs46xx_dsp_enable_spdif_out (struct snd_cs46xx *chip) in cs46xx_dsp_enable_spdif_out() argument
1654 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_enable_spdif_out()
1657 cs46xx_dsp_enable_spdif_hw (chip); in cs46xx_dsp_enable_spdif_out()
1677 snd_cs46xx_poke (chip, (ins->ref_snoop_scb->address + 2) << 2, in cs46xx_dsp_enable_spdif_out()
1681 ins->asynch_tx_scb = cs46xx_dsp_create_asynch_fg_tx_scb(chip,"AsynchFGTxSCB",ASYNCTX_SCB_ADDR, in cs46xx_dsp_enable_spdif_out()
1688 ins->spdif_pcm_input_scb = cs46xx_dsp_create_pcm_serial_input_scb(chip,"PCMSerialInput_II", in cs46xx_dsp_enable_spdif_out()
1703 int cs46xx_dsp_disable_spdif_out (struct snd_cs46xx *chip) in cs46xx_dsp_disable_spdif_out() argument
1705 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_disable_spdif_out()
1724 cs46xx_dsp_remove_scb (chip,ins->spdif_pcm_input_scb); in cs46xx_dsp_disable_spdif_out()
1725 cs46xx_dsp_remove_scb (chip,ins->asynch_tx_scb); in cs46xx_dsp_disable_spdif_out()
1731 _dsp_clear_sample_buffer(chip,SPDIFO_IP_OUTPUT_BUFFER1,256); in cs46xx_dsp_disable_spdif_out()
1740 int cs46xx_iec958_pre_open (struct snd_cs46xx *chip) in cs46xx_iec958_pre_open() argument
1742 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_iec958_pre_open()
1746 cs46xx_dsp_disable_spdif_out (chip); in cs46xx_iec958_pre_open()
1754 cs46xx_dsp_enable_spdif_hw (chip); in cs46xx_iec958_pre_open()
1758 ins->asynch_tx_scb = cs46xx_dsp_create_asynch_fg_tx_scb(chip,"AsynchFGTxSCB",ASYNCTX_SCB_ADDR, in cs46xx_iec958_pre_open()
1766 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_stream); in cs46xx_iec958_pre_open()
1773 int cs46xx_iec958_post_close (struct snd_cs46xx *chip) in cs46xx_iec958_post_close() argument
1775 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_iec958_post_close()
1783 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default); in cs46xx_iec958_post_close()
1787 cs46xx_dsp_remove_scb (chip,ins->spdif_pcm_input_scb); in cs46xx_iec958_post_close()
1791 cs46xx_dsp_remove_scb (chip,ins->asynch_tx_scb); in cs46xx_iec958_post_close()
1795 _dsp_clear_sample_buffer(chip,SPDIFO_IP_OUTPUT_BUFFER1,256); in cs46xx_iec958_post_close()
1799 cs46xx_dsp_enable_spdif_out (chip); in cs46xx_iec958_post_close()