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; */
784 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
787 ins->snd_card = card;
792 ins->proc_dsp_dir = entry;
794 if (!ins->proc_dsp_dir)
798 ins->proc_dsp_dir);
804 ins->proc_dsp_dir);
810 ins->proc_dsp_dir);
816 ins->proc_dsp_dir);
822 ins->proc_dsp_dir);
828 ins->proc_dsp_dir);
835 for (i = 0; i < ins->nscb; ++i) {
836 if (ins->scbs[i].deleted) continue;
838 cs46xx_dsp_proc_register_scb_desc (chip, (ins->scbs + i));
847 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
850 if (!ins)
854 for (i = 0; i < ins->nscb; ++i) {
855 if (ins->scbs[i].deleted) continue;
856 cs46xx_dsp_proc_free_scb_desc ( (ins->scbs + i) );
860 snd_info_free_entry(ins->proc_dsp_dir);
861 ins->proc_dsp_dir = NULL;
896 static int find_free_scb_index (struct dsp_spos_instance * ins)
898 int index = ins->nscb, i;
900 for (i = ins->scb_highest_frag_index; i < ins->nscb; ++i) {
901 if (ins->scbs[i].deleted) {
912 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
916 if (ins->nscb == DSP_MAX_SCB_DESC - 1) {
922 index = find_free_scb_index (ins);
924 memset(&ins->scbs[index], 0, sizeof(ins->scbs[index]));
925 strcpy(ins->scbs[index].scb_name, name);
926 ins->scbs[index].address = dest;
927 ins->scbs[index].index = index;
928 ins->scbs[index].ref_count = 1;
930 desc = (ins->scbs + index);
931 ins->scbs[index].scb_symbol = add_symbol (chip, name, dest, SYMBOL_PARAMETER);
933 if (index > ins->scb_highest_frag_index)
934 ins->scb_highest_frag_index = index;
936 if (index == ins->nscb)
937 ins->nscb++;
945 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
948 if (ins->ntask == DSP_MAX_TASK_DESC - 1) {
955 strcpy(ins->tasks[ins->ntask].task_name, name);
957 strcpy(ins->tasks[ins->ntask].task_name, "(NULL)");
958 ins->tasks[ins->ntask].address = dest;
959 ins->tasks[ins->ntask].size = size;
962 ins->tasks[ins->ntask].index = ins->ntask;
963 desc = (ins->tasks + ins->ntask);
964 ins->ntask++;
1019 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1111 ins->the_null_scb = cs46xx_dsp_create_scb(chip, "nullSCB", (u32 *)&null_scb, NULL_SCB_ADDR);
1112 ins->the_null_scb->task_entry = null_algorithm;
1113 ins->the_null_scb->sub_list_ptr = ins->the_null_scb;
1114 ins->the_null_scb->next_scb_ptr = ins->the_null_scb;
1115 ins->the_null_scb->parent_scb_ptr = NULL;
1116 cs46xx_dsp_proc_register_scb_desc (chip,ins->the_null_scb);
1285 ins->master_mix_scb = master_mix_scb;
1295 ins->codec_in_scb = codec_in_scb;
1332 ins->record_mixer_scb = record_mix_scb;
1372 ins->rear_mix_scb = rear_mix_scb;
1387 ins->center_lfe_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"CLFEMixerSCB",
1392 if (!ins->center_lfe_mix_scb) goto _fail_end;
1398 ins->center_lfe_mix_scb = rear_mix_scb;
1413 ins->ref_snoop_scb = magic_snoop_scb;
1423 ins->spdif_in_sample_rate,
1434 ins->spdif_in_src = src_task_scb;
1447 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1593 async_codec_scb_desc->sub_list_ptr = ins->the_null_scb;
1598 spdifi_scb_desc->sub_list_ptr = ins->the_null_scb;
1603 spdifo_scb_desc->sub_list_ptr = ins->the_null_scb;
1624 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1633 /*cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default);*/
1640 ins->spdif_status_out &= ~DSP_SPDIF_STATUS_HW_ENABLED;
1645 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1658 cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default);
1661 ins->spdif_status_out |= DSP_SPDIF_STATUS_HW_ENABLED;
1668 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1674 if (snd_BUG_ON(ins->asynch_rx_scb))
1676 if (snd_BUG_ON(!ins->spdif_in_src))
1681 if ( ! (ins->spdif_status_out & DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED) ) {
1691 ins->spdif_status_out |= DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED;
1695 ins->asynch_rx_scb = cs46xx_dsp_create_asynch_fg_rx_scb(chip,"AsynchFGRxSCB",
1699 ins->spdif_in_src,
1710 cs46xx_src_link(chip,ins->spdif_in_src);
1713 cs46xx_dsp_scb_set_volume (chip,ins->spdif_in_src,0x7fff,0x7fff);
1719 /* cs46xx_dsp_set_src_sample_rate(chip,ins->spdif_in_src,48000); */
1722 ins->spdif_status_in = 1;
1730 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1732 if (snd_BUG_ON(!ins->asynch_rx_scb))
1734 if (snd_BUG_ON(!ins->spdif_in_src))
1740 cs46xx_dsp_remove_scb (chip,ins->asynch_rx_scb);
1741 ins->asynch_rx_scb = NULL;
1743 cs46xx_src_unlink(chip,ins->spdif_in_src);
1746 ins->spdif_status_in = 0;
1758 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1760 if (snd_BUG_ON(ins->pcm_input))
1762 if (snd_BUG_ON(!ins->ref_snoop_scb))
1766 ins->pcm_input = cs46xx_add_record_source(chip,ins->ref_snoop_scb,PCMSERIALIN_PCM_SCB_ADDR,
1775 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1777 if (snd_BUG_ON(!ins->pcm_input))
1781 cs46xx_dsp_remove_scb (chip,ins->pcm_input);
1782 ins->pcm_input = NULL;
1790 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1792 if (snd_BUG_ON(ins->adc_input))
1794 if (snd_BUG_ON(!ins->codec_in_scb))
1798 ins->adc_input = cs46xx_add_record_source(chip,ins->codec_in_scb,PCMSERIALIN_SCB_ADDR,
1807 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1809 if (snd_BUG_ON(!ins->adc_input))
1813 cs46xx_dsp_remove_scb (chip,ins->adc_input);
1814 ins->adc_input = NULL;
1860 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1866 scb = ins->master_mix_scb->sub_list_ptr;
1867 while (scb != ins->the_null_scb) {
1873 scb = ins->rear_mix_scb->sub_list_ptr;
1874 while (scb != ins->the_null_scb) {
1879 ins->dac_volume_left = left;
1880 ins->dac_volume_right = right;
1889 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1893 if (ins->asynch_rx_scb != NULL)
1894 cs46xx_dsp_scb_set_volume (chip,ins->asynch_rx_scb,
1897 ins->spdif_input_volume_left = left;
1898 ins->spdif_input_volume_right = right;
1908 struct dsp_spos_instance * ins = chip->dsp_spos_instance;
1918 for (i = 0; i < ins->nmodules; i++) {
1919 struct dsp_module_desc *module = &ins->modules[i];
1941 ins->code.data + module->load_address,
1947 for (i = 0; i < ins->ntask; i++) {
1948 struct dsp_task_descriptor *t = &ins->tasks[i];
1952 for (i = 0; i < ins->nscb; i++) {
1953 struct dsp_scb_descriptor *s = &ins->scbs[i];
1958 for (i = 0; i < ins->nscb; i++) {
1959 struct dsp_scb_descriptor *s = &ins->scbs[i];
1968 if (ins->spdif_status_out & DSP_SPDIF_STATUS_HW_ENABLED) {
1970 snd_cs46xx_poke(chip, (ins->ref_snoop_scb->address + 2) << 2,
1972 if (ins->spdif_status_out & DSP_SPDIF_STATUS_PLAYBACK_OPEN)
1974 ins->spdif_csuv_stream);