fix(sync): match uvc descriptors to gadget speed
This commit is contained in:
parent
60a6cd1629
commit
fb9c7b9813
@ -505,7 +505,19 @@ EOF
|
|||||||
fi
|
fi
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
for s in fs hs ss; do
|
streaming_class_speeds=(fs)
|
||||||
|
control_class_speeds=(fs)
|
||||||
|
case "$MAX_SPEED" in
|
||||||
|
super-speed|super-speed-plus)
|
||||||
|
streaming_class_speeds+=(hs ss)
|
||||||
|
control_class_speeds+=(ss)
|
||||||
|
;;
|
||||||
|
high-speed)
|
||||||
|
streaming_class_speeds+=(hs)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for s in "${streaming_class_speeds[@]}"; do
|
||||||
mkdir -p "$F/streaming/class/$s"
|
mkdir -p "$F/streaming/class/$s"
|
||||||
pushd "$F/streaming/class/$s" >/dev/null
|
pushd "$F/streaming/class/$s" >/dev/null
|
||||||
ln -s ../../header/h h
|
ln -s ../../header/h h
|
||||||
@ -514,11 +526,12 @@ EOF
|
|||||||
|
|
||||||
# ── 4. Video‑Control interface ─────────────────────────────────────
|
# ── 4. Video‑Control interface ─────────────────────────────────────
|
||||||
mkdir -p "$F/control/header/h"
|
mkdir -p "$F/control/header/h"
|
||||||
# The kernel UVC gadget docs require direct symlinks at control/class/fs and
|
# The kernel UVC gadget docs make the control-speed links optional; only
|
||||||
# control/class/ss. High-speed control descriptors are not exposed here.
|
# advertise the descriptor sets that match the configured gadget speed.
|
||||||
pushd "$F/control" >/dev/null
|
pushd "$F/control" >/dev/null
|
||||||
ln -s header/h class/fs 2>/dev/null || true
|
for s in "${control_class_speeds[@]}"; do
|
||||||
ln -s header/h class/ss 2>/dev/null || true
|
ln -s header/h "class/$s" 2>/dev/null || true
|
||||||
|
done
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
if [[ -n $UVC_DISABLE_IRQ ]]; then
|
if [[ -n $UVC_DISABLE_IRQ ]]; then
|
||||||
|
|||||||
@ -43,8 +43,9 @@ fn core_script_skips_soft_connect_for_dwc2() {
|
|||||||
fn core_script_uses_kernel_doc_control_header_links() {
|
fn core_script_uses_kernel_doc_control_header_links() {
|
||||||
for expected in [
|
for expected in [
|
||||||
"pushd \"$F/control\" >/dev/null",
|
"pushd \"$F/control\" >/dev/null",
|
||||||
"ln -s header/h class/fs",
|
"ln -s header/h \"class/$s\"",
|
||||||
"ln -s header/h class/ss",
|
"control_class_speeds=(fs)",
|
||||||
|
"for s in \"${control_class_speeds[@]}\"; do",
|
||||||
] {
|
] {
|
||||||
assert!(
|
assert!(
|
||||||
CORE_SCRIPT.contains(expected),
|
CORE_SCRIPT.contains(expected),
|
||||||
@ -56,3 +57,23 @@ fn core_script_uses_kernel_doc_control_header_links() {
|
|||||||
"lesavka-core should not build the UVC control class as nested directories"
|
"lesavka-core should not build the UVC control class as nested directories"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn core_script_matches_uvc_descriptor_speeds_to_max_speed() {
|
||||||
|
for expected in [
|
||||||
|
"streaming_class_speeds=(fs)",
|
||||||
|
"control_class_speeds=(fs)",
|
||||||
|
"case \"$MAX_SPEED\" in",
|
||||||
|
"super-speed|super-speed-plus)",
|
||||||
|
"streaming_class_speeds+=(hs ss)",
|
||||||
|
"control_class_speeds+=(ss)",
|
||||||
|
"high-speed)",
|
||||||
|
"streaming_class_speeds+=(hs)",
|
||||||
|
"for s in \"${streaming_class_speeds[@]}\"; do",
|
||||||
|
] {
|
||||||
|
assert!(
|
||||||
|
CORE_SCRIPT.contains(expected),
|
||||||
|
"lesavka-core speed guard missing: {expected}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user