STRUCT V4L2_SUBDEV_IO_PIN_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct v4l2_subdev_io_pin_config(9) πŸ’…

okay so this is a page from the Kernel API Manual, and bestie, it's literally about configuring a subdevice's external IO pins. tiny struct, big "let me set up my chip's vibes" energy. let's get into it 🫢


🌸 NAME 🌸

struct v4l2_subdev_io_pin_config β€” subdevice external IO pin configuration

like, it's the little bundle you use to tell a subdevice how one of its external IO pins should behave. that's the whole gig. iconic, honestly ✨


πŸŽ€ SYNOPSIS πŸŽ€

struct v4l2_subdev_io_pin_config {
    u32 flags;
    u8 pin;
    u8 function;
    u8 value;
    u8 strength;
};

five fields. that's it. look at her go πŸ’–


πŸ¦‹ Members πŸ¦‹

  • flags β€” this is the bitmask of flags for this pin's config, and the individual bits are defined over in enum v4l2_subdev_io_pin_bits. so yeah, the actual meaning of the bits lives somewhere else β€” go check that enum, iykyk πŸ‘‘
  • pin β€” the chip's external IO pin you're configuring. the actual pin. the main character of this whole struct ngl πŸ’…
  • function β€” the internal signal pad/function that gets routed to that IO pin. it's giving "which internal thing gets to live on this pin" 🌈
  • value β€” the initial value for the pin β€” for example, a GPIO output value. like, what's it doing at the start, bestie 🌸
  • strength β€” the pin drive strength. how hard it drives. put some respect on it πŸ”₯

πŸ’œ SEE ALSO πŸ’œ

the kernel file ./include/media/v4l2-subdev.h plus this whole friend group of manpages, all listed out fr fr:

struct v4l2_decode_vbi_line(9), enum v4l2_subdev_io_pin_bits(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(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)

yes that's a lot of links. no i did not skip any. bestie behaviour only πŸ’€πŸ’–


heads up β€” this page is dated October 2026, lives under ./include/media, and that's the version info straight from the source. don't @ me when the kernel moves stuff around πŸ™ˆ

okay that's the whole page!! you now know everything the manpage knows about struct v4l2_subdev_io_pin_config and nothing it doesn't. slay πŸŽ€βœ¨πŸ¦‹ β€” from the Kernel API Manual, ./include/media, October 2026. mwah πŸ’œ

πŸ“¦ where this page comes from