Lines Matching defs:mgr
59 static int mixart_set_pipe_state(struct mixart_mgr *mgr,
77 dev_err(&mgr->pci->dev,
91 err = snd_mixart_send_msg_wait_notif(mgr, &request, system_msg_uid);
93 dev_err(&mgr->pci->dev,
113 err = snd_mixart_send_msg(mgr, &request, sizeof(group_state_resp), &group_state_resp);
115 dev_err(&mgr->pci->dev,
126 err = snd_mixart_send_msg(mgr, &request, sizeof(group_state_resp), &group_state_resp);
128 dev_err(&mgr->pci->dev,
141 err = snd_mixart_send_msg(mgr, &request, sizeof(stat), &stat);
143 dev_err(&mgr->pci->dev,
158 static int mixart_set_clock(struct mixart_mgr *mgr,
177 dev_err(&mgr->pci->dev,
191 dev_dbg(&mgr->pci->dev, "mixart_set_clock to %d kHz\n", rate);
194 request.uid = mgr->uid_console_manager;
198 err = snd_mixart_send_msg(mgr, &request, sizeof(clock_prop_resp), &clock_prop_resp);
200 dev_err(&mgr->pci->dev,
290 flowinfo = (struct mixart_flowinfo *)chip->mgr->flowinfo.area;
291 flowinfo[j].bufferinfo_array_phy_address = (u32)chip->mgr->bufferinfo.addr + (j * sizeof(struct mixart_bufferinfo));
294 bufferinfo = (struct mixart_bufferinfo *)chip->mgr->bufferinfo.area;
305 err = snd_mixart_send_msg(chip->mgr, &request, sizeof(buf->sgroup_resp), &buf->sgroup_resp);
329 int snd_mixart_kill_ref_pipe(struct mixart_mgr *mgr,
348 err = mixart_set_clock( mgr, pipe, 0);
350 dev_err(&mgr->pci->dev,
355 err = mixart_set_pipe_state(mgr, pipe, 0);
357 dev_err(&mgr->pci->dev, "error stopping pipe!\n");
366 err = snd_mixart_send_msg(mgr, &request, sizeof(delete_resp), &delete_resp);
368 dev_err(&mgr->pci->dev,
410 return snd_mixart_send_msg_nonblock(chip->mgr, &request);
461 static int mixart_sync_nonblock_events(struct mixart_mgr *mgr)
464 while (atomic_read(&mgr->msg_processed) > 0) {
466 dev_err(&mgr->pci->dev,
487 mixart_sync_nonblock_events(chip->mgr);
491 if(chip->mgr->ref_count_rate == 1)
492 chip->mgr->sample_rate = subs->runtime->rate;
496 if( mixart_set_clock(chip->mgr, stream->pipe, subs->runtime->rate) )
519 stream_param.sampling_freq = chip->mgr->sample_rate;
577 err = snd_mixart_send_msg(chip->mgr, &request, sizeof(resp), &resp);
595 struct mixart_mgr *mgr = chip->mgr;
607 mutex_lock(&mgr->setup_mutex);
623 mutex_unlock(&mgr->setup_mutex);
634 bufferinfo = (struct mixart_bufferinfo *)chip->mgr->bufferinfo.area;
645 mutex_unlock(&mgr->setup_mutex);
653 mixart_sync_nonblock_events(chip->mgr);
708 struct mixart_mgr *mgr = chip->mgr;
716 mutex_lock(&mgr->setup_mutex);
751 err = mixart_set_pipe_state(chip->mgr, pipe, 1);
754 snd_mixart_kill_ref_pipe(chip->mgr, pipe, 0);
771 if(mgr->ref_count_rate++) {
772 if(mgr->sample_rate) {
773 runtime->hw.rate_min = runtime->hw.rate_max = mgr->sample_rate;
778 mutex_unlock(&mgr->setup_mutex);
787 struct mixart_mgr *mgr = chip->mgr;
795 mutex_lock(&mgr->setup_mutex);
832 err = mixart_set_pipe_state(chip->mgr, pipe, 1);
835 snd_mixart_kill_ref_pipe(chip->mgr, pipe, 0);
852 if(mgr->ref_count_rate++) {
853 if(mgr->sample_rate) {
854 runtime->hw.rate_min = runtime->hw.rate_max = mgr->sample_rate;
859 mutex_unlock(&mgr->setup_mutex);
869 struct mixart_mgr *mgr = chip->mgr;
872 mutex_lock(&mgr->setup_mutex);
878 if(--mgr->ref_count_rate == 0) {
879 mgr->sample_rate = 0;
883 if (snd_mixart_kill_ref_pipe(mgr, stream->pipe, 0 ) < 0) {
894 mutex_unlock(&mgr->setup_mutex);
945 &chip->mgr->pci->dev,
1029 static int snd_mixart_create(struct mixart_mgr *mgr, struct snd_card *card, int idx)
1043 chip->mgr = mgr;
1044 card->sync_irq = mgr->irq;
1051 mgr->chip[idx] = chip;
1063 if(chip->mgr->board_type == MIXART_DAUGHTER_TYPE_AES) {
1076 static int snd_mixart_free(struct mixart_mgr *mgr)
1080 for (i = 0; i < mgr->num_cards; i++) {
1081 if (mgr->chip[i])
1082 snd_card_free(mgr->chip[i]->card);
1086 snd_mixart_exit_mailbox(mgr);
1089 if (mgr->irq >= 0)
1090 free_irq(mgr->irq, mgr);
1093 if(mgr->dsp_loaded) {
1094 snd_mixart_reset_board(mgr);
1095 dev_dbg(&mgr->pci->dev, "reset miXart !\n");
1100 iounmap(mgr->mem[i].virt);
1102 pci_release_regions(mgr->pci);
1105 if(mgr->flowinfo.area) {
1106 snd_dma_free_pages(&mgr->flowinfo);
1107 mgr->flowinfo.area = NULL;
1110 if(mgr->bufferinfo.area) {
1111 snd_dma_free_pages(&mgr->bufferinfo);
1112 mgr->bufferinfo.area = NULL;
1115 pci_disable_device(mgr->pci);
1116 kfree(mgr);
1132 struct mixart_mgr *mgr = entry->private_data;
1135 if (copy_to_user_fromio(buf, MIXART_MEM(mgr, pos), count))
1148 struct mixart_mgr *mgr = entry->private_data;
1151 if (copy_to_user_fromio(buf, MIXART_REG(mgr, pos), count))
1174 if (chip->mgr->dsp_loaded & ( 1 << MIXART_MOTHERBOARD_ELF_INDEX)) {
1176 switch (chip->mgr->board_type ) {
1187 ref = readl_be( MIXART_MEM( chip->mgr, MIXART_PSEUDOREG_PERF_SYSTEM_LOAD_OFFSET));
1190 u32 mailbox = 100 * readl_be( MIXART_MEM( chip->mgr, MIXART_PSEUDOREG_PERF_MAILBX_LOAD_OFFSET)) / ref;
1191 u32 streaming = 100 * readl_be( MIXART_MEM( chip->mgr, MIXART_PSEUDOREG_PERF_STREAM_LOAD_OFFSET)) / ref;
1192 u32 interr = 100 * readl_be( MIXART_MEM( chip->mgr, MIXART_PSEUDOREG_PERF_INTERR_LOAD_OFFSET)) / ref;
1211 entry->private_data = chip->mgr;
1217 entry->private_data = chip->mgr;
1232 struct mixart_mgr *mgr;
1261 mgr = kzalloc(sizeof(*mgr), GFP_KERNEL);
1262 if (! mgr) {
1267 mgr->pci = pci;
1268 mgr->irq = -1;
1272 kfree(mgr);
1277 mgr->mem[i].phys = pci_resource_start(pci, i);
1278 mgr->mem[i].virt = pci_ioremap_bar(pci, i);
1279 if (!mgr->mem[i].virt) {
1281 mgr->mem[i].phys);
1282 snd_mixart_free(mgr);
1289 KBUILD_MODNAME, mgr)) {
1291 snd_mixart_free(mgr);
1294 mgr->irq = pci->irq;
1297 mgr->msg_fifo_readptr = 0;
1298 mgr->msg_fifo_writeptr = 0;
1300 mutex_init(&mgr->lock);
1301 mutex_init(&mgr->msg_lock);
1302 init_waitqueue_head(&mgr->msg_sleep);
1303 atomic_set(&mgr->msg_processed, 0);
1306 mutex_init(&mgr->setup_mutex);
1309 mgr->num_cards = MIXART_MAX_CARDS; /* 4 FIXME: configurable? */
1310 for (i = 0; i < mgr->num_cards; i++) {
1325 snd_mixart_free(mgr);
1334 mgr->mem[0].phys, mgr->mem[1].phys, mgr->irq, i);
1336 if ((err = snd_mixart_create(mgr, card, i)) < 0) {
1338 snd_mixart_free(mgr);
1344 snd_mixart_proc_init(mgr->chip[i]);
1348 snd_mixart_free(mgr);
1353 /* init firmware status (mgr->dsp_loaded reset in hwdep_new) */
1354 mgr->board_type = MIXART_DAUGHTER_TYPE_NONE;
1360 size, &mgr->flowinfo) < 0) {
1361 snd_mixart_free(mgr);
1365 memset(mgr->flowinfo.area, 0, size);
1371 size, &mgr->bufferinfo) < 0) {
1372 snd_mixart_free(mgr);
1376 memset(mgr->bufferinfo.area, 0, size);
1379 err = snd_mixart_setup_firmware(mgr);
1381 snd_mixart_free(mgr);
1385 pci_set_drvdata(pci, mgr);