From 47b04badb498da21adee22347ac333ad1be0a388 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 17 Dec 2020 10:18:56 +0100 Subject: [PATCH] Revert "ANDROID: sound: usb: Add vendor's hooking interface" This reverts commit 1eb185541df90c3f790676b9ac362683de3519f2. USB offload will end up coming back in a much different way in future releases, not in a sound-specific manner, but rather in a USB-specific way. So revert this change for now, it is no longer needed and is causing merge issues. Bug: 156315379 Cc: JaeHun Jung Signed-off-by: Greg Kroah-Hartman Change-Id: Ia65be0092d6b9ce395634cf3a01808188e06e379 --- sound/usb/card.c | 121 ------------------------------------------- sound/usb/card.h | 17 ------ sound/usb/clock.c | 5 -- sound/usb/pcm.c | 37 ------------- sound/usb/usbaudio.h | 46 ---------------- 5 files changed, 226 deletions(-) diff --git a/sound/usb/card.c b/sound/usb/card.c index f6195e8e4633..4457214a3ae6 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -112,119 +112,6 @@ static DEFINE_MUTEX(register_mutex); static struct snd_usb_audio *usb_chip[SNDRV_CARDS]; static struct usb_driver usb_audio_driver; -static struct snd_usb_audio_vendor_ops *usb_vendor_ops; - -int snd_vendor_set_ops(struct snd_usb_audio_vendor_ops *ops) -{ - if ((!ops->connect) || - (!ops->disconnect) || - (!ops->set_interface) || - (!ops->set_rate) || - (!ops->set_pcm_buf) || - (!ops->set_pcm_intf) || - (!ops->set_pcm_connection) || - (!ops->set_pcm_binterval) || - (!ops->usb_add_ctls)) - return -EINVAL; - - usb_vendor_ops = ops; - return 0; -} -EXPORT_SYMBOL_GPL(snd_vendor_set_ops); - -struct snd_usb_audio_vendor_ops *snd_vendor_get_ops(void) -{ - return usb_vendor_ops; -} - -static int snd_vendor_connect(struct usb_interface *intf) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->connect(intf); - return 0; -} - -static void snd_vendor_disconnect(struct usb_interface *intf) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - ops->disconnect(intf); -} - -int snd_vendor_set_interface(struct usb_device *udev, - struct usb_host_interface *intf, - int iface, int alt) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->set_interface(udev, intf, iface, alt); - return 0; -} - -int snd_vendor_set_rate(struct usb_interface *intf, int iface, int rate, - int alt) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->set_rate(intf, iface, rate, alt); - return 0; -} - -int snd_vendor_set_pcm_buf(struct usb_device *udev, int iface) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - ops->set_pcm_buf(udev, iface); - return 0; -} - -int snd_vendor_set_pcm_intf(struct usb_interface *intf, int iface, int alt, - int direction) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->set_pcm_intf(intf, iface, alt, direction); - return 0; -} - -int snd_vendor_set_pcm_connection(struct usb_device *udev, - enum snd_vendor_pcm_open_close onoff, - int direction) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->set_pcm_connection(udev, onoff, direction); - return 0; -} - -int snd_vendor_set_pcm_binterval(struct audioformat *fp, - struct audioformat *found, - int *cur_attr, int *attr) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->set_pcm_binterval(fp, found, cur_attr, attr); - return 0; -} - -static int snd_vendor_usb_add_ctls(struct snd_usb_audio *chip) -{ - struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops(); - - if (ops) - return ops->usb_add_ctls(chip); - return 0; -} - /* * disconnect streams * called from usb_audio_disconnect() @@ -830,10 +717,6 @@ static int usb_audio_probe(struct usb_interface *intf, if (err < 0) return err; - err = snd_vendor_connect(intf); - if (err) - return err; - /* * found a config. now register to ALSA */ @@ -895,8 +778,6 @@ static int usb_audio_probe(struct usb_interface *intf, dev_set_drvdata(&dev->dev, chip); - snd_vendor_usb_add_ctls(chip); - /* * For devices with more than one control interface, we assume the * first contains the audio controls. We might need a more specific @@ -982,8 +863,6 @@ static void usb_audio_disconnect(struct usb_interface *intf) card = chip->card; - snd_vendor_disconnect(intf); - mutex_lock(®ister_mutex); if (atomic_inc_return(&chip->shutdown) == 1) { struct snd_usb_stream *as; diff --git a/sound/usb/card.h b/sound/usb/card.h index a5d61cd160d5..5351d7183b1b 100644 --- a/sound/usb/card.h +++ b/sound/usb/card.h @@ -182,21 +182,4 @@ struct snd_usb_stream { struct list_head list; }; -int snd_vendor_set_ops(struct snd_usb_audio_vendor_ops *vendor_ops); -struct snd_usb_audio_vendor_ops *snd_vendor_get_ops(void); -int snd_vendor_set_interface(struct usb_device *udev, - struct usb_host_interface *alts, - int iface, int alt); -int snd_vendor_set_rate(struct usb_interface *intf, int iface, int rate, - int alt); -int snd_vendor_set_pcm_buf(struct usb_device *udev, int iface); -int snd_vendor_set_pcm_intf(struct usb_interface *intf, int iface, int alt, - int direction); -int snd_vendor_set_pcm_connection(struct usb_device *udev, - enum snd_vendor_pcm_open_close onoff, - int direction); -int snd_vendor_set_pcm_binterval(struct audioformat *fp, - struct audioformat *found, - int *cur_attr, int *attr); - #endif /* __USBAUDIO_CARD_H */ diff --git a/sound/usb/clock.c b/sound/usb/clock.c index 3d5603738d65..f3ca59005d91 100644 --- a/sound/usb/clock.c +++ b/sound/usb/clock.c @@ -642,13 +642,8 @@ static int set_sample_rate_v2v3(struct snd_usb_audio *chip, int iface, * interface is active. */ if (rate != prev_rate) { usb_set_interface(dev, iface, 0); - - snd_vendor_set_interface(dev, alts, iface, 0); - snd_usb_set_interface_quirk(dev); usb_set_interface(dev, iface, fmt->altsetting); - - snd_vendor_set_interface(dev, alts, iface, fmt->altsetting); snd_usb_set_interface_quirk(dev); } diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 30d12718c6c9..a860303cc522 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -134,8 +134,6 @@ static struct audioformat *find_format(struct snd_usb_substream *subs) found = fp; cur_attr = attr; } - - snd_vendor_set_pcm_binterval(fp, found, &cur_attr, &attr); } return found; } @@ -590,10 +588,6 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) } dev_dbg(&dev->dev, "setting usb interface %d:%d\n", fmt->iface, fmt->altsetting); - err = snd_vendor_set_pcm_intf(iface, fmt->iface, - fmt->altsetting, subs->direction); - if (err) - return err; snd_usb_set_interface_quirk(dev); } @@ -917,10 +911,6 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) struct usb_interface *iface; int ret; - ret = snd_vendor_set_pcm_buf(subs->dev, subs->cur_audiofmt->iface); - if (ret) - return ret; - if (! subs->cur_audiofmt) { dev_err(&subs->dev->dev, "no format is specified!\n"); return -ENXIO; @@ -954,17 +944,6 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) if (ret < 0) goto unlock; - if (snd_vendor_get_ops()) { - ret = snd_vendor_set_rate(iface, - subs->cur_audiofmt->iface, - subs->cur_rate, - subs->cur_audiofmt->altsetting); - if (!ret) { - subs->need_setup_ep = false; - goto unlock; - } - } - ret = configure_endpoint(subs); if (ret < 0) goto unlock; @@ -1374,11 +1353,6 @@ static int snd_usb_pcm_open(struct snd_pcm_substream *substream) struct snd_usb_substream *subs = &as->substream[direction]; int ret; - ret = snd_vendor_set_pcm_connection(subs->dev, SOUND_PCM_OPEN, - direction); - if (ret) - return ret; - subs->interface = -1; subs->altset_idx = 0; runtime->hw = snd_usb_hardware; @@ -1407,23 +1381,12 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream) struct snd_usb_substream *subs = &as->substream[direction]; int ret; - ret = snd_vendor_set_pcm_connection(subs->dev, SOUND_PCM_CLOSE, - direction); - if (ret) - return ret; - snd_media_stop_pipeline(subs); if (!as->chip->keep_iface && subs->interface >= 0 && !snd_usb_lock_shutdown(subs->stream->chip)) { usb_set_interface(subs->dev, subs->interface, 0); - ret = snd_vendor_set_pcm_intf(usb_ifnum_to_if(subs->dev, - subs->interface), - subs->interface, 0, - direction); - if (ret) - return ret; subs->interface = -1; ret = snd_usb_pcm_change_state(subs, UAC3_PD_STATE_D1); snd_usb_unlock_shutdown(subs->stream->chip); diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index be6e1cba7c41..0805b7f21272 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -126,50 +126,4 @@ void snd_usb_unlock_shutdown(struct snd_usb_audio *chip); extern bool snd_usb_use_vmalloc; extern bool snd_usb_skip_validation; -struct audioformat; - -enum snd_vendor_pcm_open_close { - SOUND_PCM_CLOSE = 0, - SOUND_PCM_OPEN, -}; - -/** - * struct snd_usb_audio_vendor_ops - function callbacks for USB audio accelerators - * @connect: called when a new interface is found - * @disconnect: called when an interface is removed - * @set_interface: called when an interface is initialized - * @set_rate: called when the rate is set - * @set_pcm_buf: called when the pcm buffer is set - * @set_pcm_intf: called when the pcm interface is set - * @set_pcm_connection: called when pcm is opened/closed - * @set_pcm_binterval: called when the pcm binterval is set - * @usb_add_ctls: called when USB controls are added - * - * Set of callbacks for some accelerated USB audio streaming hardware. - * - * TODO: make this USB host-controller specific, right now this only works for - * one USB controller in the system at a time, which is only realistic for - * self-contained systems like phones. - */ -struct snd_usb_audio_vendor_ops { - int (*connect)(struct usb_interface *intf); - void (*disconnect)(struct usb_interface *intf); - - int (*set_interface)(struct usb_device *udev, - struct usb_host_interface *alts, - int iface, int alt); - int (*set_rate)(struct usb_interface *intf, int iface, int rate, - int alt); - int (*set_pcm_buf)(struct usb_device *udev, int iface); - int (*set_pcm_intf)(struct usb_interface *intf, int iface, int alt, - int direction); - int (*set_pcm_connection)(struct usb_device *udev, - enum snd_vendor_pcm_open_close onoff, - int direction); - int (*set_pcm_binterval)(struct audioformat *fp, - struct audioformat *found, - int *cur_attr, int *attr); - int (*usb_add_ctls)(struct snd_usb_audio *chip); -}; - #endif /* __USBAUDIO_H */