Lines Matching defs:ins

51 	struct dsp_spos_instance * ins = chip->dsp_spos_instance;
60 if (ins->code.offset > 0) {
80 address += (ins->code.offset / 2) - overlay_begin_address;
102 } /* ins->code.offset > 0 */
104 ins->code.data[ins->code.size++] = loval;
105 ins->code.data[ins->code.size++] = hival;
125 static int find_free_symbol_index (struct dsp_spos_instance * ins)
127 int index = ins->symbol_table.nsymbols,i;
129 for (i = ins->symbol_table.highest_frag_index; i < ins->symbol_table.nsymbols; ++i) {
130 if (ins->symbol_table.symbols[i].deleted) {
142 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
152 if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) {
163 ins->symbol_table.symbols[ins->symbol_table.nsymbols] = module->symbol_table.symbols[i];
164 ins->symbol_table.symbols[ins->symbol_table.nsymbols].address += ((ins->code.offset / 2) - module->overlay_begin_address);
165 ins->symbol_table.symbols[ins->symbol_table.nsymbols].module = module;
166 ins->symbol_table.symbols[ins->symbol_table.nsymbols].deleted = 0;
168 if (ins->symbol_table.nsymbols > ins->symbol_table.highest_frag_index)
169 ins->symbol_table.highest_frag_index = ins->symbol_table.nsymbols;
171 ins->symbol_table.nsymbols++;
187 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
191 if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) {
204 index = find_free_symbol_index (ins);
206 strcpy (ins->symbol_table.symbols[index].symbol_name, symbol_name);
207 ins->symbol_table.symbols[index].address = address;
208 ins->symbol_table.symbols[index].symbol_type = type;
209 ins->symbol_table.symbols[index].module = NULL;
210 ins->symbol_table.symbols[index].deleted = 0;
211 symbol = (ins->symbol_table.symbols + index);
213 if (index > ins->symbol_table.highest_frag_index)
214 ins->symbol_table.highest_frag_index = index;
216 if (index == ins->symbol_table.nsymbols)
217 ins->symbol_table.nsymbols++; /* no frag. in list */
224 struct dsp_spos_instance * ins = kzalloc(sizeof(struct dsp_spos_instance), GFP_KERNEL);
226 if (ins == NULL)
230 ins->symbol_table.symbols =
233 ins->code.data = kmalloc(DSP_CODE_BYTE_SIZE, GFP_KERNEL);
234 ins->modules = kmalloc_array(DSP_MAX_MODULES,
237 if (!ins->symbol_table.symbols || !ins->code.data || !ins->modules) {
241 ins->symbol_table.nsymbols = 0;
242 ins->symbol_table.highest_frag_index = 0;
243 ins->code.offset = 0;
244 ins->code.size = 0;
245 ins->nscb = 0;
246 ins->ntask = 0;
247 ins->nmodules = 0;
251 ins->spdif_in_sample_rate = 48000;
254 ins->dac_volume_right = 0x8000;
255 ins->dac_volume_left = 0x8000;
256 ins->spdif_input_volume_right = 0x8000;
257 ins->spdif_input_volume_left = 0x8000;
261 ins->spdif_csuv_default =
262 ins->spdif_csuv_stream =
268 return ins;
271 kfree(ins->modules);
272 kfree(ins->code.data);
273 vfree(ins->symbol_table.symbols);
274 kfree(ins);
281 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
283 if (snd_BUG_ON(!ins))
287 for (i = 0; i < ins->nscb; ++i) {
288 if (ins->scbs[i].deleted) continue;
290 cs46xx_dsp_proc_free_scb_desc ( (ins->scbs + i) );
292 kfree(ins->scbs[i].data);
296 kfree(ins->code.data);
297 vfree(ins->symbol_table.symbols);
298 kfree(ins->modules);
299 kfree(ins);
356 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
361 if (ins->nmodules == DSP_MAX_MODULES - 1) {
370 if (ins->nmodules == 0) {
380 if (ins->nmodules == 0) {
390 if (ins->nmodules == 0) {
399 if (ins->code.offset + code->size > DSP_CODE_BYTE_SIZE) {
405 module->load_address = ins->code.offset;
418 doffset = (code->offset * 4 + ins->code.offset * 4 + DSP_CODE_BYTE_OFFSET);
426 if (snd_cs46xx_download (chip,(ins->code.data + ins->code.offset),doffset,dsize)) {
432 ins->code.offset += code->size;
438 ins->modules[ins->nmodules] = *module;
439 ins->nmodules++;
448 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
450 for ( i = 0; i < ins->symbol_table.nsymbols; ++i ) {
452 if (ins->symbol_table.symbols[i].deleted)
455 if (!strcmp(ins->symbol_table.symbols[i].symbol_name,symbol_name) &&
456 ins->symbol_table.symbols[i].symbol_type == symbol_type) {
457 return (ins->symbol_table.symbols + i);
475 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
477 for ( i = 0; i < ins->symbol_table.nsymbols; ++i ) {
479 if (ins->symbol_table.symbols[i].deleted)
482 if (ins->symbol_table.symbols[i].address == address &&
483 ins->symbol_table.symbols[i].symbol_type == symbol_type) {
484 return (ins->symbol_table.symbols + i);
497 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
501 for ( i = 0; i < ins->symbol_table.nsymbols; ++i ) {
504 if (ins->symbol_table.symbols[i].deleted)
507 if (ins->symbol_table.symbols[i].module != NULL) {
508 module_str = ins->symbol_table.symbols[i].module->module_name;
513 ins->symbol_table.symbols[i].address,
514 ins->symbol_table.symbols[i].symbol_type,
515 ins->symbol_table.symbols[i].symbol_name,
525 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
530 for ( i = 0; i < ins->nmodules; ++i ) {
531 snd_iprintf(buffer, "\n%s:\n", ins->modules[i].module_name);
532 snd_iprintf(buffer, " %d symbols\n", ins->modules[i].symbol_table.nsymbols);
533 snd_iprintf(buffer, " %d fixups\n", ins->modules[i].nfixups);
535 for (j = 0; j < ins->modules[i].nsegments; ++ j) {
536 struct dsp_segment_desc * desc = (ins->modules[i].segments + j);
548 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
554 for ( i = 0; i < ins->ntask; ++i) {
555 snd_iprintf(buffer,"\n%04x %s:\n",ins->tasks[i].address,ins->tasks[i].task_name);
557 for (col = 0,j = 0;j < ins->tasks[i].size; j++,col++) {
563 val = readl(dst + (ins->tasks[i].address + j) * sizeof(u32));
576 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
581 for ( i = 0; i < ins->nscb; ++i) {
582 if (ins->scbs[i].deleted)
584 snd_iprintf(buffer,"\n%04x %s:\n\n",ins->scbs[i].address,ins->scbs[i].scb_name);
586 if (ins->scbs[i].parent_scb_ptr != NULL) {
588 ins->scbs[i].parent_scb_ptr->scb_name,
589 ins->scbs[i].parent_scb_ptr->address);
593 ins->scbs[i].sub_list_ptr->scb_name,
594 ins->scbs[i].sub_list_ptr->address,
595 ins->scbs[i].next_scb_ptr->scb_name,
596 ins->scbs[i].next_scb_ptr->address,
597 ins->scbs[i].task_entry->symbol_name,
598 ins->scbs[i].task_entry->address);
609 /*struct dsp_spos_instance * ins = chip->dsp_spos_instance; */
785 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
788 ins->snd_card = card;
793 ins->proc_dsp_dir = entry;
795 if (!ins->proc_dsp_dir)
799 ins->proc_dsp_dir);
805 ins->proc_dsp_dir);
811 ins->proc_dsp_dir);
817 ins->proc_dsp_dir);
823 ins->proc_dsp_dir);
829 ins->proc_dsp_dir);
836 for (i = 0; i < ins->nscb; ++i) {
837 if (ins->scbs[i].deleted) continue;
839 cs46xx_dsp_proc_register_scb_desc (chip, (ins->scbs + i));
848 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
851 if (!ins)
855 for (i = 0; i < ins->nscb; ++i) {
856 if (ins->scbs[i].deleted) continue;
857 cs46xx_dsp_proc_free_scb_desc ( (ins->scbs + i) );
861 snd_info_free_entry(ins->proc_dsp_dir);
862 ins->proc_dsp_dir = NULL;
897 static int find_free_scb_index (struct dsp_spos_instance * ins)
899 int index = ins->nscb, i;
901 for (i = ins->scb_highest_frag_index; i < ins->nscb; ++i) {
902 if (ins->scbs[i].deleted) {
913 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
917 if (ins->nscb == DSP_MAX_SCB_DESC - 1) {
923 index = find_free_scb_index (ins);
925 memset(&ins->scbs[index], 0, sizeof(ins->scbs[index]));
926 strcpy(ins->scbs[index].scb_name, name);
927 ins->scbs[index].address = dest;
928 ins->scbs[index].index = index;
929 ins->scbs[index].ref_count = 1;
931 desc = (ins->scbs + index);
932 ins->scbs[index].scb_symbol = add_symbol (chip, name, dest, SYMBOL_PARAMETER);
934 if (index > ins->scb_highest_frag_index)
935 ins->scb_highest_frag_index = index;
937 if (index == ins->nscb)
938 ins->nscb++;
946 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
949 if (ins->ntask == DSP_MAX_TASK_DESC - 1) {
956 strcpy(ins->tasks[ins->ntask].task_name, name);
958 strcpy(ins->tasks[ins->ntask].task_name, "(NULL)");
959 ins->tasks[ins->ntask].address = dest;
960 ins->tasks[ins->ntask].size = size;
963 ins->tasks[ins->ntask].index = ins->ntask;
964 desc = (ins->tasks + ins->ntask);
965 ins->ntask++;
1020 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1112 ins->the_null_scb = cs46xx_dsp_create_scb(chip, "nullSCB", (u32 *)&null_scb, NULL_SCB_ADDR);
1113 ins->the_null_scb->task_entry = null_algorithm;
1114 ins->the_null_scb->sub_list_ptr = ins->the_null_scb;
1115 ins->the_null_scb->next_scb_ptr = ins->the_null_scb;
1116 ins->the_null_scb->parent_scb_ptr = NULL;
1117 cs46xx_dsp_proc_register_scb_desc (chip,ins->the_null_scb);
1286 ins->master_mix_scb = master_mix_scb;
1296 ins->codec_in_scb = codec_in_scb;
1333 ins->record_mixer_scb = record_mix_scb;
1373 ins->rear_mix_scb = rear_mix_scb;
1388 ins->center_lfe_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"CLFEMixerSCB",
1393 if (!ins->center_lfe_mix_scb) goto _fail_end;
1399 ins->center_lfe_mix_scb = rear_mix_scb;
1414 ins->ref_snoop_scb = magic_snoop_scb;
1424 ins->spdif_in_sample_rate,
1435 ins->spdif_in_src = src_task_scb;
1448 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1594 async_codec_scb_desc->sub_list_ptr = ins->the_null_scb;
1599 spdifi_scb_desc->sub_list_ptr = ins->the_null_scb;
1604 spdifo_scb_desc->sub_list_ptr = ins->the_null_scb;
1625 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1634 /*cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default);*/
1641 ins->spdif_status_out &= ~DSP_SPDIF_STATUS_HW_ENABLED;
1646 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1659 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default);
1662 ins->spdif_status_out |= DSP_SPDIF_STATUS_HW_ENABLED;
1669 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1675 if (snd_BUG_ON(ins->asynch_rx_scb))
1677 if (snd_BUG_ON(!ins->spdif_in_src))
1682 if ( ! (ins->spdif_status_out & DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED) ) {
1692 ins->spdif_status_out |= DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED;
1696 ins->asynch_rx_scb = cs46xx_dsp_create_asynch_fg_rx_scb(chip,"AsynchFGRxSCB",
1700 ins->spdif_in_src,
1711 cs46xx_src_link(chip,ins->spdif_in_src);
1714 cs46xx_dsp_scb_set_volume (chip,ins->spdif_in_src,0x7fff,0x7fff);
1720 /* cs46xx_dsp_set_src_sample_rate(chip,ins->spdif_in_src,48000); */
1723 ins->spdif_status_in = 1;
1731 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1733 if (snd_BUG_ON(!ins->asynch_rx_scb))
1735 if (snd_BUG_ON(!ins->spdif_in_src))
1741 cs46xx_dsp_remove_scb (chip,ins->asynch_rx_scb);
1742 ins->asynch_rx_scb = NULL;
1744 cs46xx_src_unlink(chip,ins->spdif_in_src);
1747 ins->spdif_status_in = 0;
1759 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1761 if (snd_BUG_ON(ins->pcm_input))
1763 if (snd_BUG_ON(!ins->ref_snoop_scb))
1767 ins->pcm_input = cs46xx_add_record_source(chip,ins->ref_snoop_scb,PCMSERIALIN_PCM_SCB_ADDR,
1776 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1778 if (snd_BUG_ON(!ins->pcm_input))
1782 cs46xx_dsp_remove_scb (chip,ins->pcm_input);
1783 ins->pcm_input = NULL;
1791 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1793 if (snd_BUG_ON(ins->adc_input))
1795 if (snd_BUG_ON(!ins->codec_in_scb))
1799 ins->adc_input = cs46xx_add_record_source(chip,ins->codec_in_scb,PCMSERIALIN_SCB_ADDR,
1808 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1810 if (snd_BUG_ON(!ins->adc_input))
1814 cs46xx_dsp_remove_scb (chip,ins->adc_input);
1815 ins->adc_input = NULL;
1861 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1867 scb = ins->master_mix_scb->sub_list_ptr;
1868 while (scb != ins->the_null_scb) {
1874 scb = ins->rear_mix_scb->sub_list_ptr;
1875 while (scb != ins->the_null_scb) {
1880 ins->dac_volume_left = left;
1881 ins->dac_volume_right = right;
1890 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1894 if (ins->asynch_rx_scb != NULL)
1895 cs46xx_dsp_scb_set_volume (chip,ins->asynch_rx_scb,
1898 ins->spdif_input_volume_left = left;
1899 ins->spdif_input_volume_right = right;
1909 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1919 for (i = 0; i < ins->nmodules; i++) {
1920 struct dsp_module_desc *module = &ins->modules[i];
1942 ins->code.data + module->load_address,
1948 for (i = 0; i < ins->ntask; i++) {
1949 struct dsp_task_descriptor *t = &ins->tasks[i];
1953 for (i = 0; i < ins->nscb; i++) {
1954 struct dsp_scb_descriptor *s = &ins->scbs[i];
1959 for (i = 0; i < ins->nscb; i++) {
1960 struct dsp_scb_descriptor *s = &ins->scbs[i];
1969 if (ins->spdif_status_out & DSP_SPDIF_STATUS_HW_ENABLED) {
1971 snd_cs46xx_poke(chip, (ins->ref_snoop_scb->address + 2) << 2,
1973 if (ins->spdif_status_out & DSP_SPDIF_STATUS_PLAYBACK_OPEN)
1975 ins->spdif_csuv_stream);