Lines Matching refs:chip
92 static int lx_set_granularity(struct lx6464es *chip, u32 gran);
95 static int lx_hardware_open(struct lx6464es *chip,
105 dev_dbg(chip->card->dev, "allocating pipe for %d channels\n", channels);
106 err = lx_pipe_allocate(chip, 0, is_capture, channels);
108 dev_err(chip->card->dev, LXP "allocating pipe failed\n");
112 err = lx_set_granularity(chip, period_size);
114 dev_err(chip->card->dev, "setting granularity to %ld failed\n",
122 static int lx_hardware_start(struct lx6464es *chip,
129 dev_dbg(chip->card->dev, "setting stream format\n");
130 err = lx_stream_set_format(chip, runtime, 0, is_capture);
132 dev_err(chip->card->dev, "setting stream format failed\n");
136 dev_dbg(chip->card->dev, "starting pipe\n");
137 err = lx_pipe_start(chip, 0, is_capture);
139 dev_err(chip->card->dev, "starting pipe failed\n");
143 dev_dbg(chip->card->dev, "waiting for pipe to start\n");
144 err = lx_pipe_wait_for_start(chip, 0, is_capture);
146 dev_err(chip->card->dev, "waiting for pipe failed\n");
154 static int lx_hardware_stop(struct lx6464es *chip,
160 dev_dbg(chip->card->dev, "pausing pipe\n");
161 err = lx_pipe_pause(chip, 0, is_capture);
163 dev_err(chip->card->dev, "pausing pipe failed\n");
167 dev_dbg(chip->card->dev, "waiting for pipe to become idle\n");
168 err = lx_pipe_wait_for_idle(chip, 0, is_capture);
170 dev_err(chip->card->dev, "waiting for pipe failed\n");
174 dev_dbg(chip->card->dev, "stopping pipe\n");
175 err = lx_pipe_stop(chip, 0, is_capture);
177 dev_err(chip->card->dev, "stopping pipe failed\n");
185 static int lx_hardware_close(struct lx6464es *chip,
191 dev_dbg(chip->card->dev, "releasing pipe\n");
192 err = lx_pipe_release(chip, 0, is_capture);
194 dev_err(chip->card->dev, "releasing pipe failed\n");
204 struct lx6464es *chip = snd_pcm_substream_chip(substream);
209 dev_dbg(chip->card->dev, "->lx_pcm_open\n");
210 mutex_lock(&chip->setup_mutex);
220 dev_warn(chip->card->dev, "could not constrain periods\n");
226 board_rate = chip->board_sample_rate;
231 dev_warn(chip->card->dev, "could not constrain periods\n");
241 dev_warn(chip->card->dev,
253 runtime->private_data = chip;
255 mutex_unlock(&chip->setup_mutex);
256 dev_dbg(chip->card->dev, "<-lx_pcm_open, %d\n", err);
269 struct lx6464es *chip = snd_pcm_substream_chip(substream);
273 struct lx_stream *lx_stream = is_capture ? &chip->capture_stream :
274 &chip->playback_stream;
276 dev_dbg(chip->card->dev, "->lx_pcm_stream_pointer\n");
278 mutex_lock(&chip->lock);
280 mutex_unlock(&chip->lock);
282 dev_dbg(chip->card->dev, "stream_pointer at %ld\n", pos);
288 struct lx6464es *chip = snd_pcm_substream_chip(substream);
292 dev_dbg(chip->card->dev, "->lx_pcm_prepare\n");
294 mutex_lock(&chip->setup_mutex);
296 if (chip->hardware_running[is_capture]) {
297 err = lx_hardware_stop(chip, substream);
299 dev_err(chip->card->dev, "failed to stop hardware. "
304 err = lx_hardware_close(chip, substream);
306 dev_err(chip->card->dev, "failed to close hardware. "
312 dev_dbg(chip->card->dev, "opening hardware\n");
313 err = lx_hardware_open(chip, substream);
315 dev_err(chip->card->dev, "failed to open hardware. "
320 err = lx_hardware_start(chip, substream);
322 dev_err(chip->card->dev, "failed to start hardware. "
327 chip->hardware_running[is_capture] = 1;
329 if (chip->board_sample_rate != substream->runtime->rate) {
331 chip->board_sample_rate = substream->runtime->rate;
335 mutex_unlock(&chip->setup_mutex);
342 struct lx6464es *chip = snd_pcm_substream_chip(substream);
344 dev_dbg(chip->card->dev, "->lx_pcm_hw_params\n");
346 mutex_lock(&chip->setup_mutex);
349 chip->capture_stream.stream = substream;
351 chip->playback_stream.stream = substream;
353 mutex_unlock(&chip->setup_mutex);
371 struct lx6464es *chip = snd_pcm_substream_chip(substream);
375 dev_dbg(chip->card->dev, "->lx_pcm_hw_free\n");
376 mutex_lock(&chip->setup_mutex);
378 if (chip->hardware_running[is_capture]) {
379 err = lx_hardware_stop(chip, substream);
381 dev_err(chip->card->dev, "failed to stop hardware. "
386 err = lx_hardware_close(chip, substream);
388 dev_err(chip->card->dev, "failed to close hardware. "
393 chip->hardware_running[is_capture] = 0;
397 chip->capture_stream.stream = NULL;
399 chip->playback_stream.stream = NULL;
402 mutex_unlock(&chip->setup_mutex);
406 static void lx_trigger_start(struct lx6464es *chip, struct lx_stream *lx_stream)
428 err = lx_buffer_ask(chip, 0, is_capture, &needed, &freed,
430 dev_dbg(chip->card->dev, "starting: needed %d, freed %d\n",
433 err = lx_buffer_give(chip, 0, is_capture, period_bytes,
437 dev_dbg(chip->card->dev, "starting: buffer index %x on 0x%lx (%d bytes)\n",
442 err = lx_buffer_ask(chip, 0, is_capture, &needed, &freed, size_array);
443 dev_dbg(chip->card->dev, "starting: needed %d, freed %d\n", needed, freed);
445 dev_dbg(chip->card->dev, "starting: starting stream\n");
446 err = lx_stream_start(chip, 0, is_capture);
448 dev_err(chip->card->dev, "couldn't start stream\n");
455 static void lx_trigger_stop(struct lx6464es *chip, struct lx_stream *lx_stream)
460 dev_dbg(chip->card->dev, "stopping: stopping stream\n");
461 err = lx_stream_stop(chip, 0, is_capture);
463 dev_err(chip->card->dev, "couldn't stop stream\n");
469 static void lx_trigger_dispatch_stream(struct lx6464es *chip,
474 lx_trigger_start(chip, lx_stream);
478 lx_trigger_stop(chip, lx_stream);
486 static int lx_pcm_trigger_dispatch(struct lx6464es *chip,
491 mutex_lock(&chip->lock);
506 lx_trigger_dispatch_stream(chip, &chip->capture_stream);
507 lx_trigger_dispatch_stream(chip, &chip->playback_stream);
510 mutex_unlock(&chip->lock);
517 struct lx6464es *chip = snd_pcm_substream_chip(substream);
519 struct lx_stream *stream = is_capture ? &chip->capture_stream :
520 &chip->playback_stream;
522 dev_dbg(chip->card->dev, "->lx_pcm_trigger\n");
524 return lx_pcm_trigger_dispatch(chip, stream, cmd);
529 struct lx6464es *chip = card->private_data;
531 lx_irq_disable(chip);
535 static int lx_init_xilinx_reset(struct lx6464es *chip)
538 u32 plx_reg = lx_plx_reg_read(chip, ePLX_CHIPSC);
540 dev_dbg(chip->card->dev, "->lx_init_xilinx_reset\n");
545 lx_plx_reg_write(chip, ePLX_CHIPSC, plx_reg);
548 lx_plx_reg_write(chip, ePLX_MBOX3, 0);
552 lx_plx_reg_write(chip, ePLX_CHIPSC, plx_reg);
558 reg_mbox3 = lx_plx_reg_read(chip, ePLX_MBOX3);
560 dev_dbg(chip->card->dev, "xilinx reset done\n");
561 dev_dbg(chip->card->dev, "xilinx took %d loops\n", i);
569 lx_dsp_reg_write(chip, eReg_CSM, 0);
577 static int lx_init_xilinx_test(struct lx6464es *chip)
581 dev_dbg(chip->card->dev, "->lx_init_xilinx_test\n");
584 lx_dsp_reg_write(chip, eReg_CSM, 0);
586 reg = lx_dsp_reg_read(chip, eReg_CSM);
589 dev_err(chip->card->dev, "Problem: Reg_CSM %x.\n", reg);
592 lx_plx_reg_write(chip, ePLX_PCICR, 1);
594 reg = lx_dsp_reg_read(chip, eReg_CSM);
596 dev_err(chip->card->dev, "Error: Reg_CSM %x.\n", reg);
601 dev_dbg(chip->card->dev, "Xilinx/MicroBlaze access test successful\n");
607 static int lx_init_ethersound_config(struct lx6464es *chip)
610 u32 orig_conf_es = lx_dsp_reg_read(chip, eReg_CONFES);
618 dev_dbg(chip->card->dev, "->lx_init_ethersound\n");
620 chip->freq_ratio = FREQ_RATIO_SINGLE_MODE;
628 lx_dsp_reg_write(chip, eReg_CONFES, conf_es);
631 if (lx_dsp_reg_read(chip, eReg_CSES) & 4) {
632 dev_dbg(chip->card->dev, "ethersound initialized after %dms\n",
638 dev_warn(chip->card->dev,
643 dev_dbg(chip->card->dev, "ethersound initialized\n");
647 static int lx_init_get_version_features(struct lx6464es *chip)
653 dev_dbg(chip->card->dev, "->lx_init_get_version_features\n");
655 err = lx_dsp_get_version(chip, &dsp_version);
660 dev_info(chip->card->dev, "DSP version: V%02d.%02d #%d\n",
672 err = lx_dsp_get_clock_frequency(chip, &freq);
674 chip->board_sample_rate = freq;
675 dev_dbg(chip->card->dev, "actual clock frequency %d\n", freq);
677 dev_err(chip->card->dev, "DSP corrupted \n");
684 static int lx_set_granularity(struct lx6464es *chip, u32 gran)
689 dev_dbg(chip->card->dev, "->lx_set_granularity\n");
697 if (snapped_gran == chip->pcm_granularity)
700 err = lx_dsp_set_granularity(chip, snapped_gran);
702 dev_warn(chip->card->dev, "could not set granularity\n");
707 dev_err(chip->card->dev, "snapped blocksize to %d\n", snapped_gran);
709 dev_dbg(chip->card->dev, "set blocksize on board %d\n", snapped_gran);
710 chip->pcm_granularity = snapped_gran;
715 /* initialize and test the xilinx dsp chip */
716 static int lx_init_dsp(struct lx6464es *chip)
721 dev_dbg(chip->card->dev, "->lx_init_dsp\n");
723 dev_dbg(chip->card->dev, "initialize board\n");
724 err = lx_init_xilinx_reset(chip);
728 dev_dbg(chip->card->dev, "testing board\n");
729 err = lx_init_xilinx_test(chip);
733 dev_dbg(chip->card->dev, "initialize ethersound configuration\n");
734 err = lx_init_ethersound_config(chip);
738 lx_irq_enable(chip);
743 err = lx_dsp_get_mac(chip);
746 if (chip->mac_address[0] || chip->mac_address[1] || chip->mac_address[2] ||
747 chip->mac_address[3] || chip->mac_address[4] || chip->mac_address[5])
754 dev_dbg(chip->card->dev, "mac address ready read after: %dms\n", i);
755 dev_info(chip->card->dev,
757 chip->mac_address[0], chip->mac_address[1], chip->mac_address[2],
758 chip->mac_address[3], chip->mac_address[4], chip->mac_address[5]);
760 err = lx_init_get_version_features(chip);
764 lx_set_granularity(chip, MICROBLAZE_IBL_DEFAULT);
766 chip->playback_mute = 0;
791 static int lx_pcm_create(struct lx6464es *chip)
805 err = snd_pcm_new(chip->card, (char *)card_name, 0,
810 pcm->private_data = chip;
820 &chip->pci->dev, size, size);
822 chip->pcm = pcm;
823 chip->capture_stream.is_capture = 1;
841 struct lx6464es *chip = snd_kcontrol_chip(kcontrol);
842 ucontrol->value.integer.value[0] = chip->playback_mute;
849 struct lx6464es *chip = snd_kcontrol_chip(kcontrol);
851 int current_value = chip->playback_mute;
854 lx_level_unmute(chip, 0, !current_value);
855 chip->playback_mute = !current_value;
880 struct lx6464es *chip = entry->private_data;
883 err = lx_level_peaks(chip, 1, 64, levels);
895 err = lx_level_peaks(chip, 0, 64, levels);
908 static int lx_proc_create(struct snd_card *card, struct lx6464es *chip)
910 return snd_card_ro_proc_new(card, "levels", chip, lx_proc_levels_read);
917 struct lx6464es *chip = card->private_data;
937 chip->card = card;
938 chip->pci = pci;
939 chip->irq = -1;
942 mutex_init(&chip->lock);
943 mutex_init(&chip->msg_lock);
944 mutex_init(&chip->setup_mutex);
952 chip->port_plx = pci_resource_start(pci, 1);
953 chip->port_plx_remapped = devm_ioport_map(&pci->dev, chip->port_plx,
955 if (!chip->port_plx_remapped)
959 chip->port_dsp_bar = pcim_iomap(pci, 2, 0);
960 if (!chip->port_dsp_bar)
965 KBUILD_MODNAME, chip);
970 chip->irq = pci->irq;
971 card->sync_irq = chip->irq;
974 err = lx_init_dsp(chip);
980 err = lx_pcm_create(chip);
984 err = lx_proc_create(card, chip);
989 chip));
1001 struct lx6464es *chip;
1014 sizeof(*chip), &card);
1017 chip = card->private_data;
1027 chip->mac_address[3], chip->mac_address[4], chip->mac_address[5]);
1030 chip->mac_address[0], chip->mac_address[1], chip->mac_address[2],
1031 chip->mac_address[3], chip->mac_address[4], chip->mac_address[5]);
1034 card->shortname, chip->port_plx,
1035 chip->port_dsp_bar, chip->irq);
1041 dev_dbg(chip->card->dev, "initialization successful\n");