Lines Matching defs:mgr

27  * @mgr: pointer to miXart manager structure
33 static int mixart_wait_nice_for_register_value(struct mixart_mgr *mgr,
45 read = readl_be( MIXART_MEM( mgr, offset ));
89 static int mixart_load_elf(struct mixart_mgr *mgr, const struct firmware *dsp )
110 memcpy_toio( MIXART_MEM( mgr, be32_to_cpu(elf_programheader.p_vaddr)),
128 static int mixart_enum_connectors(struct mixart_mgr *mgr)
154 err = snd_mixart_send_msg(mgr, &request, sizeof(*connector), connector);
156 dev_err(&mgr->pci->dev,
166 pipe = &mgr->chip[k/2]->pipe_out_ana;
168 pipe = &mgr->chip[(k-MIXART_FIRST_DIG_AUDIO_ID)/2]->pipe_out_dig;
176 /* dev_dbg(&mgr->pci->dev, "playback connector[%d].object_id = %x\n", k, connector->uid[k].object_id); */
184 err = snd_mixart_send_msg(mgr, &request, sizeof(*audio_info), audio_info);
186 dev_err(&mgr->pci->dev,
190 /*dev_dbg(&mgr->pci->dev, "play analog_info.analog_level_present = %x\n", audio_info->info.analog_info.analog_level_present);*/
198 err = snd_mixart_send_msg(mgr, &request, sizeof(*connector), connector);
200 dev_err(&mgr->pci->dev,
210 pipe = &mgr->chip[k/2]->pipe_in_ana;
212 pipe = &mgr->chip[(k-MIXART_FIRST_DIG_AUDIO_ID)/2]->pipe_in_dig;
220 /* dev_dbg(&mgr->pci->dev, "capture connector[%d].object_id = %x\n", k, connector->uid[k].object_id); */
228 err = snd_mixart_send_msg(mgr, &request, sizeof(*audio_info), audio_info);
230 dev_err(&mgr->pci->dev,
234 /*dev_dbg(&mgr->pci->dev, "rec analog_info.analog_level_present = %x\n", audio_info->info.analog_info.analog_level_present);*/
246 static int mixart_enum_physio(struct mixart_mgr *mgr)
264 err = snd_mixart_send_msg(mgr, &request, sizeof(console_mgr), &console_mgr);
267 dev_dbg(&mgr->pci->dev,
274 mgr->uid_console_manager = console_mgr.uid;
281 err = snd_mixart_send_msg(mgr, &request, sizeof(phys_io), &phys_io);
283 dev_err(&mgr->pci->dev,
293 for(k=0; k<mgr->num_cards; k++) {
294 mgr->chip[k]->uid_in_analog_physio = phys_io.uid[k];
295 mgr->chip[k]->uid_out_analog_physio = phys_io.uid[phys_io.nb_uid/2 + k];
302 static int mixart_first_init(struct mixart_mgr *mgr)
308 if((err = mixart_enum_connectors(mgr)) < 0) return err;
310 if((err = mixart_enum_physio(mgr)) < 0) return err;
319 err = snd_mixart_send_msg(mgr, &request, sizeof(k), &k);
321 dev_err(&mgr->pci->dev, "error MSG_SYSTEM_SEND_SYNCHRO_CMD\n");
332 static int mixart_dsp_load(struct mixart_mgr* mgr, int index, const struct firmware *dsp)
339 status_xilinx = readl_be( MIXART_MEM( mgr,MIXART_PSEUDOREG_MXLX_STATUS_OFFSET ));
341 status_elf = readl_be( MIXART_MEM( mgr,MIXART_PSEUDOREG_ELF_STATUS_OFFSET ));
343 status_daught = readl_be( MIXART_MEM( mgr,MIXART_PSEUDOREG_DXLX_STATUS_OFFSET ));
347 dev_err(&mgr->pci->dev, "miXart is resetting !\n");
356 dev_dbg(&mgr->pci->dev, "xilinx is already loaded !\n");
361 dev_err(&mgr->pci->dev,
374 writel_be( 1, MIXART_MEM( mgr, MIXART_PSEUDOREG_MXLX_STATUS_OFFSET ));
377 writel_be( MIXART_MOTHERBOARD_XLX_BASE_ADDRESS, MIXART_MEM( mgr,MIXART_PSEUDOREG_MXLX_BASE_ADDR_OFFSET ));
379 writel_be( dsp->size, MIXART_MEM( mgr, MIXART_PSEUDOREG_MXLX_SIZE_OFFSET ));
382 memcpy_toio( MIXART_MEM( mgr, MIXART_MOTHERBOARD_XLX_BASE_ADDRESS), dsp->data, dsp->size);
385 writel_be( 2, MIXART_MEM( mgr, MIXART_PSEUDOREG_MXLX_STATUS_OFFSET ));
393 dev_dbg(&mgr->pci->dev, "elf file already loaded !\n");
399 dev_err(&mgr->pci->dev,
406 err = mixart_wait_nice_for_register_value( mgr, MIXART_PSEUDOREG_MXLX_STATUS_OFFSET, 1, 4, 500); /* 5sec */
408 dev_err(&mgr->pci->dev, "xilinx was not loaded or "
414 writel_be( 0, MIXART_MEM( mgr, MIXART_PSEUDOREG_BOARDNUMBER ) ); /* set miXart boardnumber to 0 */
415 writel_be( 0, MIXART_MEM( mgr, MIXART_FLOWTABLE_PTR ) ); /* reset pointer to flow table on miXart */
418 writel_be( 1, MIXART_MEM( mgr, MIXART_PSEUDOREG_ELF_STATUS_OFFSET ));
421 err = mixart_load_elf( mgr, dsp );
425 writel_be( 2, MIXART_MEM( mgr, MIXART_PSEUDOREG_ELF_STATUS_OFFSET ));
428 err = mixart_wait_nice_for_register_value( mgr, MIXART_PSEUDOREG_ELF_STATUS_OFFSET, 1, 4, 300); /* 3sec */
430 dev_err(&mgr->pci->dev, "elf could not be started\n");
435 writel_be( (u32)mgr->flowinfo.addr, MIXART_MEM( mgr, MIXART_FLOWTABLE_PTR ) ); /* give pointer of flow table to miXart */
444 dev_err(&mgr->pci->dev, "xilinx or elf not "
450 err = mixart_wait_nice_for_register_value( mgr, MIXART_PSEUDOREG_DBRD_PRESENCE_OFFSET, 0, 0, 30); /* 300msec */
452 dev_err(&mgr->pci->dev, "error starting elf file\n");
457 mgr->board_type = (DAUGHTER_TYPE_MASK & readl_be( MIXART_MEM( mgr, MIXART_PSEUDOREG_DBRD_TYPE_OFFSET)));
459 if (mgr->board_type == MIXART_DAUGHTER_TYPE_NONE)
463 if (mgr->board_type != MIXART_DAUGHTER_TYPE_AES )
468 dev_err(&mgr->pci->dev,
481 writel_be( dsp->size, MIXART_MEM( mgr, MIXART_PSEUDOREG_DXLX_SIZE_OFFSET ));
484 writel_be( 1, MIXART_MEM( mgr, MIXART_PSEUDOREG_DXLX_STATUS_OFFSET ));
487 err = mixart_wait_nice_for_register_value( mgr, MIXART_PSEUDOREG_DXLX_STATUS_OFFSET, 1, 2, 30); /* 300msec */
489 dev_err(&mgr->pci->dev, "daughter board load error\n");
494 val = readl_be( MIXART_MEM( mgr, MIXART_PSEUDOREG_DXLX_BASE_ADDR_OFFSET ));
499 memcpy_toio( MIXART_MEM( mgr, val), dsp->data, dsp->size);
502 writel_be( 4, MIXART_MEM( mgr, MIXART_PSEUDOREG_DXLX_STATUS_OFFSET ));
509 err = mixart_wait_nice_for_register_value( mgr, MIXART_PSEUDOREG_DXLX_STATUS_OFFSET, 1, 3, 300); /* 3sec */
511 dev_err(&mgr->pci->dev,
517 snd_mixart_init_mailbox(mgr);
520 err = mixart_first_init(mgr);
522 dev_err(&mgr->pci->dev, "miXart could not be set up\n");
527 for (card_index = 0; card_index < mgr->num_cards; card_index++) {
528 struct snd_mixart *chip = mgr->chip[card_index];
534 if ((err = snd_mixart_create_mixer(chip->mgr)) < 0)
542 dev_dbg(&mgr->pci->dev,
549 int snd_mixart_setup_firmware(struct mixart_mgr *mgr)
561 if (request_firmware(&fw_entry, path, &mgr->pci->dev)) {
562 dev_err(&mgr->pci->dev,
567 err = mixart_dsp_load(mgr, i, fw_entry);
571 mgr->dsp_loaded |= 1 << i;