STRUCT SDW_TRANSPORT_PARAMS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🎧 struct sdw_transport_params(9) β€” the kernel API manual, bestie edition πŸ’œ

okay so this is a page from the Kernel API Manual (yes, the (9) one, that's the kernel-API section, iykyk) and it's literally all about struct sdw_transport_params, which is the glow-up blueprint for a SoundWire Data Port. sit down, we're doing this together 🫢


✨ NAME ✨

struct sdw_transport_params β€” Data Port Transport Parameters. that's the whole vibe: the parameters that get transported. iconic, no notes πŸ’…


🌸 SYNOPSIS 🌸

here's the struct, in its full unedited glory β€” copy it exactly, do not touch, she is perfect:

struct sdw_transport_params {
    bool blk_grp_ctrl_valid;
    unsigned int port_num;
    unsigned int blk_grp_ctrl;
    unsigned int sample_interval;
    unsigned int offset1;
    unsigned int offset2;
    unsigned int hstart;
    unsigned int hstop;
    unsigned int blk_pkg_mode;
    unsigned int lane_ctrl;
 };

πŸ¦‹ Members πŸ¦‹

okay field-by-field, and no skipping, we respect every single one of these:

  • blk_grp_ctrl_valid β€” tells you whether this Port actually implements block group control. like, does she even have the feature or is she just standing there πŸ’€
  • port_num β€” the Port number. that's it, that's the field.
  • blk_grp_ctrl β€” the block group control value itself.
  • sample_interval β€” the sample interval.
  • offset1 β€” Blockoffset of the payload data.
  • offset2 β€” Blockoffset of the payload data. (yes, again, that's what it says, they're siblings, don't ask πŸ€·β€β™€οΈ)
  • hstart β€” Horizontal start of the payload data.
  • hstop β€” Horizontal stop of the payload data.
  • blk_pkg_mode β€” block per channel or block per port. pick your fighter ✨
  • lane_ctrl β€” the Data lane the Port uses for Data transfer. currently only single data lane is supported in bus β€” so like, one lane only, that's the whole menu rn 😭

πŸŽ€ Description πŸŽ€

so what's the point of all of this? this struct is used to program the Data Port based on Data Port transport parameters. that's the job. πŸ’–

and here's the actually-kind-of-genius part: all these parameters are banked and can be modified during a bank switch without any artifacts in audio stream. meaning you can swap them mid-bank-switch and the audio stream stays clean β€” no glitches, no crunchy noises, no "why is my song popping" moment. main character energy fr fr πŸ‘‘


πŸ‘‘ SEE ALSO πŸ‘‘

your reading list, bestie β€” Kernel file ./include/linux/soundwire/sdw.h, plus this whole friend group:

  • enum sdw_slave_status(9)
  • enum sdw_clk_stop_type(9)
  • enum sdw_command_response(9)
  • enum sdw_stream_type(9)
  • enum sdw_data_direction(9)
  • enum sdw_port_data_mode(9)
  • enum sdw_p15_behave(9)
  • enum sdw_dpn_type(9)
  • enum sdw_clk_stop_mode(9)
  • struct sdw_dp0_prop(9)
  • struct sdw_dpn_prop(9)
  • struct sdw_slave_prop(9)
  • struct sdw_master_prop(9)
  • struct sdw_slave_id(9)
  • struct sdw_slave_intr_status(9)
  • enum sdw_reg_bank(9)
  • struct sdw_prepare_ch(9)
  • enum sdw_port_prep_ops(9)
  • struct sdw_bus_params(9)
  • struct sdw_slave_ops(9)
  • struct sdw_slave(9)
  • struct sdw_master_device(9)
  • struct sdw_port_params(9)
  • struct sdw_enable_ch(9)
  • struct sdw_master_port_ops(9)
  • struct sdw_defer(9)
  • struct sdw_master_ops(9)
  • struct sdw_port_config(9)
  • struct sdw_stream_config(9)
  • enum sdw_stream_state(9)
  • struct sdw_stream_params(9)
  • struct sdw_stream_runtime(9)
  • struct sdw_bus(9)
  • sdw_slave_wait_for_init(9)

ngl this page is short and sweet and that's exactly why we love her. ten fields, one job, zero drama. periodt. πŸ’…

and that's the page, bestie!! 🌈 this one lives in ./include/linux/soundwire, dated October 2026, and it's filed under struct sdw_transport_params(9) like the star she is. go forth and program those Data Ports responsibly πŸ§šβ€β™€οΈπŸ’–βœ¨

πŸ“¦ where this page comes from