v4l2_subdev_call(9)
π v4l2_subdev_call β the kAPI manual, bestie edition π
okay so welcome to the Kernel API Manual entry for v4l2_subdev_call(9), aka the little macro wrapper that makes your media driver actually do things β¨ grab a matcha, this one's short and sweet fr fr.
πΈ NAME πΈ
v4l2_subdev_call β call an operation of a v4l2_subdev. that's it. that's the whole vibe π
π¦ SYNOPSIS π¦
v4l2_subdev_call (sd , o , f , args... );
lowkey the prettiest signature ever, no cap π«Ά
β¨ ARGUMENTS β¨
sdβ pointer to thestruct v4l2_subdevπ like, the subdev you're trying to talk to. this is your main character.oβ the name of the element atstruct v4l2_subdev_opsthat containsf. each element there groups a set of callback functions, so think of it as picking which drawer in the ops dresser you're opening ποΈfβ the callback function to be called. the callback functions are defined in groups, according to each element atstruct v4l2_subdev_opsβ soopicks the group,fpicks the function inside it πargsβ arguments forf. whatever that callback wants, you hand it over π
π EXAMPLE π
err = v4l2_subdev_call(sd, video, s_std, norm);
see how it reads?? sd = the subdev, video = the ops group, s_std = the callback, norm = the arg. literally iconic. ate and left no crumbs π₯
β SEE ALSO β
first up, the header home base, bestie:
- Kernel file
./include/media/v4l2-subdev.hstruct
and then the whole entire friend group π like genuinely the longest guest list at the function:
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)v4l2_subdev_get_frame_desc_passthrough(9)v4l2_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_state_active(9)v4l2_subdev_call_state_try(9)v4l2_subdev_has_op(9)v4l2_subdev_notify_event(9)v4l2_subdev_is_streaming(9)
bestie REMEMBER: the vibe check here is thatois an element name ofstruct v4l2_subdev_ops, andflives inside that element. don't mix 'em up or it's giving undefined silliness π
and that's the whole page, mwah π this gem dropped from ./include/media, dated October 2026, and it's filed under v4l2_subdev_call(9) β go forth and call your subdev, queen ππ¦π
π¦ 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