subs->channels, subs);
 }
 
-static int init_pitch_v1(struct snd_usb_audio *chip, int iface,
-                        struct usb_host_interface *alts,
+static int init_pitch_v1(struct snd_usb_audio *chip,
                         struct audioformat *fmt)
 {
        struct usb_device *dev = chip->dev;
        unsigned char data[1];
        int err;
 
-       if (get_iface_desc(alts)->bNumEndpoints < 1)
-               return -EINVAL;
-       ep = get_endpoint(alts, 0)->bEndpointAddress;
+       ep = fmt->endpoint;
 
        data[0] = 1;
        err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), UAC_SET_CUR,
                              data, sizeof(data));
        if (err < 0) {
                usb_audio_err(chip, "%d:%d: cannot set enable PITCH\n",
-                             iface, ep);
+                             fmt->iface, ep);
                return err;
        }
 
        return 0;
 }
 
-static int init_pitch_v2(struct snd_usb_audio *chip, int iface,
-                        struct usb_host_interface *alts,
+static int init_pitch_v2(struct snd_usb_audio *chip,
                         struct audioformat *fmt)
 {
        struct usb_device *dev = chip->dev;
                              data, sizeof(data));
        if (err < 0) {
                usb_audio_err(chip, "%d:%d: cannot set enable PITCH (v2)\n",
-                             iface, fmt->altsetting);
+                             fmt->iface, fmt->altsetting);
                return err;
        }
 
 /*
  * initialize the pitch control and sample rate
  */
-int snd_usb_init_pitch(struct snd_usb_audio *chip, int iface,
-                      struct usb_host_interface *alts,
+int snd_usb_init_pitch(struct snd_usb_audio *chip,
                       struct audioformat *fmt)
 {
        /* if endpoint doesn't have pitch control, bail out */
        switch (fmt->protocol) {
        case UAC_VERSION_1:
        default:
-               return init_pitch_v1(chip, iface, alts, fmt);
+               return init_pitch_v1(chip, fmt);
 
        case UAC_VERSION_2:
-               return init_pitch_v2(chip, iface, alts, fmt);
+               return init_pitch_v2(chip, fmt);
        }
 }
 
                return err;
 
        if (subs->need_setup_ep) {
-               err = snd_usb_init_pitch(chip, fmt->iface, alts, fmt);
+               err = snd_usb_init_pitch(chip, fmt);
                if (err < 0)
                        return err;
        }
 
 int snd_usb_pcm_suspend(struct snd_usb_stream *as);
 int snd_usb_pcm_resume(struct snd_usb_stream *as);
 
-int snd_usb_init_pitch(struct snd_usb_audio *chip, int iface,
-                      struct usb_host_interface *alts,
+int snd_usb_init_pitch(struct snd_usb_audio *chip,
                       struct audioformat *fmt);
 void snd_usb_preallocate_buffer(struct snd_usb_substream *subs);
 
 
        if (fp->maxpacksize == 0)
                fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
        usb_set_interface(chip->dev, fp->iface, 0);
-       snd_usb_init_pitch(chip, fp->iface, alts, fp);
+       snd_usb_init_pitch(chip, fp);
        snd_usb_init_sample_rate(chip, fp, fp->rate_max);
        return 0;
 
 
 
                /* try to set the interface... */
                usb_set_interface(chip->dev, iface_no, 0);
-               snd_usb_init_pitch(chip, iface_no, alts, fp);
+               snd_usb_init_pitch(chip, fp);
                snd_usb_init_sample_rate(chip, fp, fp->rate_max);
                usb_set_interface(chip->dev, iface_no, altno);
        }