Lines Matching +full:has +full:- +full:chip +full:- +full:id
16 #include "chip.h"
35 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
36 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for card */ variable
43 module_param_array(id, charp, NULL, 0444);
44 MODULE_PARM_DESC(id, "ID string for the 6fire sound device.");
50 static void usb6fire_chip_abort(struct sfire_chip *chip) in usb6fire_chip_abort() argument
52 if (chip) { in usb6fire_chip_abort()
53 if (chip->pcm) in usb6fire_chip_abort()
54 usb6fire_pcm_abort(chip); in usb6fire_chip_abort()
55 if (chip->midi) in usb6fire_chip_abort()
56 usb6fire_midi_abort(chip); in usb6fire_chip_abort()
57 if (chip->comm) in usb6fire_chip_abort()
58 usb6fire_comm_abort(chip); in usb6fire_chip_abort()
59 if (chip->control) in usb6fire_chip_abort()
60 usb6fire_control_abort(chip); in usb6fire_chip_abort()
61 if (chip->card) { in usb6fire_chip_abort()
62 snd_card_disconnect(chip->card); in usb6fire_chip_abort()
63 snd_card_free_when_closed(chip->card); in usb6fire_chip_abort()
64 chip->card = NULL; in usb6fire_chip_abort()
69 static void usb6fire_chip_destroy(struct sfire_chip *chip) in usb6fire_chip_destroy() argument
71 if (chip) { in usb6fire_chip_destroy()
72 if (chip->pcm) in usb6fire_chip_destroy()
73 usb6fire_pcm_destroy(chip); in usb6fire_chip_destroy()
74 if (chip->midi) in usb6fire_chip_destroy()
75 usb6fire_midi_destroy(chip); in usb6fire_chip_destroy()
76 if (chip->comm) in usb6fire_chip_destroy()
77 usb6fire_comm_destroy(chip); in usb6fire_chip_destroy()
78 if (chip->control) in usb6fire_chip_destroy()
79 usb6fire_control_destroy(chip); in usb6fire_chip_destroy()
80 if (chip->card) in usb6fire_chip_destroy()
81 snd_card_free(chip->card); in usb6fire_chip_destroy()
90 struct sfire_chip *chip = NULL; in usb6fire_chip_probe() local
92 int regidx = -1; /* index in module parameter array */ in usb6fire_chip_probe()
100 chips[i]->intf_count++; in usb6fire_chip_probe()
109 dev_err(&intf->dev, "too many cards registered.\n"); in usb6fire_chip_probe()
110 return -ENODEV; in usb6fire_chip_probe()
124 dev_err(&intf->dev, "can't set first interface.\n"); in usb6fire_chip_probe()
125 return -EIO; in usb6fire_chip_probe()
127 ret = snd_card_new(&intf->dev, index[regidx], id[regidx], in usb6fire_chip_probe()
130 dev_err(&intf->dev, "cannot create alsa card.\n"); in usb6fire_chip_probe()
133 strcpy(card->driver, "6FireUSB"); in usb6fire_chip_probe()
134 strcpy(card->shortname, "TerraTec DMX6FireUSB"); in usb6fire_chip_probe()
135 sprintf(card->longname, "%s at %d:%d", card->shortname, in usb6fire_chip_probe()
136 device->bus->busnum, device->devnum); in usb6fire_chip_probe()
138 chip = card->private_data; in usb6fire_chip_probe()
139 chips[regidx] = chip; in usb6fire_chip_probe()
140 chip->dev = device; in usb6fire_chip_probe()
141 chip->regidx = regidx; in usb6fire_chip_probe()
142 chip->intf_count = 1; in usb6fire_chip_probe()
143 chip->card = card; in usb6fire_chip_probe()
145 ret = usb6fire_comm_init(chip); in usb6fire_chip_probe()
149 ret = usb6fire_midi_init(chip); in usb6fire_chip_probe()
153 ret = usb6fire_pcm_init(chip); in usb6fire_chip_probe()
157 ret = usb6fire_control_init(chip); in usb6fire_chip_probe()
163 dev_err(&intf->dev, "cannot register card."); in usb6fire_chip_probe()
166 usb_set_intfdata(intf, chip); in usb6fire_chip_probe()
170 usb6fire_chip_destroy(chip); in usb6fire_chip_probe()
176 struct sfire_chip *chip; in usb6fire_chip_disconnect() local
178 chip = usb_get_intfdata(intf); in usb6fire_chip_disconnect()
179 if (chip) { /* if !chip, fw upload has been performed */ in usb6fire_chip_disconnect()
180 chip->intf_count--; in usb6fire_chip_disconnect()
181 if (!chip->intf_count) { in usb6fire_chip_disconnect()
183 devices[chip->regidx] = NULL; in usb6fire_chip_disconnect()
184 chips[chip->regidx] = NULL; in usb6fire_chip_disconnect()
187 chip->shutdown = true; in usb6fire_chip_disconnect()
188 usb6fire_chip_abort(chip); in usb6fire_chip_disconnect()
189 usb6fire_chip_destroy(chip); in usb6fire_chip_disconnect()
206 .name = "snd-usb-6fire",