Lines Matching refs:devc

78 static struct opl_devinfo *devc = NULL;
94 devc->cmask = 0x3f; /* Connect all possible 4 OP voice operators */
95 opl3_command(devc->right_io, CONNECTION_SELECT_REGISTER, 0x3f);
108 devc->lv_map[i] = v4op[i];
109 devc->v_alloc->max_voice = devc->nr_voice = 12;
128 devc->fm_info.nr_voices = (devc->nr_voice == 12) ? 6 : devc->nr_voice;
129 if (copy_to_user(arg, &devc->fm_info, sizeof(devc->fm_info)))
137 if (devc->model == 2)
162 if (devc != NULL)
168 devc = kzalloc(sizeof(*devc), GFP_KERNEL);
170 if (devc == NULL)
177 strcpy(devc->fm_info.name, "OPL2");
179 if (!request_region(ioaddr, 4, devc->fm_info.name)) {
184 devc->base = ioaddr;
263 kfree(devc);
264 devc = NULL;
272 if (voice < 0 || voice >= devc->nr_voice)
275 devc->v_alloc->map[voice] = 0;
277 map = &pv_map[devc->lv_map[voice]];
283 opl3_command(map->ioaddr, KEYON_BLOCK + map->voice_num, devc->voc[voice].keyon_byte & ~0x20);
284 devc->voc[voice].keyon_byte = 0;
285 devc->voc[voice].bender = 0;
286 devc->voc[voice].volume = 64;
287 devc->voc[voice].panning = 0xffff; /* Not set */
288 devc->voc[voice].bender_range = 200;
289 devc->voc[voice].orig_freq = 0;
290 devc->voc[voice].current_freq = 0;
291 devc->voc[voice].mode = 0;
305 if (instr->key != FM_PATCH && (instr->key != OPL3_PATCH || devc->model != 2))
307 memcpy((char *) &(devc->i_map[instr_no]), (char *) instr, sizeof(*instr));
313 if (voice < 0 || voice >= devc->nr_voice)
318 devc->act_i[voice] = &devc->i_map[instr_no];
377 if (voice < 0 || voice >= devc->nr_voice)
380 map = &pv_map[devc->lv_map[voice]];
381 instr = devc->act_i[voice];
384 instr = &devc->i_map[0];
389 if (devc->voc[voice].mode == 0)
392 if (devc->voc[voice].mode == 2)
420 * The connection method for 4 OP devc->voc is defined by the rightmost
465 if (voice < 0 || voice >= devc->nr_voice)
468 map = &pv_map[devc->lv_map[voice]];
469 pan = devc->voc[voice].panning;
478 set_voice_volume(voice, volume, devc->voc[voice].volume);
507 instr = devc->act_i[voice];
510 instr = &devc->i_map[0];
529 voice_shift = (map->ioaddr == devc->left_io) ? 0 : 3;
537 devc->cmask &= ~(1 << voice_shift);
541 devc->cmask |= (1 << voice_shift);
544 opl3_command(devc->right_io, CONNECTION_SELECT_REGISTER, devc->cmask);
645 devc->voc[voice].mode = voice_mode;
646 set_voice_volume(voice, volume, devc->voc[voice].volume);
648 freq = devc->voc[voice].orig_freq = note_to_freq(note) / 1000;
655 freq = compute_finetune(devc->voc[voice].orig_freq, devc->voc[voice].bender, devc->voc[voice].bender_range, 0);
656 devc->voc[voice].current_freq = freq;
670 devc->voc[voice].keyon_byte = data;
730 if (devc->model != 2)
738 if (devc->model != 2)
750 devc->lv_map[i] = i;
752 for (i = 0; i < devc->nr_voice; i++)
754 opl3_command(pv_map[devc->lv_map[i]].ioaddr,
755 KSL_LEVEL + pv_map[devc->lv_map[i]].op[0], 0xff);
757 opl3_command(pv_map[devc->lv_map[i]].ioaddr,
758 KSL_LEVEL + pv_map[devc->lv_map[i]].op[1], 0xff);
760 if (pv_map[devc->lv_map[i]].voice_mode == 4)
762 opl3_command(pv_map[devc->lv_map[i]].ioaddr,
763 KSL_LEVEL + pv_map[devc->lv_map[i]].op[2], 0xff);
765 opl3_command(pv_map[devc->lv_map[i]].ioaddr,
766 KSL_LEVEL + pv_map[devc->lv_map[i]].op[3], 0xff);
772 if (devc->model == 2)
774 devc->v_alloc->max_voice = devc->nr_voice = 18;
786 if (devc->busy)
788 devc->busy = 1;
790 devc->v_alloc->max_voice = devc->nr_voice = (devc->model == 2) ? 18 : 9;
791 devc->v_alloc->timestamp = 0;
795 devc->v_alloc->map[i] = 0;
796 devc->v_alloc->alloc_times[i] = 0;
799 devc->cmask = 0x00; /*
802 if (devc->model == 2)
803 opl3_command(devc->right_io, CONNECTION_SELECT_REGISTER, devc->cmask);
809 devc->busy = 0;
810 devc->v_alloc->max_voice = devc->nr_voice = (devc->model == 2) ? 18 : 9;
812 devc->fm_info.nr_drums = 0;
813 devc->fm_info.perc_mode = 0;
849 if (voice < 0 || voice >= devc->nr_voice)
852 devc->voc[voice].panning = value;
871 if (voice < 0 || voice >= devc->nr_voice)
874 map = &pv_map[devc->lv_map[voice]];
885 instr = devc->act_i[voice];
888 instr = &devc->i_map[0];
890 if (devc->voc[voice].mode == 4)
940 map = &pv_map[devc->lv_map[voice]];
945 devc->voc[voice].bender = value;
948 if (!(devc->voc[voice].keyon_byte & 0x20))
953 freq = compute_finetune(devc->voc[voice].orig_freq, devc->voc[voice].bender, devc->voc[voice].bender_range, 0);
954 devc->voc[voice].current_freq = freq;
964 devc->voc[voice].keyon_byte = data;
970 if (voice < 0 || voice >= devc->nr_voice)
980 devc->voc[voice].bender_range = value;
984 devc->voc[voice].volume = value / 128;
988 devc->voc[voice].panning = (value * 2) - 128;
995 if (voice < 0 || voice >= devc->nr_voice)
1011 instr_no = devc->chn_info[chn].pgm_num;
1013 instr = &devc->i_map[instr_no];
1015 devc->nr_voice != 12) /* Not in 4 OP mode */
1017 else if (devc->nr_voice == 12) /* 4 OP mode */
1029 if (devc->nr_voice == 12) /* 4 OP mode. Use the '2 OP only' operators first */
1033 avail = devc->nr_voice;
1061 if (best > devc->nr_voice)
1062 best -= devc->nr_voice;
1064 return best; /* All devc->voc in use. Select the first one. */
1071 if (voice < 0 || voice >= devc->nr_voice)
1081 devc->voc[voice].bender = 0;
1082 devc->voc[voice].bender_range = info->bender_range;
1083 devc->voc[voice].volume = info->controllers[CTL_MAIN_VOLUME];
1084 devc->voc[voice].panning = (info->controllers[CTL_PAN] * 2) - 128;
1118 if (devc == NULL)
1130 devc->nr_voice = 9;
1132 devc->fm_info.device = 0;
1133 devc->fm_info.synth_type = SYNTH_TYPE_FM;
1134 devc->fm_info.synth_subtype = FM_TYPE_ADLIB;
1135 devc->fm_info.perc_mode = 0;
1136 devc->fm_info.nr_voices = 9;
1137 devc->fm_info.nr_drums = 0;
1138 devc->fm_info.instr_bank_size = SBFM_MAXINSTR;
1139 devc->fm_info.capabilities = 0;
1140 devc->left_io = ioaddr;
1141 devc->right_io = ioaddr + 2;
1144 devc->model = 1;
1147 devc->model = 2;
1149 devc->is_opl4 = 1;
1152 opl3_operations.info = &devc->fm_info;
1160 devc->v_alloc = &opl3_operations.alloc;
1161 devc->chn_info = &opl3_operations.chn_info[0];
1163 if (devc->model == 2)
1165 if (devc->is_opl4)
1166 strcpy(devc->fm_info.name, "Yamaha OPL4/OPL3 FM");
1168 strcpy(devc->fm_info.name, "Yamaha OPL3");
1170 devc->v_alloc->max_voice = devc->nr_voice = 18;
1171 devc->fm_info.nr_drums = 0;
1172 devc->fm_info.synth_subtype = FM_TYPE_OPL3;
1173 devc->fm_info.capabilities |= SYNTH_CAP_OPL3;
1178 pv_map[i].ioaddr = devc->left_io;
1180 pv_map[i].ioaddr = devc->right_io;
1182 opl3_command(devc->right_io, OPL3_MODE_REGISTER, OPL3_ENABLE);
1183 opl3_command(devc->right_io, CONNECTION_SELECT_REGISTER, 0x00);
1187 strcpy(devc->fm_info.name, "Yamaha OPL2");
1188 devc->v_alloc->max_voice = devc->nr_voice = 9;
1189 devc->fm_info.nr_drums = 0;
1192 pv_map[i].ioaddr = devc->left_io;
1194 conf_printf2(devc->fm_info.name, ioaddr, 0, -1, -1);
1197 devc->i_map[i].channel = -1;
1227 if (devc && io != -1)
1229 if (devc->base) {
1230 release_region(devc->base,4);
1231 if (devc->is_opl4)
1232 release_region(devc->base - 8, 2);
1234 kfree(devc);
1235 devc = NULL;