From fb27eab405d2d4c20d0a1f96788f3a006425049c Mon Sep 17 00:00:00 2001 From: serifpersia Date: Sat, 28 Jun 2025 15:16:20 +0200 Subject: [PATCH] improved driver stability & performance --- us144mkii.c | 191 ++++++++++++++------------------------------------- us144mkii.ko | Bin 405400 -> 408328 bytes 2 files changed, 52 insertions(+), 139 deletions(-) diff --git a/us144mkii.c b/us144mkii.c index 3a10c81..253189d 100644 --- a/us144mkii.c +++ b/us144mkii.c @@ -1,8 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 // (c) 2025 serifpersia -// -// Refactored based on the structure and best practices of the -// official Linux kernel snd-dummy driver. #include #include @@ -14,24 +11,18 @@ #include #include #include -#include // For SNDRV_DEFAULT_IDX/STR +#include MODULE_AUTHOR("serifpersia"); -MODULE_DESCRIPTION("ALSA Driver for TASCAM US-144MKII"); +MODULE_DESCRIPTION("ALSA Driver for TASCAM US-144MKII with Isochronous Feedback"); MODULE_LICENSE("GPL"); -#define DRIVER_NAME "us144mkii" +#define DRIVER_NAME "us144mkii_feedback" /*============================================================================*/ /* --- Module Parameters --- */ /*============================================================================*/ -// Inspired by snd-dummy, we use module parameters for configuration -// instead of hardcoded #defines. This allows changing settings at load time. -static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; -static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; -static bool enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; - /* * Latency Profile Cheatsheet: * Index | Profile | Feedback Interval @@ -42,7 +33,11 @@ static bool enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; * 3 | High | ~5ms * 4 | Highest | ~5ms */ -static int latency_profile = 1; // Default to "Low" + +static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; +static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; +static bool enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; +static int latency_profile = 2; module_param_array(index, int, NULL, 0444); MODULE_PARM_DESC(index, "Index value for the US-144MKII soundcard."); @@ -51,7 +46,7 @@ MODULE_PARM_DESC(id, "ID string for the US-144MKII soundcard."); module_param_array(enable, bool, NULL, 0444); MODULE_PARM_DESC(enable, "Enable this US-144MKII soundcard."); module_param(latency_profile, int, 0644); -MODULE_PARM_DESC(latency_profile, "Latency profile (0-4, default 1=Low)."); +MODULE_PARM_DESC(latency_profile, "Latency profile (0-4, default 1=Low). See code for details."); /*============================================================================*/ @@ -66,12 +61,10 @@ MODULE_PARM_DESC(latency_profile, "Latency profile (0-4, default 1=Low)."); #define EP_PLAYBACK_FEEDBACK 0x81 // Isochronous IN for playback feedback #define EP_CAPTURE_DATA 0x86 // Isochronous IN for capture data -// USB Control Request Types +// USB Control Request Types & Values #define RT_H2D_CLASS_EP 0x22 #define RT_H2D_VENDOR_DEV 0x40 #define RT_D2H_VENDOR_DEV 0xc0 - -// USB Control Requests #define UAC_SET_CUR 0x01 #define UAC_SAMPLING_FREQ_CONTROL 0x0100 #define VENDOR_REQ_REGISTER_WRITE 65 @@ -80,20 +73,20 @@ MODULE_PARM_DESC(latency_profile, "Latency profile (0-4, default 1=Low)."); // URB Configuration #define NUM_PLAYBACK_URBS 8 #define NUM_FEEDBACK_URBS 4 -#define PLAYBACK_URB_ISO_PACKETS 40 +#define PLAYBACK_URB_ISO_PACKETS 8 // Each playback URB contains 8 packets (1ms of data) #define FEEDBACK_PACKET_SIZE 3 #define USB_CTRL_TIMEOUT_MS 1000 // Audio Format #define BYTES_PER_SAMPLE 3 #define ALSA_CHANNELS 2 -#define DEVICE_CHANNELS 4 // Device sends/receives 4 channels, we only use 2 +#define DEVICE_CHANNELS 4 #define ALSA_BYTES_PER_FRAME (ALSA_CHANNELS * BYTES_PER_SAMPLE) #define DEVICE_BYTES_PER_FRAME (DEVICE_CHANNELS * BYTES_PER_SAMPLE) +// The circular buffer that holds upcoming packet sizes determined by feedback. #define FEEDBACK_ACCUMULATOR_SIZE 128 -// Forward declaration of the main driver struct static struct usb_driver tascam_alsa_driver; // Per-card state structure @@ -104,10 +97,12 @@ struct tascam_card { struct snd_card *card; struct snd_pcm *pcm; + // Playback state struct snd_pcm_substream *playback_substream; struct urb *playback_urbs[NUM_PLAYBACK_URBS]; size_t playback_urb_alloc_size; + // Feedback state struct urb *feedback_urbs[NUM_FEEDBACK_URBS]; size_t feedback_urb_alloc_size; unsigned int feedback_urb_packets; @@ -117,19 +112,19 @@ struct tascam_card { // This buffer stores the upcoming packet sizes determined by the feedback mechanism. unsigned int feedback_accumulator_pattern[FEEDBACK_ACCUMULATOR_SIZE]; - unsigned int feedback_pattern_out_idx; // Read index for playback - unsigned int feedback_pattern_in_idx; // Write index from feedback + unsigned int feedback_pattern_out_idx; // Read index for playback URBs + unsigned int feedback_pattern_in_idx; // Write index from feedback URBs - // Playback position tracking + // Position tracking snd_pcm_uframes_t driver_playback_pos; // Position in the ALSA ring buffer - u64 playback_frames_consumed; // Total frames consumed by hardware + u64 playback_frames_consumed; // Total frames consumed by hardware (master clock) u64 last_period_pos; // Last reported period boundary // Rate-dependent feedback patterns and values const unsigned int (*feedback_patterns)[8]; unsigned int feedback_base_value; unsigned int feedback_max_value; - unsigned int feedback_urb_skip_count; // Initial URBs to skip to stabilize + unsigned int feedback_urb_skip_count; // Initial URBs to skip to let feedback stabilize }; // These patterns are crucial for the isochronous feedback loop. The device @@ -163,11 +158,8 @@ static const unsigned int patterns_44khz[5][8] = { /* --- Forward Declarations --- */ /*============================================================================*/ -// URB Helpers static void tascam_free_urbs(struct tascam_card *tascam); static int tascam_alloc_urbs(struct tascam_card *tascam); - -// PCM Operations static int tascam_pcm_open(struct snd_pcm_substream *substream); static int tascam_pcm_close(struct snd_pcm_substream *substream); static int tascam_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params); @@ -175,12 +167,8 @@ static int tascam_pcm_hw_free(struct snd_pcm_substream *substream); static int tascam_pcm_prepare(struct snd_pcm_substream *substream); static int tascam_pcm_trigger(struct snd_pcm_substream *substream, int cmd); static snd_pcm_uframes_t tascam_pcm_pointer(struct snd_pcm_substream *substream); - -// URB Completion Handlers static void playback_urb_complete(struct urb *urb); static void feedback_urb_complete(struct urb *urb); - -// Probe/Disconnect static int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int rate); static int tascam_create_pcm(struct tascam_card *tascam); static int tascam_probe(struct usb_interface *intf, const struct usb_device_id *id); @@ -206,8 +194,8 @@ static const struct snd_pcm_hardware tascam_pcm_hw = { .channels_min = 2, .channels_max = 2, .buffer_bytes_max = 1024 * 1024, - .period_bytes_min = 64, - .period_bytes_max = 64 * 1024, + .period_bytes_min = 384, // 64 frames * 6 bytes/frame + .period_bytes_max = 12288, // 2048 frames * 6 bytes/frame .periods_min = 2, .periods_max = 1024, }; @@ -228,7 +216,6 @@ static struct snd_pcm_ops tascam_playback_ops = { .pointer = tascam_pcm_pointer, }; -// Stub for capture - not implemented. static int tascam_capture_open_stub(struct snd_pcm_substream *substream) { return -ENODEV; } static int tascam_capture_close_stub(struct snd_pcm_substream *substream) { return 0; } static struct snd_pcm_ops tascam_capture_ops = { @@ -238,16 +225,9 @@ static struct snd_pcm_ops tascam_capture_ops = { /*============================================================================*/ -/* --- URB Allocation and Cleanup Helpers --- */ +/* --- URB Allocation and Cleanup --- */ /*============================================================================*/ -/** - * tascam_free_urbs - Free all allocated URBs and their buffers. - * @tascam: The card instance. - * - * This function is the counterpart to tascam_alloc_urbs and is called - * on PCM close or in case of an allocation error. - */ static void tascam_free_urbs(struct tascam_card *tascam) { int i; @@ -277,22 +257,14 @@ static void tascam_free_urbs(struct tascam_card *tascam) } } -/** - * tascam_alloc_urbs - Allocate and initialize all playback and feedback URBs. - * @tascam: The card instance. - * - * This function centralizes all URB allocation logic, making the pcm_open - * function much cleaner. - * - * Returns 0 on success, or a negative error code. - */ static int tascam_alloc_urbs(struct tascam_card *tascam) { int i, j; size_t max_frames_per_packet, max_packet_size; - // --- 1. Allocate Playback URBs --- - max_frames_per_packet = (96000 / 8000) + 2; // Max possible frames in a packet + // --- Allocate Playback URBs --- + // Since packet size is variable, we must allocate for the worst case. + max_frames_per_packet = (96000 / 8000) + 2; // Max frames at 96kHz + safety margin max_packet_size = max_frames_per_packet * DEVICE_BYTES_PER_FRAME; tascam->playback_urb_alloc_size = max_packet_size * PLAYBACK_URB_ISO_PACKETS; @@ -303,14 +275,12 @@ static int tascam_alloc_urbs(struct tascam_card *tascam) for (i = 0; i < NUM_PLAYBACK_URBS; i++) { struct urb *urb = usb_alloc_urb(PLAYBACK_URB_ISO_PACKETS, GFP_KERNEL); - if (!urb) - goto error; + if (!urb) goto error; tascam->playback_urbs[i] = urb; urb->transfer_buffer = usb_alloc_coherent(tascam->dev, tascam->playback_urb_alloc_size, GFP_KERNEL, &urb->transfer_dma); - if (!urb->transfer_buffer) - goto error; + if (!urb->transfer_buffer) goto error; urb->dev = tascam->dev; urb->pipe = usb_sndisocpipe(tascam->dev, EP_AUDIO_OUT); @@ -321,25 +291,23 @@ static int tascam_alloc_urbs(struct tascam_card *tascam) urb->number_of_packets = PLAYBACK_URB_ISO_PACKETS; } - // --- 2. Allocate Feedback URBs --- + // --- Allocate Feedback URBs --- tascam->feedback_urb_packets = latency_profile_packets[latency_profile]; tascam->feedback_urb_alloc_size = FEEDBACK_PACKET_SIZE * tascam->feedback_urb_packets; for (i = 0; i < NUM_FEEDBACK_URBS; i++) { struct urb *f_urb = usb_alloc_urb(tascam->feedback_urb_packets, GFP_KERNEL); - if (!f_urb) - goto error; + if (!f_urb) goto error; tascam->feedback_urbs[i] = f_urb; f_urb->transfer_buffer = usb_alloc_coherent(tascam->dev, tascam->feedback_urb_alloc_size, GFP_KERNEL, &f_urb->transfer_dma); - if (!f_urb->transfer_buffer) - goto error; + if (!f_urb->transfer_buffer) goto error; f_urb->dev = tascam->dev; f_urb->pipe = usb_rcvisocpipe(tascam->dev, EP_PLAYBACK_FEEDBACK); f_urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; - f_urb->interval = 4; + f_urb->interval = 4; // Feedback interval is 1ms * 2^(4-1) = 8ms. This is a USB spec detail. f_urb->context = tascam; f_urb->complete = feedback_urb_complete; f_urb->number_of_packets = tascam->feedback_urb_packets; @@ -354,7 +322,7 @@ static int tascam_alloc_urbs(struct tascam_card *tascam) error: dev_err(tascam->card->dev, "Failed to allocate URBs\n"); - tascam_free_urbs(tascam); // Clean up partially allocated URBs + tascam_free_urbs(tascam); return -ENOMEM; } @@ -373,7 +341,6 @@ static int tascam_pcm_open(struct snd_pcm_substream *substream) tascam->playback_substream = substream; atomic_set(&tascam->playback_active, 0); - // Validate latency profile from module parameter if (latency_profile < 0 || latency_profile >= ARRAY_SIZE(latency_profile_packets)) { dev_warn(tascam->card->dev, "Invalid latency_profile %d, defaulting to 1\n", latency_profile); latency_profile = 1; @@ -406,7 +373,8 @@ static int tascam_pcm_hw_params(struct snd_pcm_substream *substream, if (err < 0) return err; - // Set the correct feedback patterns based on the selected sample rate + // Set the correct feedback patterns and values based on the selected sample rate. + // This is critical for the feedback loop to work. switch (rate) { case 44100: tascam->feedback_patterns = patterns_44khz; @@ -433,7 +401,6 @@ static int tascam_pcm_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } - // Send USB control messages to configure the hardware for the new rate err = us144mkii_configure_device_for_rate(tascam, rate); if (err < 0) { dev_err(tascam->card->dev, "Failed to set hardware rate to %u: %d\n", rate, err); @@ -465,7 +432,8 @@ static int tascam_pcm_prepare(struct snd_pcm_substream *substream) tascam->feedback_pattern_out_idx = 0; tascam->feedback_urb_skip_count = NUM_FEEDBACK_URBS * 2; // Skip first few to let feedback stabilize - // Pre-fill the feedback accumulator with nominal values for the rate + // Pre-fill the feedback accumulator with nominal values for the current rate. + // This gives the playback URBs a sensible starting point before real feedback kicks in. nominal_frames_per_packet = runtime->rate / 8000; for (i = 0; i < FEEDBACK_ACCUMULATOR_SIZE; i++) tascam->feedback_accumulator_pattern[i] = nominal_frames_per_packet; @@ -510,7 +478,6 @@ static int tascam_pcm_trigger(struct snd_pcm_substream *substream, int cmd) case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: atomic_set(&tascam->playback_active, 0); - // Killing URBs is handled by pcm_close/disconnect break; default: return -EINVAL; @@ -527,7 +494,6 @@ static int tascam_pcm_trigger(struct snd_pcm_substream *substream, int cmd) } } for (i = 0; i < NUM_PLAYBACK_URBS; i++) { - // The first playback URB completion will fill the buffer with real data err = usb_submit_urb(tascam->playback_urbs[i], GFP_KERNEL); if (err < 0) { dev_err(tascam->card->dev, "Failed to submit playback URB %d: %d\n", i, err); @@ -535,6 +501,12 @@ static int tascam_pcm_trigger(struct snd_pcm_substream *substream, int cmd) return err; } } + } else { + // On stop, kill all URBs to cease all USB traffic + for (i = 0; i < NUM_PLAYBACK_URBS; i++) + usb_kill_urb(tascam->playback_urbs[i]); + for (i = 0; i < NUM_FEEDBACK_URBS; i++) + usb_kill_urb(tascam->feedback_urbs[i]); } return 0; } @@ -548,8 +520,8 @@ static snd_pcm_uframes_t tascam_pcm_pointer(struct snd_pcm_substream *substream) if (!atomic_read(&tascam->playback_active)) return 0; - // The pointer is the total frames consumed by the "hardware", - // modulo the buffer size. + // The pointer is the total frames consumed by the "hardware", modulo the buffer size. + // This value is now updated by the feedback URB, which is the master clock. pos = tascam->playback_frames_consumed; return runtime ? div_u64(pos, 1) % runtime->buffer_size : 0; } @@ -559,15 +531,6 @@ static snd_pcm_uframes_t tascam_pcm_pointer(struct snd_pcm_substream *substream) /* --- URB Completion Handlers --- */ /*============================================================================*/ -/** - * playback_urb_complete - Completion handler for audio OUT URBs. - * @urb: The completed URB. - * - * This function is called when a playback URB has been sent to the device. - * Its job is to refill the URB with the next chunk of audio data from the - * ALSA ring buffer and resubmit it. The size of each packet within the URB - * is determined by the feedback mechanism. - */ static void playback_urb_complete(struct urb *urb) { struct tascam_card *tascam = urb->context; @@ -602,7 +565,6 @@ static void playback_urb_complete(struct urb *urb) tascam->feedback_pattern_out_idx = (tascam->feedback_pattern_out_idx + 1) % FEEDBACK_ACCUMULATOR_SIZE; bytes_for_packet = frames_for_packet * DEVICE_BYTES_PER_FRAME; - // Safety check against buffer overflow if ((urb_total_bytes + bytes_for_packet) > tascam->playback_urb_alloc_size) { urb->iso_frame_desc[i].length = 0; urb->iso_frame_desc[i].offset = urb_total_bytes; @@ -614,15 +576,13 @@ static void playback_urb_complete(struct urb *urb) size_t alsa_pos_bytes = frames_to_bytes(runtime, tascam->driver_playback_pos); char *alsa_frame_ptr = runtime->dma_area + alsa_pos_bytes; - // Copy the 2 channels of ALSA data memcpy(urb_buf_ptr, alsa_frame_ptr, ALSA_BYTES_PER_FRAME); - // Zero out the remaining 2 unused channels for the device memset(urb_buf_ptr + ALSA_BYTES_PER_FRAME, 0, DEVICE_BYTES_PER_FRAME - ALSA_BYTES_PER_FRAME); urb_buf_ptr += DEVICE_BYTES_PER_FRAME; tascam->driver_playback_pos++; if (tascam->driver_playback_pos >= runtime->buffer_size) - tascam->driver_playback_pos = 0; // Wrap around + tascam->driver_playback_pos = 0; } urb->iso_frame_desc[i].offset = urb_total_bytes; @@ -634,7 +594,6 @@ static void playback_urb_complete(struct urb *urb) urb->transfer_buffer_length = urb_total_bytes; - // Resubmit the URB to keep the audio flowing if (atomic_read(&tascam->playback_active)) { urb->dev = tascam->dev; ret = usb_submit_urb(urb, GFP_ATOMIC); @@ -643,16 +602,6 @@ static void playback_urb_complete(struct urb *urb) } } -/** - * feedback_urb_complete - Completion handler for feedback IN URBs. - * @urb: The completed URB. - * - * This is the heart of the driver's synchronization. The device sends back - * feedback values that indicate how full its internal buffer is. We use this - * value to look up a pattern of packet sizes to use for upcoming playback URBs. - * This function updates the shared `feedback_accumulator_pattern` buffer, which - * `playback_urb_complete` reads from. It also calls `snd_pcm_period_elapsed`. - */ static void feedback_urb_complete(struct urb *urb) { struct tascam_card *tascam = urb->context; @@ -680,7 +629,6 @@ static void feedback_urb_complete(struct urb *urb) spin_lock_irqsave(&tascam->lock, flags); - // Skip the first few URBs to allow the hardware's feedback loop to stabilize if (tascam->feedback_urb_skip_count > 0) { tascam->feedback_urb_skip_count--; goto unlock_and_resubmit; @@ -698,13 +646,12 @@ static void feedback_urb_complete(struct urb *urb) feedback_value = *((u8 *)urb->transfer_buffer + urb->iso_frame_desc[p].offset); - // Find the corresponding pattern for the received feedback value if (feedback_value >= tascam->feedback_base_value && feedback_value <= tascam->feedback_max_value) { pattern_index = feedback_value - tascam->feedback_base_value; pattern = tascam->feedback_patterns[pattern_index]; } else { - pattern = NULL; // Invalid feedback value, do nothing + pattern = NULL; } if (pattern) { @@ -729,7 +676,7 @@ static void feedback_urb_complete(struct urb *urb) // This is the crucial call to ALSA core to tell it we need more data snd_pcm_period_elapsed(substream); - goto resubmit; // Resubmit without re-acquiring the lock + goto resubmit; } unlock_and_resubmit: @@ -749,16 +696,6 @@ resubmit: /* --- Device Configuration and Probing --- */ /*============================================================================*/ -/** - * us144mkii_configure_device_for_rate - Send USB control messages to set the sample rate. - * @tascam: The card instance. - * @rate: The desired sample rate (e.g., 44100, 48000). - * - * This function contains the device-specific "magic" to change the hardware's - * operating sample rate. - * - * Returns 0 on success, or a negative error code. - */ static int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int rate) { struct usb_device *dev = tascam->dev; @@ -788,7 +725,6 @@ static int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int r memcpy(rate_payload_buf, current_payload_src, 3); - // This sequence of control messages is specific to the US-144MKII err = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), VENDOR_REQ_MODE_CONTROL, RT_H2D_VENDOR_DEV, 0x0010, 0x0000, NULL, 0, USB_CTRL_TIMEOUT_MS); if (err < 0) { goto cleanup_buf; } @@ -818,12 +754,6 @@ cleanup_buf: return err; } -/** - * tascam_create_pcm - Create and configure the ALSA PCM device. - * @tascam: The card instance. - * - * Returns 0 on success, or a negative error code. - */ static int tascam_create_pcm(struct tascam_card *tascam) { struct snd_pcm *pcm; @@ -836,17 +766,15 @@ static int tascam_create_pcm(struct tascam_card *tascam) } tascam->pcm = pcm; - // Set the implemented and stubbed-out PCM operations snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &tascam_playback_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &tascam_capture_ops); pcm->private_data = tascam; strscpy(pcm->name, "US-144MKII Audio", sizeof(pcm->name)); - // Pre-allocate buffer memory for the PCM device snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, tascam->dev->dev.parent, - 64 * 1024, + 64 * 1024, // A reasonable default pre-allocation size tascam_pcm_hw.buffer_bytes_max); return 0; } @@ -860,7 +788,7 @@ static void tascam_card_private_free(struct snd_card *card) } } -static int tascam_probe(struct usb_interface *intf, const struct usb_device_id *usb_id) // <-- THE FIX IS HERE +static int tascam_probe(struct usb_interface *intf, const struct usb_device_id *usb_id) { struct usb_device *dev = interface_to_usbdev(intf); struct tascam_card *tascam; @@ -870,10 +798,8 @@ static int tascam_probe(struct usb_interface *intf, const struct usb_device_id * dev_idx = intf->cur_altsetting->desc.bInterfaceNumber; if (dev_idx != 0) - return -ENODEV; // We only probe on the first interface + return -ENODEV; - // --- 1. Create ALSA Card --- - // The 'id' here now correctly refers to the global module parameter array err = snd_card_new(&intf->dev, index[dev_idx], id[dev_idx], THIS_MODULE, sizeof(struct tascam_card), &card); if (err < 0) { @@ -881,7 +807,6 @@ static int tascam_probe(struct usb_interface *intf, const struct usb_device_id * return err; } - // --- 2. Initialize private data struct --- tascam = card->private_data; tascam->card = card; tascam->dev = usb_get_dev(dev); @@ -899,7 +824,6 @@ static int tascam_probe(struct usb_interface *intf, const struct usb_device_id * le16_to_cpu(dev->descriptor.idProduct), dev->bus->bus_name); - // --- 3. Claim interfaces and set alt-settings --- tascam->iface1 = usb_ifnum_to_if(dev, 1); if (!tascam->iface1) { dev_err(&intf->dev, "Interface 1 not found.\n"); @@ -918,7 +842,6 @@ static int tascam_probe(struct usb_interface *intf, const struct usb_device_id * err = usb_set_interface(dev, 1, 1); if (err < 0) { dev_err(&intf->dev, "Set Alt Setting on Intf 1 failed: %d\n", err); goto release_iface1_and_free_card; } - // --- 4. Perform initial device handshake --- handshake_buf = kmalloc(1, GFP_KERNEL); if (!handshake_buf) { err = -ENOMEM; goto release_iface1_and_free_card; } err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), VENDOR_REQ_MODE_CONTROL, @@ -934,19 +857,16 @@ static int tascam_probe(struct usb_interface *intf, const struct usb_device_id * kfree(handshake_buf); handshake_buf = NULL; - // --- 5. Set a default sample rate on the device --- err = us144mkii_configure_device_for_rate(tascam, 48000); if (err < 0) { dev_err(&intf->dev, "Initial device configuration for 48kHz failed: %d\n", err); goto release_iface1_and_free_card; } - // --- 6. Create PCM device --- err = tascam_create_pcm(tascam); if (err < 0) goto release_iface1_and_free_card; - // --- 7. Register the card with ALSA --- err = snd_card_register(card); if (err < 0) { dev_err(&intf->dev, "Failed to register snd_card: %d\n", err); @@ -974,25 +894,19 @@ static void tascam_disconnect(struct usb_interface *intf) if (!tascam) return; - // We only trigger the full disconnect on interface 0 if (intf != tascam->iface0) return; dev_info(&intf->dev, "TASCAM US-144MKII disconnecting...\n"); - // This will prevent any more callbacks and stop active streams snd_card_disconnect(tascam->card); - // URBs are killed and freed via the pcm_close callback, which is - // triggered by snd_card_disconnect. - if (tascam->iface1) { usb_set_intfdata(tascam->iface1, NULL); usb_driver_release_interface(&tascam_alsa_driver, tascam->iface1); tascam->iface1 = NULL; } - // The card and its private_data will be freed when the last user closes it. snd_card_free_when_closed(tascam->card); } @@ -1003,7 +917,7 @@ static void tascam_disconnect(struct usb_interface *intf) static const struct usb_device_id tascam_id_table[] = { { USB_DEVICE(TASCAM_VID, TASCAM_PID) }, - { } // Terminating entry + { } }; MODULE_DEVICE_TABLE(usb, tascam_id_table); @@ -1014,5 +928,4 @@ static struct usb_driver tascam_alsa_driver = { .id_table = tascam_id_table, }; -// Use module_usb_driver macro to handle init/exit boilerplate module_usb_driver(tascam_alsa_driver); diff --git a/us144mkii.ko b/us144mkii.ko index 5bcd7c02a723a55386353f2caa244b67ec48ae2c..92ff5b22c2226f607213867ae0257b587c977aa7 100644 GIT binary patch delta 107001 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