v4l2_subdev_..._passthrough(9)
π v4l2_subdev_get_frame_desc_passthrough β Kernel API Manual β¨
okay so bestie, welcome to the glow-up edition of the v4l2_subdev_get_frame_desc_passthrough(9) page π this one lives in the Kernel API Manual, and it's genuinely the chillest little helper in the whole media subsystem. no cap.
πΈ NAME πΈ
v4l2_subdev_get_frame_desc_passthrough β literally the helper that implements the subdev get_frame_desc operation for you in the simple passthrough cases π it's giving "I got you, bestie, you don't have to write this yourself."
β¨ SYNOPSIS β¨
int v4l2_subdev_get_frame_desc_passthrough (struct v4l2_subdev *sd ,
unsigned int pad , struct v4l2_mbus_frame_desc *fd );
π¦ ARGUMENTS π¦
sdβ the subdevice. the main character, honestly πpadβ the source pad index. it's a source pad specifically, don't come for me πfdβ the mbus frame desc. the whole point of the function, fr fr
π₯ DESCRIPTION π₯
okay so here's the vibe check on what this function actually does π«Ά
it locks the subdevice's active state, calls __v4l2_subdev_get_frame_desc_passthrough, and then unlocks the state. lock β do the thing β unlock, iconic behaviour, no notes π
you can assign this function directly as the .get_frame_desc callback in v4l2_subdev_pad_ops β but only for subdevices that pass streams through without modification β¨ like, if your subdev is just vibing and forwarding stuff untouched, this is your girl. slay.
if you're a driver that needs to do additional work beyond that, though? then nope, this one's not for you β use __v4l2_subdev_get_frame_desc_passthrough inside your own custom .get_frame_desc implementation instead. two underscores, different energy, iykyk π
ngl the distinction actually matters β the double-underscore version is the one you reach for when you're doing the locking yourself as part of a bigger custom implementation π
β RETURN β
0 on success, or a negative error code otherwise π (so like, always check your return value, bestie, please π)
π SEE ALSO π
the whole extended friend group π first up, the kernel file ./include/media/v4l2-subdev.h struct, then literally all of these:
v4l2_decode_vbi_line(9)enum v4l2_subdev_io_pin_bits(9)struct v4l2_subdev_io_pin_config(9)struct v4l2_subdev_core_ops(9)struct v4l2_subdev_tuner_ops(9)struct v4l2_subdev_audio_ops(9)struct v4l2_mbus_frame_desc_entry_csi2(9)enum v4l2_mbus_frame_desc_flags(9)struct v4l2_mbus_frame_desc_entry(9)enum v4l2_mbus_frame_desc_type(9)struct v4l2_mbus_frame_desc(9)enum v4l2_subdev_pre_streamon_flags(9)struct v4l2_subdev_video_ops(9)struct v4l2_subdev_vbi_ops(9)struct v4l2_subdev_sensor_ops(9)enum v4l2_subdev_ir_mode(9)struct v4l2_subdev_ir_parameters(9)struct v4l2_subdev_ir_ops(9)struct v4l2_subdev_pad_config(9)struct v4l2_subdev_stream_configs(9)struct v4l2_subdev_krouting(9)struct v4l2_subdev_state(9)struct v4l2_subdev_pad_ops(9)struct v4l2_subdev_ops(9)struct v4l2_subdev_internal_ops(9)struct v4l2_subdev_platform_data(9)struct v4l2_subdev(9)media_entity_to_v4l2_subdev(9)vdev_to_v4l2_subdev(9)struct v4l2_subdev_fh(9)to_v4l2_subdev_fh(9)v4l2_set_subdevdata(9)v4l2_get_subdevdata(9)v4l2_set_subdev_hostdata(9)v4l2_get_subdev_hostdata(9)v4l2_subdev_get_fwnode_pad_1_to_1(9)v4l2_subdev_link_validate_default(9)v4l2_subdev_link_validate(9)v4l2_subdev_has_pad_interdep(9)__v4l2_subdev_state_alloc(9)__v4l2_subdev_state_free(9)v4l2_subdev_init_finalize(9)v4l2_subdev_cleanup(9)v4l2_subdev_state_get_format(9)v4l2_subdev_state_get_crop(9)v4l2_subdev_state_get_compose(9)v4l2_subdev_state_get_interval(9)v4l2_subdev_get_fmt(9)v4l2_subdev_get_frame_interval(9)v4l2_subdev_set_routing(9)for_each_active_route(9)v4l2_subdev_set_routing_with_fmt(9)v4l2_subdev_routing_find_opposite_end(9)v4l2_subdev_state_get_opposite_stream_format(9)v4l2_subdev_state_xlate_streams(9)enum v4l2_subdev_routing_restriction(9)v4l2_subdev_routing_validate(9)v4l2_subdev_enable_streams(9)v4l2_subdev_disable_streams(9)v4l2_subdev_s_stream_helper(9)__v4l2_subdev_get_frame_desc_passthrough(9)β the sibling, the one with the extra underscore rizzv4l2_subdev_lock_state(9)v4l2_subdev_unlock_state(9)v4l2_subdev_lock_states(9)v4l2_subdev_unlock_states(9)v4l2_subdev_get_unlocked_active_state(9)v4l2_subdev_get_locked_active_state(9)v4l2_subdev_lock_and_get_active_state(9)v4l2_subdev_init(9)v4l2_subdev_call(9)v4l2_subdev_call_state_active(9)v4l2_subdev_call_state_try(9)v4l2_subdev_has_op(9)v4l2_subdev_notify_event(9)v4l2_subdev_is_streaming(9)
π§ sign-off π§
that's the whole page, bestie, you ate π
this came out of ./include/media in October 2026 and it's part of the Kernel API Manual β go forth and pass those streams through unmodified, mwah π«Άπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms