• Home
  • Raw
  • Download

Lines Matching +full:revision +full:- +full:id2

1 // SPDX-License-Identifier: GPL-2.0-or-later
41 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
45 static bool isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
54 static int joystick_dac[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 29};
55 /* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
57 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
61 #define PFX "interwave-stb: "
63 #define INTERWAVE_PNP_DRIVER "interwave-stb"
84 MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver.");
93 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver…
154 unsigned long port = bus->private_value; in snd_interwave_i2c_setlines()
157 printk(KERN_DEBUG "i2c_setlines - 0x%lx <- %i,%i\n", port, ctrl, data); in snd_interwave_i2c_setlines()
165 unsigned long port = bus->private_value; in snd_interwave_i2c_getclockline()
170 printk(KERN_DEBUG "i2c_getclockline - 0x%lx -> %i\n", port, res); in snd_interwave_i2c_getclockline()
177 unsigned long port = bus->private_value; in snd_interwave_i2c_getdataline()
184 printk(KERN_DEBUG "i2c_getdataline - 0x%lx -> %i\n", port, res); in snd_interwave_i2c_getdataline()
201 struct snd_card *card = iwcard->card; in snd_interwave_detect_stb()
209 if (gus->gf1.port == 0x250) { in snd_interwave_detect_stb()
213 if ((iwcard->i2c_res = request_region(port, 1, "InterWave (I2C bus)")) != NULL) in snd_interwave_detect_stb()
218 iwcard->i2c_res = request_region(port, 1, "InterWave (I2C bus)"); in snd_interwave_detect_stb()
220 if (iwcard->i2c_res == NULL) { in snd_interwave_detect_stb()
222 return -ENODEV; in snd_interwave_detect_stb()
225 sprintf(name, "InterWave-%i", card->number); in snd_interwave_detect_stb()
228 bus->private_value = port; in snd_interwave_detect_stb()
229 bus->hw_ops.bit = &snd_interwave_i2c_bit_ops; in snd_interwave_detect_stb()
251 snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d); in snd_interwave_detect()
252 return -ENODEV; in snd_interwave_detect()
258 snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d); in snd_interwave_detect()
259 return -ENODEV; in snd_interwave_detect()
261 spin_lock_irqsave(&gus->reg_lock, flags); in snd_interwave_detect()
266 spin_unlock_irqrestore(&gus->reg_lock, flags); in snd_interwave_detect()
267 snd_printdd("[0x%lx] InterWave check - rev1=0x%x, rev2=0x%x\n", gus->gf1.port, rev1, rev2); in snd_interwave_detect()
270 snd_printdd("[0x%lx] InterWave check - passed\n", gus->gf1.port); in snd_interwave_detect()
271 gus->interwave = 1; in snd_interwave_detect()
272 strcpy(gus->card->shortname, "AMD InterWave"); in snd_interwave_detect()
273 gus->revision = rev1 >> 4; in snd_interwave_detect()
280 snd_printdd("[0x%lx] InterWave check - failed\n", gus->gf1.port); in snd_interwave_detect()
281 return -ENODEV; in snd_interwave_detect()
292 if (inb(iwcard->gus_status_reg)) { in snd_interwave_interrupt()
294 snd_gus_interrupt(irq, iwcard->gus); in snd_interwave_interrupt()
297 if (inb(iwcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */ in snd_interwave_interrupt()
299 snd_wss_interrupt(irq, iwcard->wss); in snd_interwave_interrupt()
302 } while (loop && --max > 0); in snd_interwave_interrupt()
410 if (i >= ARRAY_SIZE(lmc) && !gus->gf1.enh_mode) in snd_interwave_detect_memory()
413 gus->gf1.mem_alloc.banks_8[i].address = in snd_interwave_detect_memory()
414 gus->gf1.mem_alloc.banks_16[i].address = i << 22; in snd_interwave_detect_memory()
415 gus->gf1.mem_alloc.banks_8[i].size = in snd_interwave_detect_memory()
416 gus->gf1.mem_alloc.banks_16[i].size = psizes[i] << 18; in snd_interwave_detect_memory()
421 gus->gf1.memory = pages; in snd_interwave_detect_memory()
425 gus->gf1.rom_banks = 0; in snd_interwave_detect_memory()
426 gus->gf1.rom_memory = 0; in snd_interwave_detect_memory()
437 gus->gf1.rom_banks++; in snd_interwave_detect_memory()
438 gus->gf1.rom_present |= 1 << (bank_pos >> 22); in snd_interwave_detect_memory()
439 gus->gf1.rom_memory = snd_gf1_peek(gus, bank_pos + 40) | in snd_interwave_detect_memory()
445 if (gus->gf1.rom_memory > 0) { in snd_interwave_detect_memory()
446 if (gus->gf1.rom_banks == 1 && gus->gf1.rom_present == 8) in snd_interwave_detect_memory()
447 gus->card->type = SNDRV_CARD_TYPE_IW_DYNASONIC; in snd_interwave_detect_memory()
452 if (!gus->gf1.enh_mode) in snd_interwave_detect_memory()
461 spin_lock_irqsave(&gus->reg_lock, flags); in snd_interwave_init()
469 spin_unlock_irqrestore(&gus->reg_lock, flags); in snd_interwave_init()
470 gus->equal_irq = 1; in snd_interwave_init()
471 gus->codec_flag = 1; in snd_interwave_init()
472 gus->interwave = 1; in snd_interwave_init()
473 gus->max_flag = 1; in snd_interwave_init()
474 gus->joystick_dac = joystick_dac[dev]; in snd_interwave_init()
491 struct snd_card *card = chip->card; in snd_interwave_mixer()
492 struct snd_ctl_elem_id id1, id2; in snd_interwave_mixer() local
497 memset(&id2, 0, sizeof(id2)); in snd_interwave_mixer()
498 id1.iface = id2.iface = SNDRV_CTL_ELEM_IFACE_MIXER; in snd_interwave_mixer()
518 strcpy(id2.name, "Synth Playback Switch"); in snd_interwave_mixer()
519 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_mixer()
522 strcpy(id2.name, "Synth Playback Volume"); in snd_interwave_mixer()
523 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_mixer()
527 strcpy(id2.name, "CD Playback Switch"); in snd_interwave_mixer()
528 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_mixer()
531 strcpy(id2.name, "CD Playback Volume"); in snd_interwave_mixer()
532 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_mixer()
546 iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); in snd_interwave_pnp()
547 if (iwcard->dev == NULL) in snd_interwave_pnp()
548 return -EBUSY; in snd_interwave_pnp()
551 iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL); in snd_interwave_pnp()
552 if (iwcard->devtc == NULL) in snd_interwave_pnp()
553 return -EBUSY; in snd_interwave_pnp()
556 pdev = iwcard->dev; in snd_interwave_pnp()
566 return -ENOENT; in snd_interwave_pnp()
580 pdev = iwcard->devtc; in snd_interwave_pnp()
596 struct snd_interwave *iwcard = card->private_data; in snd_interwave_free()
601 release_and_free_resource(iwcard->i2c_res); in snd_interwave_free()
603 if (iwcard->irq >= 0) in snd_interwave_free()
604 free_irq(iwcard->irq, (void *)iwcard); in snd_interwave_free()
618 iwcard = card->private_data; in snd_interwave_card_new()
619 iwcard->card = card; in snd_interwave_card_new()
620 iwcard->irq = -1; in snd_interwave_card_new()
621 card->private_free = snd_interwave_free; in snd_interwave_card_new()
629 struct snd_interwave *iwcard = card->private_data; in snd_interwave_probe()
644 -xirq, xdma1, xdma2, in snd_interwave_probe()
656 iwcard->gus_status_reg = gus->gf1.reg_irqstat; in snd_interwave_probe()
657 iwcard->pcm_status_reg = gus->gf1.port + 0x10c + 2; in snd_interwave_probe()
667 return -EBUSY; in snd_interwave_probe()
669 iwcard->irq = xirq; in snd_interwave_probe()
670 card->sync_irq = iwcard->irq; in snd_interwave_probe()
673 gus->gf1.port + 0x10c, -1, xirq, in snd_interwave_probe()
687 sprintf(wss->pcm->name + strlen(wss->pcm->name), " rev %c", in snd_interwave_probe()
688 gus->revision + 'A'); in snd_interwave_probe()
689 strcat(wss->pcm->name, " (codec)"); in snd_interwave_probe()
710 struct snd_ctl_elem_id id1, id2; in snd_interwave_probe() local
712 memset(&id2, 0, sizeof(id2)); in snd_interwave_probe()
713 id1.iface = id2.iface = SNDRV_CTL_ELEM_IFACE_MIXER; in snd_interwave_probe()
715 strcpy(id2.name, id1.name); in snd_interwave_probe()
716 id2.index = 1; in snd_interwave_probe()
717 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_probe()
720 strcpy(id2.name, id1.name); in snd_interwave_probe()
721 if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) in snd_interwave_probe()
728 gus->uart_enable = midi[dev]; in snd_interwave_probe()
734 if (gus->gf1.rom_banks == 1 && gus->gf1.rom_present == 8) in snd_interwave_probe()
735 str = "Dynasonic 3-D"; in snd_interwave_probe()
739 strcpy(card->driver, str); in snd_interwave_probe()
740 strcpy(card->shortname, str); in snd_interwave_probe()
741 sprintf(card->longname, "%s at 0x%lx, irq %i, dma %d", in snd_interwave_probe()
743 gus->gf1.port, in snd_interwave_probe()
747 sprintf(card->longname + strlen(card->longname), "&%d", xdma2); in snd_interwave_probe()
753 iwcard->wss = wss; in snd_interwave_probe()
754 iwcard->gus = gus; in snd_interwave_probe()
791 static const int possible_irqs[] = {5, 11, 12, 9, 7, 15, 3, -1}; in snd_interwave_isa_probe()
792 static const int possible_dmas[] = {0, 1, 3, 5, 6, 7, -1}; in snd_interwave_isa_probe()
797 return -EBUSY; in snd_interwave_isa_probe()
803 return -EBUSY; in snd_interwave_isa_probe()
809 return -EBUSY; in snd_interwave_isa_probe()
857 return -ENODEV; in snd_interwave_pnp_detect()
859 res = snd_interwave_card_new(&pcard->card->dev, dev, &card); in snd_interwave_pnp_detect()
863 if ((res = snd_interwave_pnp(dev, card->private_data, pcard, pid)) < 0) { in snd_interwave_pnp_detect()