fix(sync): match uvc descriptors to gadget speed
This commit is contained in:
parent
60a6cd1629
commit
fb9c7b9813
@ -505,7 +505,19 @@ EOF
|
||||
fi
|
||||
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"
|
||||
pushd "$F/streaming/class/$s" >/dev/null
|
||||
ln -s ../../header/h h
|
||||
@ -514,11 +526,12 @@ EOF
|
||||
|
||||
# ── 4. Video‑Control interface ─────────────────────────────────────
|
||||
mkdir -p "$F/control/header/h"
|
||||
# The kernel UVC gadget docs require direct symlinks at control/class/fs and
|
||||
# control/class/ss. High-speed control descriptors are not exposed here.
|
||||
# The kernel UVC gadget docs make the control-speed links optional; only
|
||||
# advertise the descriptor sets that match the configured gadget speed.
|
||||
pushd "$F/control" >/dev/null
|
||||
ln -s header/h class/fs 2>/dev/null || true
|
||||
ln -s header/h class/ss 2>/dev/null || true
|
||||
for s in "${control_class_speeds[@]}"; do
|
||||
ln -s header/h "class/$s" 2>/dev/null || true
|
||||
done
|
||||
popd >/dev/null
|
||||
|
||||
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() {
|
||||
for expected in [
|
||||
"pushd \"$F/control\" >/dev/null",
|
||||
"ln -s header/h class/fs",
|
||||
"ln -s header/h class/ss",
|
||||
"ln -s header/h \"class/$s\"",
|
||||
"control_class_speeds=(fs)",
|
||||
"for s in \"${control_class_speeds[@]}\"; do",
|
||||
] {
|
||||
assert!(
|
||||
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"
|
||||
);
|
||||
}
|
||||
|
||||
#[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