Revision 29664923725a384dc7e0f74af7c66e5ab7bb2a26 authored by Marco Giunta on 18 October 2021, 16:25:52 UTC, committed by Takashi Iwai on 19 October 2021, 06:07:01 UTC
When a Jieli Technology USB Webcam is connected, the video part works
well, but the mic sound is speeded up. On dmesg there are messages
about different rates from the runtime rates, warnings about volume
resolution and lastly, the log is filled, every 5 seconds, with
retire_capture_urb error messages.

The mic works only when ep packet size is set to wMaxPacketSize (normal
sound and no more retire_capture_urb error messages). Skipping reading
sample rate, fixes the messages about different rates and forcing a volume
resolution, fixes warnings about volume range. I have arbitrarily choosed
the value (16): I read in a comment that there should be no more than 255
levels, so 4096 (max volume) / 16 = 0-255.

Signed-off-by: Marco Giunta <giun7a@gmail.com>
Link: https://lore.kernel.org/r/20211018162552.12082-1-giun7a@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent eadeb06
Raw File
test_sort.c
// SPDX-License-Identifier: GPL-2.0-only

#include <kunit/test.h>

#include <linux/sort.h>
#include <linux/slab.h>
#include <linux/module.h>

/* a simple boot-time regression test */

#define TEST_LEN 1000

static int cmpint(const void *a, const void *b)
{
	return *(int *)a - *(int *)b;
}

static void test_sort(struct kunit *test)
{
	int *a, i, r = 1;

	a = kunit_kmalloc_array(test, TEST_LEN, sizeof(*a), GFP_KERNEL);
	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, a);

	for (i = 0; i < TEST_LEN; i++) {
		r = (r * 725861) % 6599;
		a[i] = r;
	}

	sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);

	for (i = 0; i < TEST_LEN-1; i++)
		KUNIT_ASSERT_LE(test, a[i], a[i + 1]);
}

static struct kunit_case sort_test_cases[] = {
	KUNIT_CASE(test_sort),
	{}
};

static struct kunit_suite sort_test_suite = {
	.name = "lib_sort",
	.test_cases = sort_test_cases,
};

kunit_test_suites(&sort_test_suite);

MODULE_LICENSE("GPL");
back to top