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

1 // SPDX-License-Identifier: GPL-2.0-or-later
12 #include "chip.h"
30 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
31 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for card */ variable
38 module_param_array(id, charp, NULL, 0444);
39 MODULE_PARM_DESC(id, "ID string for the 6fire sound device.");
45 static void usb6fire_chip_abort(struct sfire_chip *chip) in usb6fire_chip_abort() argument
47 if (chip) { in usb6fire_chip_abort()
48 if (chip->pcm) in usb6fire_chip_abort()
49 usb6fire_pcm_abort(chip); in usb6fire_chip_abort()
50 if (chip->midi) in usb6fire_chip_abort()
51 usb6fire_midi_abort(chip); in usb6fire_chip_abort()
52 if (chip->comm) in usb6fire_chip_abort()
53 usb6fire_comm_abort(chip); in usb6fire_chip_abort()
54 if (chip->control) in usb6fire_chip_abort()
55 usb6fire_control_abort(chip); in usb6fire_chip_abort()
56 if (chip->card) { in usb6fire_chip_abort()
57 snd_card_disconnect(chip->card); in usb6fire_chip_abort()
58 snd_card_free_when_closed(chip->card); in usb6fire_chip_abort()
59 chip->card = NULL; in usb6fire_chip_abort()
66 struct sfire_chip *chip = card->private_data; in usb6fire_card_free() local
68 if (chip) { in usb6fire_card_free()
69 if (chip->pcm) in usb6fire_card_free()
70 usb6fire_pcm_destroy(chip); in usb6fire_card_free()
71 if (chip->midi) in usb6fire_card_free()
72 usb6fire_midi_destroy(chip); in usb6fire_card_free()
73 if (chip->comm) in usb6fire_card_free()
74 usb6fire_comm_destroy(chip); in usb6fire_card_free()
75 if (chip->control) in usb6fire_card_free()
76 usb6fire_control_destroy(chip); in usb6fire_card_free()
85 struct sfire_chip *chip = NULL; in usb6fire_chip_probe() local
87 int regidx = -1; /* index in module parameter array */ in usb6fire_chip_probe()
95 chips[i]->intf_count++; in usb6fire_chip_probe()
104 dev_err(&intf->dev, "too many cards registered.\n"); in usb6fire_chip_probe()
105 return -ENODEV; in usb6fire_chip_probe()
119 dev_err(&intf->dev, "can't set first interface.\n"); in usb6fire_chip_probe()
120 return -EIO; in usb6fire_chip_probe()
122 ret = snd_card_new(&intf->dev, index[regidx], id[regidx], in usb6fire_chip_probe()
125 dev_err(&intf->dev, "cannot create alsa card.\n"); in usb6fire_chip_probe()
128 strcpy(card->driver, "6FireUSB"); in usb6fire_chip_probe()
129 strcpy(card->shortname, "TerraTec DMX6FireUSB"); in usb6fire_chip_probe()
130 sprintf(card->longname, "%s at %d:%d", card->shortname, in usb6fire_chip_probe()
131 device->bus->busnum, device->devnum); in usb6fire_chip_probe()
133 chip = card->private_data; in usb6fire_chip_probe()
134 chips[regidx] = chip; in usb6fire_chip_probe()
135 chip->dev = device; in usb6fire_chip_probe()
136 chip->regidx = regidx; in usb6fire_chip_probe()
137 chip->intf_count = 1; in usb6fire_chip_probe()
138 chip->card = card; in usb6fire_chip_probe()
139 card->private_free = usb6fire_card_free; 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()
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()
201 .name = "snd-usb-6fire",