Lines Matching refs:chip
40 static int cs46xx_dsp_async_init (struct snd_cs46xx *chip,
58 static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32 size, in shadow_and_reallocate_code() argument
64 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in shadow_and_reallocate_code()
88 dev_dbg(chip->card->dev, in shadow_and_reallocate_code()
95 dev_dbg(chip->card->dev, in shadow_and_reallocate_code()
108 dev_dbg(chip->card->dev, in shadow_and_reallocate_code()
120 dev_dbg(chip->card->dev, in shadow_and_reallocate_code()
151 static int add_symbols (struct snd_cs46xx * chip, struct dsp_module_desc * module) in add_symbols() argument
154 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in add_symbols()
165 dev_err(chip->card->dev, in add_symbols()
171 if (cs46xx_dsp_lookup_symbol(chip, in add_symbols()
186 dev_dbg(chip->card->dev, in add_symbols()
197 add_symbol (struct snd_cs46xx * chip, char * symbol_name, u32 address, int type) in add_symbol() argument
199 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in add_symbol()
204 dev_err(chip->card->dev, "dsp_spos: symbol table is full\n"); in add_symbol()
208 if (cs46xx_dsp_lookup_symbol(chip, in add_symbol()
211 dev_err(chip->card->dev, in add_symbol()
234 struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip) in cs46xx_dsp_spos_create() argument
247 cs46xx_dsp_spos_destroy(chip); in cs46xx_dsp_spos_create()
287 void cs46xx_dsp_spos_destroy (struct snd_cs46xx * chip) in cs46xx_dsp_spos_destroy() argument
290 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_spos_destroy()
295 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_spos_destroy()
309 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_spos_destroy()
312 static int dsp_load_parameter(struct snd_cs46xx *chip, in dsp_load_parameter() argument
318 dev_dbg(chip->card->dev, in dsp_load_parameter()
326 dev_dbg(chip->card->dev, in dsp_load_parameter()
329 if (snd_cs46xx_download (chip, parameter->data, doffset, dsize)) { in dsp_load_parameter()
330 dev_err(chip->card->dev, in dsp_load_parameter()
337 static int dsp_load_sample(struct snd_cs46xx *chip, in dsp_load_sample() argument
343 dev_dbg(chip->card->dev, in dsp_load_sample()
351 dev_dbg(chip->card->dev, in dsp_load_sample()
355 if (snd_cs46xx_download (chip,sample->data,doffset,dsize)) { in dsp_load_sample()
356 dev_err(chip->card->dev, in dsp_load_sample()
363 int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * module) in cs46xx_dsp_load_module() argument
365 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_load_module()
371 dev_err(chip->card->dev, in cs46xx_dsp_load_module()
376 dev_dbg(chip->card->dev, in cs46xx_dsp_load_module()
380 dev_dbg(chip->card->dev, "dsp_spos: clearing parameter area\n"); in cs46xx_dsp_load_module()
381 snd_cs46xx_clear_BA1(chip, DSP_PARAMETER_BYTE_OFFSET, DSP_PARAMETER_BYTE_SIZE); in cs46xx_dsp_load_module()
384 err = dsp_load_parameter(chip, get_segment_desc(module, in cs46xx_dsp_load_module()
390 dev_dbg(chip->card->dev, "dsp_spos: clearing sample area\n"); in cs46xx_dsp_load_module()
391 snd_cs46xx_clear_BA1(chip, DSP_SAMPLE_BYTE_OFFSET, DSP_SAMPLE_BYTE_SIZE); in cs46xx_dsp_load_module()
394 err = dsp_load_sample(chip, get_segment_desc(module, in cs46xx_dsp_load_module()
400 dev_dbg(chip->card->dev, "dsp_spos: clearing code area\n"); in cs46xx_dsp_load_module()
401 snd_cs46xx_clear_BA1(chip, DSP_CODE_BYTE_OFFSET, DSP_CODE_BYTE_SIZE); in cs46xx_dsp_load_module()
405 dev_dbg(chip->card->dev, in cs46xx_dsp_load_module()
409 dev_err(chip->card->dev, in cs46xx_dsp_load_module()
421 if (add_symbols(chip,module)) { in cs46xx_dsp_load_module()
422 dev_err(chip->card->dev, in cs46xx_dsp_load_module()
429 dev_dbg(chip->card->dev, in cs46xx_dsp_load_module()
433 …module->nfixups = shadow_and_reallocate_code(chip,code->data,code->size,module->overlay_begin_addr… in cs46xx_dsp_load_module()
435 if (snd_cs46xx_download (chip,(ins->code.data + ins->code.offset),doffset,dsize)) { in cs46xx_dsp_load_module()
436 dev_err(chip->card->dev, in cs46xx_dsp_load_module()
454 cs46xx_dsp_lookup_symbol (struct snd_cs46xx * chip, char * symbol_name, int symbol_type) in cs46xx_dsp_lookup_symbol() argument
457 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_lookup_symbol()
471 dev_err(chip->card->dev, "dsp_spos: symbol <%s> type %02x not found\n", in cs46xx_dsp_lookup_symbol()
481 cs46xx_dsp_lookup_symbol_addr (struct snd_cs46xx * chip, u32 address, int symbol_type) in cs46xx_dsp_lookup_symbol_addr() argument
484 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_lookup_symbol_addr()
505 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_symbol_table_read() local
506 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_symbol_table_read()
533 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_modules_read() local
534 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_modules_read()
537 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_modules_read()
550 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_modules_read()
556 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_task_tree_read() local
557 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_task_tree_read()
559 void __iomem *dst = chip->region.idx[1].remap_addr + DSP_PARAMETER_BYTE_OFFSET; in cs46xx_dsp_proc_task_tree_read()
561 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_task_tree_read()
578 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_task_tree_read()
584 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_scb_read() local
585 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_scb_read()
588 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_scb_read()
611 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_scb_read()
617 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_parameter_dump_read() local
620 void __iomem *dst = chip->region.idx[1].remap_addr + DSP_PARAMETER_BYTE_OFFSET; in cs46xx_dsp_proc_parameter_dump_read()
629 if ( (symbol = cs46xx_dsp_lookup_symbol_addr (chip,i / sizeof(u32), SYMBOL_PARAMETER)) != NULL) { in cs46xx_dsp_proc_parameter_dump_read()
645 struct snd_cs46xx *chip = entry->private_data; in cs46xx_dsp_proc_sample_dump_read() local
647 void __iomem *dst = chip->region.idx[2].remap_addr; in cs46xx_dsp_proc_sample_dump_read()
790 int cs46xx_dsp_proc_init (struct snd_card *card, struct snd_cs46xx *chip) in cs46xx_dsp_proc_init() argument
793 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_init()
815 entry->private_data = chip; in cs46xx_dsp_proc_init()
827 entry->private_data = chip; in cs46xx_dsp_proc_init()
839 entry->private_data = chip; in cs46xx_dsp_proc_init()
851 entry->private_data = chip; in cs46xx_dsp_proc_init()
863 entry->private_data = chip; in cs46xx_dsp_proc_init()
875 entry->private_data = chip; in cs46xx_dsp_proc_init()
885 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_init()
890 cs46xx_dsp_proc_register_scb_desc (chip, (ins->scbs + i)); in cs46xx_dsp_proc_init()
892 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_init()
897 int cs46xx_dsp_proc_done (struct snd_cs46xx *chip) in cs46xx_dsp_proc_done() argument
899 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_proc_done()
920 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_proc_done()
925 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_proc_done()
934 static void _dsp_create_task_tree (struct snd_cs46xx *chip, u32 * task_data, in _dsp_create_task_tree() argument
937 void __iomem *spdst = chip->region.idx[1].remap_addr + in _dsp_create_task_tree()
942 dev_dbg(chip->card->dev, "addr %p, val %08x\n", in _dsp_create_task_tree()
949 static void _dsp_create_scb (struct snd_cs46xx *chip, u32 * scb_data, u32 dest) in _dsp_create_scb() argument
951 void __iomem *spdst = chip->region.idx[1].remap_addr + in _dsp_create_scb()
956 dev_dbg(chip->card->dev, "addr %p, val %08x\n", in _dsp_create_scb()
977 static struct dsp_scb_descriptor * _map_scb (struct snd_cs46xx *chip, char * name, u32 dest) in _map_scb() argument
979 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in _map_scb()
984 dev_err(chip->card->dev, in _map_scb()
998 ins->scbs[index].scb_symbol = add_symbol (chip, name, dest, SYMBOL_PARAMETER); in _map_scb()
1010 _map_task_tree (struct snd_cs46xx *chip, char * name, u32 dest, u32 size) in _map_task_tree() argument
1012 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in _map_task_tree()
1016 dev_err(chip->card->dev, in _map_task_tree()
1034 add_symbol (chip,name,dest,SYMBOL_PARAMETER); in _map_task_tree()
1041 cs46xx_dsp_create_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u32 dest) in cs46xx_dsp_create_scb() argument
1052 desc = _map_scb (chip,name,dest); in cs46xx_dsp_create_scb()
1055 _dsp_create_scb(chip,scb_data,dest); in cs46xx_dsp_create_scb()
1057 dev_err(chip->card->dev, "dsp_spos: failed to map SCB\n"); in cs46xx_dsp_create_scb()
1068 cs46xx_dsp_create_task_tree (struct snd_cs46xx *chip, char * name, u32 * task_data, in cs46xx_dsp_create_task_tree() argument
1073 desc = _map_task_tree (chip,name,dest,size); in cs46xx_dsp_create_task_tree()
1076 _dsp_create_task_tree(chip,task_data,dest,size); in cs46xx_dsp_create_task_tree()
1078 dev_err(chip->card->dev, "dsp_spos: failed to map TASK\n"); in cs46xx_dsp_create_task_tree()
1084 int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip) in cs46xx_dsp_scb_and_task_init() argument
1086 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_scb_and_task_init()
1127 cs46xx_dsp_create_task_tree(chip, "sposCB", (u32 *)&sposcb, SPOSCB_ADDR, 0x10); in cs46xx_dsp_scb_and_task_init()
1129 null_algorithm = cs46xx_dsp_lookup_symbol(chip, "NULLALGORITHM", SYMBOL_CODE); in cs46xx_dsp_scb_and_task_init()
1131 dev_err(chip->card->dev, in cs46xx_dsp_scb_and_task_init()
1136 fg_task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "FGTASKTREEHEADERCODE", SYMBOL_CODE); in cs46xx_dsp_scb_and_task_init()
1138 dev_err(chip->card->dev, in cs46xx_dsp_scb_and_task_init()
1143 task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "TASKTREEHEADERCODE", SYMBOL_CODE); in cs46xx_dsp_scb_and_task_init()
1145 dev_err(chip->card->dev, in cs46xx_dsp_scb_and_task_init()
1150 task_tree_thread = cs46xx_dsp_lookup_symbol(chip, "TASKTREETHREAD", SYMBOL_CODE); in cs46xx_dsp_scb_and_task_init()
1152 dev_err(chip->card->dev, in cs46xx_dsp_scb_and_task_init()
1157 magic_snoop_task = cs46xx_dsp_lookup_symbol(chip, "MAGICSNOOPTASK", SYMBOL_CODE); in cs46xx_dsp_scb_and_task_init()
1159 dev_err(chip->card->dev, in cs46xx_dsp_scb_and_task_init()
1178 ins->the_null_scb = cs46xx_dsp_create_scb(chip, "nullSCB", (u32 *)&null_scb, NULL_SCB_ADDR); in cs46xx_dsp_scb_and_task_init()
1183 cs46xx_dsp_proc_register_scb_desc (chip,ins->the_null_scb); in cs46xx_dsp_scb_and_task_init()
1258 …cs46xx_dsp_create_task_tree(chip,"FGtaskTreeHdr",(u32 *)&fg_task_tree_hdr,FG_TASK_HEADER_ADDR,0x35… in cs46xx_dsp_scb_and_task_init()
1334 cs46xx_dsp_create_task_tree(chip,"BGtaskTreeHdr",(u32 *)&bg_task_tree_hdr,BG_TREE_SCB_ADDR,0x35); in cs46xx_dsp_scb_and_task_init()
1338 timing_master_scb = cs46xx_dsp_create_timing_master_scb(chip); in cs46xx_dsp_scb_and_task_init()
1341 codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_I",0x0010,0x0000, in cs46xx_dsp_scb_and_task_init()
1348 master_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"MasterMixSCB", in cs46xx_dsp_scb_and_task_init()
1357 codec_in_scb = cs46xx_dsp_create_codec_in_scb(chip,"CodecInSCB",0x0010,0x00A0, in cs46xx_dsp_scb_and_task_init()
1365 write_back_scb = cs46xx_dsp_create_mix_to_ostream_scb(chip,"WriteBackSCB", in cs46xx_dsp_scb_and_task_init()
1378 if (!cs46xx_dsp_create_task_tree(chip, NULL, in cs46xx_dsp_scb_and_task_init()
1385 vari_decimate_scb = cs46xx_dsp_create_vari_decimate_scb(chip,"VariDecimateSCB", in cs46xx_dsp_scb_and_task_init()
1394 record_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"RecordMixerSCB", in cs46xx_dsp_scb_and_task_init()
1403 valid_slots = snd_cs46xx_peekBA0(chip, BA0_ACOSV); in cs46xx_dsp_scb_and_task_init()
1405 if (snd_BUG_ON(chip->nr_ac97_codecs != 1 && chip->nr_ac97_codecs != 2)) in cs46xx_dsp_scb_and_task_init()
1408 if (chip->nr_ac97_codecs == 1) { in cs46xx_dsp_scb_and_task_init()
1426 rear_codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_Rear",fifo_span,fifo_addr, in cs46xx_dsp_scb_and_task_init()
1434 rear_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"RearMixerSCB", in cs46xx_dsp_scb_and_task_init()
1442 if (chip->nr_ac97_codecs == 2) { in cs46xx_dsp_scb_and_task_init()
1445 clfe_codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_CLFE",0x0030,0x0030, in cs46xx_dsp_scb_and_task_init()
1454 ins->center_lfe_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"CLFEMixerSCB", in cs46xx_dsp_scb_and_task_init()
1469 snd_cs46xx_pokeBA0(chip, BA0_ACOSV, valid_slots); in cs46xx_dsp_scb_and_task_init()
1472 magic_snoop_scb = cs46xx_dsp_create_magic_snoop_scb (chip,"MagicSnoopSCB_I",OUTPUTSNOOP_SCB_ADDR, in cs46xx_dsp_scb_and_task_init()
1483 if (!cs46xx_dsp_create_spio_write_scb(chip,"SPIOWriteSCB",SPIOWRITE_SCB_ADDR, in cs46xx_dsp_scb_and_task_init()
1489 src_task_scb = cs46xx_dsp_create_src_task_scb(chip,"SrcTaskSCB_SPDIFI", in cs46xx_dsp_scb_and_task_init()
1497 cs46xx_src_unlink(chip,src_task_scb); in cs46xx_dsp_scb_and_task_init()
1503 cs46xx_dsp_async_init(chip,timing_master_scb); in cs46xx_dsp_scb_and_task_init()
1507 dev_err(chip->card->dev, "dsp_spos: failed to setup SCB's in DSP\n"); in cs46xx_dsp_scb_and_task_init()
1511 static int cs46xx_dsp_async_init (struct snd_cs46xx *chip, in cs46xx_dsp_async_init() argument
1514 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_async_init()
1520 …s16_async_codec_input_task = cs46xx_dsp_lookup_symbol(chip, "S16_ASYNCCODECINPUTTASK", SYMBOL_CODE… in cs46xx_dsp_async_init()
1522 dev_err(chip->card->dev, in cs46xx_dsp_async_init()
1526 spdifo_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFOTASK", SYMBOL_CODE); in cs46xx_dsp_async_init()
1528 dev_err(chip->card->dev, in cs46xx_dsp_async_init()
1533 spdifi_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFITASK", SYMBOL_CODE); in cs46xx_dsp_async_init()
1535 dev_err(chip->card->dev, in cs46xx_dsp_async_init()
1647 spdifo_scb_desc = cs46xx_dsp_create_scb(chip,"SPDIFOSCB",(u32 *)&spdifo_scb,SPDIFO_SCB_INST); in cs46xx_dsp_async_init()
1651 spdifi_scb_desc = cs46xx_dsp_create_scb(chip,"SPDIFISCB",(u32 *)&spdifi_scb,SPDIFI_SCB_INST); in cs46xx_dsp_async_init()
1654 …async_codec_scb_desc = cs46xx_dsp_create_scb(chip,"AsynCodecInputSCB",(u32 *)&async_codec_input_sc… in cs46xx_dsp_async_init()
1678 cs46xx_dsp_proc_register_scb_desc (chip,spdifo_scb_desc); in cs46xx_dsp_async_init()
1679 cs46xx_dsp_proc_register_scb_desc (chip,spdifi_scb_desc); in cs46xx_dsp_async_init()
1680 cs46xx_dsp_proc_register_scb_desc (chip,async_codec_scb_desc); in cs46xx_dsp_async_init()
1683 snd_cs46xx_pokeBA0(chip, BA0_ASER_MASTER, 0x1 ); in cs46xx_dsp_async_init()
1689 static void cs46xx_dsp_disable_spdif_hw (struct snd_cs46xx *chip) in cs46xx_dsp_disable_spdif_hw() argument
1691 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_disable_spdif_hw()
1694 snd_cs46xx_pokeBA0(chip, BA0_ASER_FADDR, 0); in cs46xx_dsp_disable_spdif_hw()
1697 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CONTROL, 0); in cs46xx_dsp_disable_spdif_hw()
1701 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, 0x0); in cs46xx_dsp_disable_spdif_hw()
1704 cs46xx_poke_via_dsp (chip,SP_SPDIN_FIFOPTR, 0x0); in cs46xx_dsp_disable_spdif_hw()
1710 int cs46xx_dsp_enable_spdif_hw (struct snd_cs46xx *chip) in cs46xx_dsp_enable_spdif_hw() argument
1712 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_enable_spdif_hw()
1715 cs46xx_dsp_disable_spdif_hw (chip); in cs46xx_dsp_enable_spdif_hw()
1719 snd_cs46xx_pokeBA0(chip, BA0_ASER_FADDR, ( 0x8000 | ((SP_SPDOUT_FIFO >> 4) << 4) )); in cs46xx_dsp_enable_spdif_hw()
1722 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CONTROL, 0x80000000); in cs46xx_dsp_enable_spdif_hw()
1725 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default); in cs46xx_dsp_enable_spdif_hw()
1733 int cs46xx_dsp_enable_spdif_in (struct snd_cs46xx *chip) in cs46xx_dsp_enable_spdif_in() argument
1735 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_enable_spdif_in()
1738 chip->active_ctrl(chip, 1); in cs46xx_dsp_enable_spdif_in()
1739 chip->amplifier_ctrl(chip, 1); in cs46xx_dsp_enable_spdif_in()
1746 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_enable_spdif_in()
1750 cs46xx_poke_via_dsp (chip,SP_ASER_COUNTDOWN, 0x80000005); in cs46xx_dsp_enable_spdif_in()
1756 cs46xx_poke_via_dsp (chip,SP_SPDIN_CONTROL, 0x800003ff); in cs46xx_dsp_enable_spdif_in()
1762 ins->asynch_rx_scb = cs46xx_dsp_create_asynch_fg_rx_scb(chip,"AsynchFGRxSCB", in cs46xx_dsp_enable_spdif_in()
1769 spin_lock_irq(&chip->reg_lock); in cs46xx_dsp_enable_spdif_in()
1777 cs46xx_src_link(chip,ins->spdif_in_src); in cs46xx_dsp_enable_spdif_in()
1780 cs46xx_dsp_scb_set_volume (chip,ins->spdif_in_src,0x7fff,0x7fff); in cs46xx_dsp_enable_spdif_in()
1782 spin_unlock_irq(&chip->reg_lock); in cs46xx_dsp_enable_spdif_in()
1790 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_enable_spdif_in()
1795 int cs46xx_dsp_disable_spdif_in (struct snd_cs46xx *chip) in cs46xx_dsp_disable_spdif_in() argument
1797 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_disable_spdif_in()
1804 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_disable_spdif_in()
1807 cs46xx_dsp_remove_scb (chip,ins->asynch_rx_scb); in cs46xx_dsp_disable_spdif_in()
1810 cs46xx_src_unlink(chip,ins->spdif_in_src); in cs46xx_dsp_disable_spdif_in()
1814 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_disable_spdif_in()
1817 chip->active_ctrl(chip, -1); in cs46xx_dsp_disable_spdif_in()
1818 chip->amplifier_ctrl(chip, -1); in cs46xx_dsp_disable_spdif_in()
1823 int cs46xx_dsp_enable_pcm_capture (struct snd_cs46xx *chip) in cs46xx_dsp_enable_pcm_capture() argument
1825 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_enable_pcm_capture()
1832 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_enable_pcm_capture()
1833 ins->pcm_input = cs46xx_add_record_source(chip,ins->ref_snoop_scb,PCMSERIALIN_PCM_SCB_ADDR, in cs46xx_dsp_enable_pcm_capture()
1835 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_enable_pcm_capture()
1840 int cs46xx_dsp_disable_pcm_capture (struct snd_cs46xx *chip) in cs46xx_dsp_disable_pcm_capture() argument
1842 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_disable_pcm_capture()
1847 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_disable_pcm_capture()
1848 cs46xx_dsp_remove_scb (chip,ins->pcm_input); in cs46xx_dsp_disable_pcm_capture()
1850 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_disable_pcm_capture()
1855 int cs46xx_dsp_enable_adc_capture (struct snd_cs46xx *chip) in cs46xx_dsp_enable_adc_capture() argument
1857 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_enable_adc_capture()
1864 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_enable_adc_capture()
1865 ins->adc_input = cs46xx_add_record_source(chip,ins->codec_in_scb,PCMSERIALIN_SCB_ADDR, in cs46xx_dsp_enable_adc_capture()
1867 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_enable_adc_capture()
1872 int cs46xx_dsp_disable_adc_capture (struct snd_cs46xx *chip) in cs46xx_dsp_disable_adc_capture() argument
1874 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_disable_adc_capture()
1879 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_disable_adc_capture()
1880 cs46xx_dsp_remove_scb (chip,ins->adc_input); in cs46xx_dsp_disable_adc_capture()
1882 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_disable_adc_capture()
1887 int cs46xx_poke_via_dsp (struct snd_cs46xx *chip, u32 address, u32 data) in cs46xx_poke_via_dsp() argument
1900 snd_cs46xx_poke(chip,( SPIOWRITE_SCB_ADDR << 2), temp); in cs46xx_poke_via_dsp()
1901 snd_cs46xx_poke(chip,((SPIOWRITE_SCB_ADDR + 1) << 2), data); /* offset 1 <-- data1 */ in cs46xx_poke_via_dsp()
1902 snd_cs46xx_poke(chip,((SPIOWRITE_SCB_ADDR + 2) << 2), data); /* offset 1 <-- data2 */ in cs46xx_poke_via_dsp()
1905 snd_cs46xx_poke(chip,((SPIOWRITE_SCB_ADDR + 6) << 2), SPIOWRITE_SCB_ADDR << 0x10); in cs46xx_poke_via_dsp()
1911 temp = snd_cs46xx_peek(chip,((SPIOWRITE_SCB_ADDR + 6) << 2)); in cs46xx_poke_via_dsp()
1917 dev_err(chip->card->dev, in cs46xx_poke_via_dsp()
1925 int cs46xx_dsp_set_dac_volume (struct snd_cs46xx * chip, u16 left, u16 right) in cs46xx_dsp_set_dac_volume() argument
1927 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_set_dac_volume()
1930 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_set_dac_volume()
1935 cs46xx_dsp_scb_set_volume (chip,scb,left,right); in cs46xx_dsp_set_dac_volume()
1942 cs46xx_dsp_scb_set_volume (chip,scb,left,right); in cs46xx_dsp_set_dac_volume()
1949 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_set_dac_volume()
1954 int cs46xx_dsp_set_iec958_volume (struct snd_cs46xx * chip, u16 left, u16 right) in cs46xx_dsp_set_iec958_volume() argument
1956 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_set_iec958_volume()
1958 mutex_lock(&chip->spos_mutex); in cs46xx_dsp_set_iec958_volume()
1961 cs46xx_dsp_scb_set_volume (chip,ins->asynch_rx_scb, in cs46xx_dsp_set_iec958_volume()
1967 mutex_unlock(&chip->spos_mutex); in cs46xx_dsp_set_iec958_volume()
1973 int cs46xx_dsp_resume(struct snd_cs46xx * chip) in cs46xx_dsp_resume() argument
1975 struct dsp_spos_instance * ins = chip->dsp_spos_instance; in cs46xx_dsp_resume()
1979 snd_cs46xx_clear_BA1(chip, DSP_PARAMETER_BYTE_OFFSET, in cs46xx_dsp_resume()
1981 snd_cs46xx_clear_BA1(chip, DSP_SAMPLE_BYTE_OFFSET, in cs46xx_dsp_resume()
1983 snd_cs46xx_clear_BA1(chip, DSP_CODE_BYTE_OFFSET, DSP_CODE_BYTE_SIZE); in cs46xx_dsp_resume()
1991 err = dsp_load_parameter(chip, seg); in cs46xx_dsp_resume()
1996 err = dsp_load_sample(chip, seg); in cs46xx_dsp_resume()
2007 err = snd_cs46xx_download(chip, in cs46xx_dsp_resume()
2016 _dsp_create_task_tree(chip, t->data, t->address, t->size); in cs46xx_dsp_resume()
2023 _dsp_create_scb(chip, s->data, s->address); in cs46xx_dsp_resume()
2030 cs46xx_dsp_spos_update_scb(chip, s); in cs46xx_dsp_resume()
2032 cs46xx_dsp_scb_set_volume(chip, s, in cs46xx_dsp_resume()
2036 cs46xx_dsp_enable_spdif_hw(chip); in cs46xx_dsp_resume()
2037 snd_cs46xx_poke(chip, (ins->ref_snoop_scb->address + 2) << 2, in cs46xx_dsp_resume()
2040 cs46xx_poke_via_dsp(chip, SP_SPDOUT_CSUV, in cs46xx_dsp_resume()
2043 if (chip->dsp_spos_instance->spdif_status_in) { in cs46xx_dsp_resume()
2044 cs46xx_poke_via_dsp(chip, SP_ASER_COUNTDOWN, 0x80000005); in cs46xx_dsp_resume()
2045 cs46xx_poke_via_dsp(chip, SP_SPDIN_CONTROL, 0x800003ff); in cs46xx_dsp_resume()