ALSA: usb-audio: scarlett2: Add usb_tx/rx functions
authorGeoffrey D. Bennett <g@b4.vu>
Mon, 21 Jun 2021 18:09:06 +0000 (03:39 +0930)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Jun 2021 19:35:58 +0000 (21:35 +0200)
Pull out snd_usb_ctl_msg() calls from scarlett2_usb() and put into
scarlett2_usb_tx() and scarlett2_usb_rx() functions.

Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
Link: https://lore.kernel.org/r/720d1d6f227fc8f5d7d6191a8de62db796940235.1624294591.git.g@b4.vu
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_scarlett_gen2.c

index 2e1937b072ee895906b957c8d05d379e400bdfb9..6b77582d8e3d73c5be4cf90983a2bae67cb6404f 100644 (file)
@@ -453,8 +453,8 @@ static int scarlett2_get_port_start_num(const struct scarlett2_ports *ports,
 #define SCARLETT2_USB_NOTIFY_MONITOR  0x00400000
 
 /* Commands for sending/receiving requests/responses */
-#define SCARLETT2_USB_VENDOR_SPECIFIC_CMD_REQ  2
-#define SCARLETT2_USB_VENDOR_SPECIFIC_CMD_RESP 3
+#define SCARLETT2_USB_CMD_REQ  2
+#define SCARLETT2_USB_CMD_RESP 3
 
 #define SCARLETT2_USB_INIT_SEQ  0x00000000
 #define SCARLETT2_USB_GET_METER 0x00001001
@@ -576,12 +576,31 @@ static void scarlett2_fill_request_header(struct scarlett2_data *private,
        req->pad = 0;
 }
 
+static int scarlett2_usb_tx(struct usb_device *dev, int interface,
+                           void *buf, u16 size)
+{
+       return snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0),
+                       SCARLETT2_USB_CMD_REQ,
+                       USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
+                       0, interface, buf, size);
+}
+
+static int scarlett2_usb_rx(struct usb_device *dev, int interface,
+                           u32 usb_req, void *buf, u16 size)
+{
+       return snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0),
+                       usb_req,
+                       USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,
+                       0, interface, buf, size);
+}
+
 /* Send a proprietary format request to the Scarlett interface */
 static int scarlett2_usb(
        struct usb_mixer_interface *mixer, u32 cmd,
        void *req_data, u16 req_size, void *resp_data, u16 resp_size)
 {
        struct scarlett2_data *private = mixer->private_data;
+       struct usb_device *dev = mixer->chip->dev;
        u16 req_buf_size = sizeof(struct scarlett2_usb_packet) + req_size;
        u16 resp_buf_size = sizeof(struct scarlett2_usb_packet) + resp_size;
        struct scarlett2_usb_packet *req, *resp = NULL;
@@ -608,14 +627,8 @@ static int scarlett2_usb(
        if (req_size)
                memcpy(req->data, req_data, req_size);
 
-       err = snd_usb_ctl_msg(mixer->chip->dev,
-                       usb_sndctrlpipe(mixer->chip->dev, 0),
-                       SCARLETT2_USB_VENDOR_SPECIFIC_CMD_REQ,
-                       USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
-                       0,
-                       private->bInterfaceNumber,
-                       req,
-                       req_buf_size);
+       err = scarlett2_usb_tx(dev, private->bInterfaceNumber,
+                              req, req_buf_size);
 
        if (err != req_buf_size) {
                usb_audio_err(
@@ -628,14 +641,9 @@ static int scarlett2_usb(
 
        /* send a second message to get the response */
 
-       err = snd_usb_ctl_msg(mixer->chip->dev,
-                       usb_rcvctrlpipe(mixer->chip->dev, 0),
-                       SCARLETT2_USB_VENDOR_SPECIFIC_CMD_RESP,
-                       USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,
-                       0,
-                       private->bInterfaceNumber,
-                       resp,
-                       resp_buf_size);
+       err = scarlett2_usb_rx(dev, private->bInterfaceNumber,
+                              SCARLETT2_USB_CMD_RESP,
+                              resp, resp_buf_size);
 
        /* validate the response */