summaryrefslogtreecommitdiff
path: root/sound/usb/usx2y/usbusx2y.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-05-17 15:15:44 +0200
committerTakashi Iwai <tiwai@suse.de>2021-05-17 16:05:29 +0200
commit2ac7a12ead2be2e31bd5e796455bef31e8516845 (patch)
treef420fe0c3956e53ea62e911cb72672c9a48abc3c /sound/usb/usx2y/usbusx2y.c
parentcae0cf651adccee2c3f376e78f30fbd788d0829f (diff)
ALSA: usx2y: Cleanup probe and disconnect callbacks
Minor code refactoring by merging the superfluous function calls. The functions were split in the past for covering pre-history USB driver code, but this is utterly useless. Link: https://lore.kernel.org/r/20210517131545.27252-11-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/usx2y/usbusx2y.c')
-rw-r--r--sound/usb/usx2y/usbusx2y.c107
1 files changed, 40 insertions, 67 deletions
diff --git a/sound/usb/usx2y/usbusx2y.c b/sound/usb/usx2y/usbusx2y.c
index 09ead00e395e..099bee662af6 100644
--- a/sound/usb/usx2y/usbusx2y.c
+++ b/sound/usb/usx2y/usbusx2y.c
@@ -148,7 +148,6 @@ MODULE_PARM_DESC(enable, "Enable "NAME_ALLCAPS".");
static int snd_usx2y_card_used[SNDRV_CARDS];
-static void usx2y_usb_disconnect(struct usb_device *usb_device, void *ptr);
static void snd_usx2y_card_private_free(struct snd_card *card);
static void usx2y_unlinkseq(struct snd_usx2y_async_seq *s);
@@ -390,66 +389,6 @@ static int usx2y_create_card(struct usb_device *device,
return 0;
}
-static int usx2y_usb_probe(struct usb_device *device,
- struct usb_interface *intf,
- const struct usb_device_id *device_id,
- struct snd_card **cardp)
-{
- int err;
- struct snd_card *card;
-
- *cardp = NULL;
- if (le16_to_cpu(device->descriptor.idVendor) != 0x1604 ||
- (le16_to_cpu(device->descriptor.idProduct) != USB_ID_US122 &&
- le16_to_cpu(device->descriptor.idProduct) != USB_ID_US224 &&
- le16_to_cpu(device->descriptor.idProduct) != USB_ID_US428))
- return -EINVAL;
-
- err = usx2y_create_card(device, intf, &card);
- if (err < 0)
- return err;
- err = usx2y_hwdep_new(card, device);
- if (err < 0)
- goto error;
- err = snd_card_register(card);
- if (err < 0)
- goto error;
- *cardp = card;
- return 0;
-
- error:
- snd_card_free(card);
- return err;
-}
-
-/*
- * new 2.5 USB kernel API
- */
-static int snd_usx2y_probe(struct usb_interface *intf, const struct usb_device_id *id)
-{
- struct snd_card *card;
- int err;
-
- err = usx2y_usb_probe(interface_to_usbdev(intf), intf, id, &card);
- if (err < 0)
- return err;
- dev_set_drvdata(&intf->dev, card);
- return 0;
-}
-
-static void snd_usx2y_disconnect(struct usb_interface *intf)
-{
- usx2y_usb_disconnect(interface_to_usbdev(intf),
- usb_get_intfdata(intf));
-}
-
-static struct usb_driver snd_usx2y_usb_driver = {
- .name = "snd-usb-usx2y",
- .probe = snd_usx2y_probe,
- .disconnect = snd_usx2y_disconnect,
- .id_table = snd_usx2y_usb_id_table,
-};
-
static void snd_usx2y_card_private_free(struct snd_card *card)
{
struct usx2ydev *usx2y = usx2y(card);
@@ -463,18 +402,15 @@ static void snd_usx2y_card_private_free(struct snd_card *card)
snd_usx2y_card_used[usx2y->card_index] = 0;
}
-/*
- * Frees the device.
- */
-static void usx2y_usb_disconnect(struct usb_device *device, void *ptr)
+static void snd_usx2y_disconnect(struct usb_interface *intf)
{
struct snd_card *card;
struct usx2ydev *usx2y;
struct list_head *p;
- if (!ptr)
+ card = usb_get_intfdata(intf);
+ if (!card)
return;
- card = ptr;
usx2y = usx2y(card);
usx2y->chip_status = USX2Y_STAT_CHIP_HUP;
usx2y_unlinkseq(&usx2y->as04);
@@ -490,4 +426,41 @@ static void usx2y_usb_disconnect(struct usb_device *device, void *ptr)
snd_card_free(card);
}
+static int snd_usx2y_probe(struct usb_interface *intf,
+ const struct usb_device_id *id)
+{
+ struct usb_device *device = interface_to_usbdev(intf);
+ struct snd_card *card;
+ int err;
+
+ if (le16_to_cpu(device->descriptor.idVendor) != 0x1604 ||
+ (le16_to_cpu(device->descriptor.idProduct) != USB_ID_US122 &&
+ le16_to_cpu(device->descriptor.idProduct) != USB_ID_US224 &&
+ le16_to_cpu(device->descriptor.idProduct) != USB_ID_US428))
+ return -EINVAL;
+
+ err = usx2y_create_card(device, intf, &card);
+ if (err < 0)
+ return err;
+ err = usx2y_hwdep_new(card, device);
+ if (err < 0)
+ goto error;
+ err = snd_card_register(card);
+ if (err < 0)
+ goto error;
+
+ dev_set_drvdata(&intf->dev, card);
+ return 0;
+
+ error:
+ snd_card_free(card);
+ return err;
+}
+
+static struct usb_driver snd_usx2y_usb_driver = {
+ .name = "snd-usb-usx2y",
+ .probe = snd_usx2y_probe,
+ .disconnect = snd_usx2y_disconnect,
+ .id_table = snd_usx2y_usb_id_table,
+};
module_usb_driver(snd_usx2y_usb_driver);