• Home
  • Raw
  • Download

Lines Matching +full:has +full:- +full:chip +full:- +full:id

1 // SPDX-License-Identifier: GPL-2.0-or-later
12 #include "chip.h"
31 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
32 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for card */ variable
39 module_param_array(id, charp, NULL, 0444);
40 MODULE_PARM_DESC(id, "ID string for the 6fire sound device.");
46 static void usb6fire_chip_abort(struct sfire_chip *chip) in usb6fire_chip_abort() argument
48 if (chip) { in usb6fire_chip_abort()
49 if (chip->pcm) in usb6fire_chip_abort()
50 usb6fire_pcm_abort(chip); in usb6fire_chip_abort()
51 if (chip->midi) in usb6fire_chip_abort()
52 usb6fire_midi_abort(chip); in usb6fire_chip_abort()
53 if (chip->comm) in usb6fire_chip_abort()
54 usb6fire_comm_abort(chip); in usb6fire_chip_abort()
55 if (chip->control) in usb6fire_chip_abort()
56 usb6fire_control_abort(chip); in usb6fire_chip_abort()
57 if (chip->card) { in usb6fire_chip_abort()
58 snd_card_disconnect(chip->card); in usb6fire_chip_abort()
59 snd_card_free_when_closed(chip->card); in usb6fire_chip_abort()
60 chip->card = NULL; in usb6fire_chip_abort()
65 static void usb6fire_chip_destroy(struct sfire_chip *chip) in usb6fire_chip_destroy() argument
67 if (chip) { in usb6fire_chip_destroy()
68 if (chip->pcm) in usb6fire_chip_destroy()
69 usb6fire_pcm_destroy(chip); in usb6fire_chip_destroy()
70 if (chip->midi) in usb6fire_chip_destroy()
71 usb6fire_midi_destroy(chip); in usb6fire_chip_destroy()
72 if (chip->comm) in usb6fire_chip_destroy()
73 usb6fire_comm_destroy(chip); in usb6fire_chip_destroy()
74 if (chip->control) in usb6fire_chip_destroy()
75 usb6fire_control_destroy(chip); in usb6fire_chip_destroy()
76 if (chip->card) in usb6fire_chip_destroy()
77 snd_card_free(chip->card); in usb6fire_chip_destroy()
86 struct sfire_chip *chip = NULL; in usb6fire_chip_probe() local
88 int regidx = -1; /* index in module parameter array */ in usb6fire_chip_probe()
96 chips[i]->intf_count++; in usb6fire_chip_probe()
105 dev_err(&intf->dev, "too many cards registered.\n"); in usb6fire_chip_probe()
106 return -ENODEV; in usb6fire_chip_probe()
120 dev_err(&intf->dev, "can't set first interface.\n"); in usb6fire_chip_probe()
121 return -EIO; in usb6fire_chip_probe()
123 ret = snd_card_new(&intf->dev, index[regidx], id[regidx], in usb6fire_chip_probe()
126 dev_err(&intf->dev, "cannot create alsa card.\n"); in usb6fire_chip_probe()
129 strcpy(card->driver, "6FireUSB"); in usb6fire_chip_probe()
130 strcpy(card->shortname, "TerraTec DMX6FireUSB"); in usb6fire_chip_probe()
131 sprintf(card->longname, "%s at %d:%d", card->shortname, in usb6fire_chip_probe()
132 device->bus->busnum, device->devnum); in usb6fire_chip_probe()
134 chip = card->private_data; in usb6fire_chip_probe()
135 chips[regidx] = chip; in usb6fire_chip_probe()
136 chip->dev = device; in usb6fire_chip_probe()
137 chip->regidx = regidx; in usb6fire_chip_probe()
138 chip->intf_count = 1; in usb6fire_chip_probe()
139 chip->card = card; in usb6fire_chip_probe()
141 ret = usb6fire_comm_init(chip); in usb6fire_chip_probe()
145 ret = usb6fire_midi_init(chip); in usb6fire_chip_probe()
149 ret = usb6fire_pcm_init(chip); in usb6fire_chip_probe()
153 ret = usb6fire_control_init(chip); in usb6fire_chip_probe()
159 dev_err(&intf->dev, "cannot register card."); in usb6fire_chip_probe()
162 usb_set_intfdata(intf, chip); in usb6fire_chip_probe()
166 usb6fire_chip_destroy(chip); in usb6fire_chip_probe()
172 struct sfire_chip *chip; in usb6fire_chip_disconnect() local
174 chip = usb_get_intfdata(intf); in usb6fire_chip_disconnect()
175 if (chip) { /* if !chip, fw upload has been performed */ in usb6fire_chip_disconnect()
176 chip->intf_count--; in usb6fire_chip_disconnect()
177 if (!chip->intf_count) { in usb6fire_chip_disconnect()
179 devices[chip->regidx] = NULL; in usb6fire_chip_disconnect()
180 chips[chip->regidx] = NULL; in usb6fire_chip_disconnect()
183 chip->shutdown = true; in usb6fire_chip_disconnect()
184 usb6fire_chip_abort(chip); in usb6fire_chip_disconnect()
185 usb6fire_chip_destroy(chip); in usb6fire_chip_disconnect()
202 .name = "snd-usb-6fire",