Lines Matching +full:synth +full:- +full:master
1 // SPDX-License-Identifier: GPL-2.0-or-later
35 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
39 static bool isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
48 static int joystick_dac[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 29};
49 /* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
51 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
56 #define INTERWAVE_PNP_DRIVER "interwave-stb"
76 MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver.");
85 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver.");
146 unsigned long port = bus->private_value;
149 dev_dbg(bus->card->dev, "i2c_setlines - 0x%lx <- %i,%i\n", port, ctrl, data);
157 unsigned long port = bus->private_value;
162 dev_dbg(bus->card->dev, "i2c_getclockline - 0x%lx -> %i\n", port, res);
169 unsigned long port = bus->private_value;
176 dev_dbg(bus->card->dev, "i2c_getdataline - 0x%lx -> %i\n", port, res);
193 struct snd_card *card = iwcard->card;
201 if (gus->gf1.port == 0x250) {
205 iwcard->i2c_res = devm_request_region(card->dev, port, 1,
207 if (iwcard->i2c_res)
212 iwcard->i2c_res = devm_request_region(card->dev, port, 1,
215 if (iwcard->i2c_res == NULL) {
216 dev_err(card->dev, "interwave: can't grab i2c bus port\n");
217 return -ENODEV;
220 sprintf(name, "InterWave-%i", card->number);
224 bus->private_value = port;
225 bus->hw_ops.bit = &snd_interwave_i2c_bit_ops;
248 dev_dbg(gus->card->dev, "[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d);
249 return -ENODEV;
256 dev_dbg(gus->card->dev, "[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d);
257 return -ENODEV;
259 scoped_guard(spinlock_irqsave, &gus->reg_lock) {
265 dev_dbg(gus->card->dev,
266 "[0x%lx] InterWave check - rev1=0x%x, rev2=0x%x\n",
267 gus->gf1.port, rev1, rev2);
270 dev_dbg(gus->card->dev,
271 "[0x%lx] InterWave check - passed\n", gus->gf1.port);
272 gus->interwave = 1;
273 strscpy(gus->card->shortname, "AMD InterWave");
274 gus->revision = rev1 >> 4;
281 dev_dbg(gus->card->dev, "[0x%lx] InterWave check - failed\n", gus->gf1.port);
282 return -ENODEV;
293 if (inb(iwcard->gus_status_reg)) {
295 snd_gus_interrupt(irq, iwcard->gus);
298 if (inb(iwcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */
300 snd_wss_interrupt(irq, iwcard->wss);
303 } while (loop && --max > 0);
330 dev_dbg(gus->card->dev, "d = 0x%x, local = 0x%x, "
345 dev_dbg(gus->card->dev, "sizes: %i %i %i %i\n",
400 dev_dbg(gus->card->dev, "lmct = 0x%08x\n", lmct);
405 dev_dbg(gus->card->dev, "found !!! %i\n", i);
411 if (i >= ARRAY_SIZE(lmc) && !gus->gf1.enh_mode)
414 gus->gf1.mem_alloc.banks_8[i].address =
415 gus->gf1.mem_alloc.banks_16[i].address = i << 22;
416 gus->gf1.mem_alloc.banks_8[i].size =
417 gus->gf1.mem_alloc.banks_16[i].size = psizes[i] << 18;
422 gus->gf1.memory = pages;
426 gus->gf1.rom_banks = 0;
427 gus->gf1.rom_memory = 0;
438 gus->gf1.rom_banks++;
439 gus->gf1.rom_present |= 1 << (bank_pos >> 22);
440 gus->gf1.rom_memory = snd_gf1_peek(gus, bank_pos + 40) |
446 if (gus->gf1.rom_memory > 0) {
447 if (gus->gf1.rom_banks == 1 && gus->gf1.rom_present == 8)
448 gus->card->type = SNDRV_CARD_TYPE_IW_DYNASONIC;
453 if (!gus->gf1.enh_mode)
460 scoped_guard(spinlock_irqsave, &gus->reg_lock) {
469 gus->equal_irq = 1;
470 gus->codec_flag = 1;
471 gus->interwave = 1;
472 gus->max_flag = 1;
473 gus->joystick_dac = joystick_dac[dev];
478 WSS_DOUBLE("Master Playback Switch", 0,
480 WSS_DOUBLE("Master Playback Volume", 0,
490 struct snd_card *card = chip->card;
509 /* add new master and mic controls */
521 strscpy(id2.name, "Synth Playback Switch");
526 strscpy(id2.name, "Synth Playback Volume");
553 iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
554 if (iwcard->dev == NULL)
555 return -EBUSY;
558 iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL);
559 if (iwcard->devtc == NULL)
560 return -EBUSY;
562 /* Synth & Codec initialization */
563 pdev = iwcard->dev;
567 dev_err(&pdev->dev, "InterWave PnP configure failure (out of resources?)\n");
572 dev_err(&pdev->dev, "PnP configure failure (wrong ports)\n");
573 return -ENOENT;
580 dev_dbg(&pdev->dev,
585 dev_dbg(&pdev->dev,
590 pdev = iwcard->devtc;
594 dev_err(&pdev->dev,
599 dev_dbg(&pdev->dev, "isapnp IW: tone control port=0x%lx\n", port_tc[dev]);
616 iwcard = card->private_data;
617 iwcard->card = card;
618 iwcard->irq = -1;
626 return snd_gus_create(card, port[dev], -irq[dev], dma1[dev], dma2[dev],
634 struct snd_interwave *iwcard = card->private_data;
654 iwcard->gus_status_reg = gus->gf1.reg_irqstat;
655 iwcard->pcm_status_reg = gus->gf1.port + 0x10c + 2;
663 if (devm_request_irq(card->dev, xirq, snd_interwave_interrupt, 0,
665 dev_err(card->dev, "unable to grab IRQ %d\n", xirq);
666 return -EBUSY;
668 iwcard->irq = xirq;
669 card->sync_irq = iwcard->irq;
672 gus->gf1.port + 0x10c, -1, xirq,
686 sprintf(wss->pcm->name + strlen(wss->pcm->name), " rev %c",
687 gus->revision + 'A');
688 strcat(wss->pcm->name, " (codec)");
713 strscpy(id1.name, "Master Playback Switch");
719 strscpy(id1.name, "Master Playback Volume");
730 gus->uart_enable = midi[dev];
737 if (gus->gf1.rom_banks == 1 && gus->gf1.rom_present == 8)
738 str = "Dynasonic 3-D";
742 strscpy(card->driver, str);
743 strscpy(card->shortname, str);
744 sprintf(card->longname, "%s at 0x%lx, irq %i, dma %d",
746 gus->gf1.port,
750 sprintf(card->longname + strlen(card->longname), "&%d", xdma2);
756 iwcard->wss = wss;
757 iwcard->gus = gus;
779 static const int possible_irqs[] = {5, 11, 12, 9, 7, 15, 3, -1};
780 static const int possible_dmas[] = {0, 1, 3, 5, 6, 7, -1};
786 return -EBUSY;
793 return -EBUSY;
800 return -EBUSY;
854 return -ENODEV;
856 res = snd_interwave_card_new(&pcard->card->dev, dev, &card);
860 res = snd_interwave_pnp(dev, card->private_data, pcard, pid);