STRUCT SDW_SLAVE_PROP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

okay bestie, meet struct sdw_slave_prop(9) πŸ’… β€” this is the SoundWire Slave properties struct, and it’s living in the Kernel API Manual. It’s giving β€œone iconic struct holding all the Slave property fields,” and we are lowkey obsessed. 🫢


✨ SYNOPSIS ✨

This is the exact struct shape, no cap β€” keep those field names and types exactly as they are:

struct sdw_slave_prop {
    struct sdw_dp0_prop *dp0_prop;
    struct sdw_dpn_prop *src_dpn_prop;
    struct sdw_dpn_prop *sink_dpn_prop;
    u32 mipi_revision;
    bool wake_capable;
    bool test_mode_capable;
    bool clk_stop_mode1;
    bool simple_clk_stop_capable;
    u32 clk_stop_timeout;
    u32 ch_prep_timeout;
    enum sdw_clk_stop_reset_behave reset_behave;
    bool high_PHY_capable;
    bool paging_support;
    bool bank_delay_support;
    bool lane_control_support;
    enum sdw_p15_behave p15_behave;
    u32 master_count;
    u32 source_ports;
    u32 sink_ports;
    u32 quirks;
    u32 sdca_interrupt_register_list;
    u8 commit_register_supported;
    u8 scp_int1_mask;
    u8 lane_maps[SDW_MAX_LANES];
    u32 bra_block_alignment;
    u32 bra_max_data_per_frame;
    bool clock_reg_supported;
    bool use_domain_irq;
};
bestie, these field names and types are literal C β€” do not freestyle them, do not rename them, do not merge them. periodt. πŸ’€

πŸ’… Members πŸ’…

okay so every single field in this struct is a little main character, and here’s the full roster in order:

  • dp0_prop β€” Data Port 0 properties πŸ’–
  • src_dpn_prop β€” Source Data Port N properties ✨
  • sink_dpn_prop β€” Sink Data Port N properties πŸŽ€
  • mipi_revision β€” Spec version of the implementation πŸ”₯
  • wake_capable β€” Wake-up events are supported 🌈
  • test_mode_capable β€” If test mode is supported πŸ§ͺ
  • clk_stop_mode1 β€” Clock-Stop Mode 1 is supported ⏰
  • simple_clk_stop_capable β€” Simple clock mode is supported πŸ•°οΈ
  • clk_stop_timeout β€” Worst-case latency of the Clock Stop Prepare State Machine transitions, in milliseconds ⏳
  • ch_prep_timeout β€” Worst-case latency of the Channel Prepare State Machine transitions, in milliseconds ⏳
  • reset_behave β€” Slave keeps the status of the SlaveStopClockPrepare state machine (P=1 SCSP_SM) after exit from clock-stop mode1 🫠
  • high_PHY_capable β€” Slave is HighPHY capable ⚑
  • paging_support β€” Slave implements paging registers SCP_AddrPage1 and SCP_AddrPage2 πŸ“„
  • bank_delay_support β€” Slave implements bank delay/bridge support registers SCP_BankDelay and SCP_NextFrame πŸŒ‰
  • lane_control_support β€” Slave supports lane control πŸ›£οΈ
  • p15_behave β€” Slave behavior when the Master attempts a read to the Port15 alias πŸ‘€
  • master_count β€” Number of Masters present on this Slave πŸ‘‘
  • source_ports β€” Bitmap identifying source ports 🧭
  • sink_ports β€” Bitmap identifying sink ports πŸ•³οΈ
  • quirks β€” bitmask identifying deltas from the MIPI specification πŸ’€
  • sdca_interrupt_register_list β€” indicates which sets of SDCA interrupt status and masks are supported 🚨
  • commit_register_supported β€” is PCP_Commit register supported βœ…
  • scp_int1_mask β€” SCP_INT1_MASK desired settings πŸŽ›οΈ
  • lane_maps β€” Lane mapping for the slave, only valid if lane_control_support is set πŸ—ΊοΈ
  • bra_block_alignment β€” If non-zero the length of data in a BRA frame must be a multiple of this number of bytes. πŸ“
  • bra_max_data_per_frame β€” If non-zero the maximum data payload size (in bytes per frame excluding header, CRC, and footer) for this BRA Mode πŸ“¦
  • clock_reg_supported β€” the Peripheral implements the clock base and scale registers introduced with the SoundWire 1.2 specification. SDCA devices do not need to set this boolean property as the registers are required. πŸ•°οΈ
  • use_domain_irq β€” call actual IRQ handler on slave, as well as callback πŸ“ž

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./include/linux/soundwire/sdw.h is the home base 🏠, and then the whole squad shows up:

  • 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_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_transport_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)

πŸ’– that’s the page, bestie! source/version/date lore: source ./include/linux/soundwire, date October 2026, and page title/version struct sdw_slave_prop(9) β€” mwah! πŸ’–

πŸ“¦ where this page comes from