STRUCT ACP63_DEV_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct acp63_dev_data(9) πŸ’–

okay bestie, welcome to the kernel API manual page for struct acp63_dev_data β€” that's the acp pci driver context, and it is so much more than a struct, it's literally the whole vibe of the ACP PCI driver wrapped up in one little bundle πŸŽ€ (also hi, you're reading the struct acp63_dev_data(9) page, manual section 9, slay).


✨ NAME ✨

struct acp63_dev_data β€” acp pci driver context 🫢


🌸 SYNOPSIS 🌸

here's the whole thing, no cap, every single line:

struct acp63_dev_data {
    void __iomem *acp63_base;
    struct resource *res;
    struct acp_hw_ops *hw_ops;
    struct platform_device *pdm_dev;
    struct platform_device *dmic_codec_dev;
    struct platform_device *sdw_dma_dev;
    struct platform_device *mach_dev;
    struct mutex acp_lock;
    struct sdw_amd_acpi_info info;
    struct sdw_amd_ctx *sdw;
    struct snd_soc_acpi_mach *machines;
    bool is_sdw_dev;
    bool is_pdm_dev;
    bool is_pdm_config;
    bool is_sdw_config;
    bool sdw_en_stat;
    bool acp70_sdw0_wake_event;
    bool acp70_sdw1_wake_event;
    u32 addr;
    u32 reg_range;
    u32 acp_rev;
    u32 subsystem_vendor;
    u32 subsystem_device;
    u32 acp_sw_pad_keeper_en;
    u32 acp_pad_pulldown_ctrl;
    u16 acp63_sdw0_dma_intr_stat[ACP63_SDW0_DMA_MAX_STREAMS];
    u16 acp63_sdw1_dma_intr_stat[ACP63_SDW1_DMA_MAX_STREAMS];
    u16 acp70_sdw0_dma_intr_stat[ACP70_SDW0_DMA_MAX_STREAMS];
    u16 acp70_sdw1_dma_intr_stat[ACP70_SDW1_DMA_MAX_STREAMS];
 };

look at her. main character energy honestly πŸ‘‘


🧚 Members 🧚

ngl, the page only spells out some of these for you β€” so here's every member it actually describes, in order, no skipping πŸ’…

  • acp63_base β€” the acp mmio base πŸ—ΊοΈ
  • res β€” resource
  • hw_ops β€” ACP pci driver platform-specific ops βš™οΈ
  • pdm_dev β€” ACP PDM controller platform device
  • mach_dev β€” platform device for machine driver to support ACP PDM/SoundWire configuration πŸŽ›οΈ
  • acp_lock β€” used to protect acp common registers πŸ”’ (yes queen, mutual exclusion)
  • info β€” SoundWire AMD information found in ACPI tables πŸ“‹
  • sdw β€” SoundWire context for all SoundWire manager instances 🌈
  • is_sdw_dev β€” flag set to true when any SoundWire manager instances are available
  • is_pdm_dev β€” flag set to true when ACP PDM controller exists
  • is_pdm_config β€” flag set to true when PDM configuration is selected from BIOS
  • is_sdw_config β€” flag set to true when SDW configuration is selected from BIOS
  • sdw_en_stat β€” flag set to true when any one of the SoundWire manager instance is enabled βœ…
  • acp70_sdw0_wake_event β€” flag set to true when wake irq asserted for SW0 instance ⏰
  • acp70_sdw1_wake_event β€” flag set to true when wake irq asserted for SW1 instance ⏰
  • addr β€” pci ioremap address πŸ“
  • reg_range β€” ACP register range
  • acp_rev β€” ACP PCI revision id 🏷️
  • acp_sw_pad_keeper_en β€” store acp SoundWire pad keeper enable register value πŸ›Ÿ
  • acp_pad_pulldown_ctrl β€” store acp pad pulldown control register value

and tucked right onto the end of that last one, the page also gives you:

  • acp63_sdw0-dma_intr_stat: DMA interrupt status array for ACP6.3 platform SoundWire manager-SW0 instance πŸ”₯
lowkey a heads up: dmic_codec_dev, sdw_dma_dev, machines, subsystem_vendor, subsystem_device, and the acp63_sdw1_dma_intr_stat / acp70_sdw0_dma_intr_stat / acp70_sdw1_dma_intr_stat arrays are all sitting right there in the struct above β€” the Members list on this page just doesn't give them their own little spotlight moment πŸ™ˆ they're still in the synopsis tho, don't worry, nothing got deleted.

πŸ¦‹ SEE ALSO πŸ¦‹

  • Kernel file ./sound/soc/amd/ps/acp63.h
  • struct acp_hw_ops(9)

go read those next bestie, they're giving very much "required reading" πŸ“šβœ¨


and that's the page!! this lil gem lives at ./sound/soc/amd/ps and it's dated October 2026 β€” mwah, bye, go write some sound driver code πŸ’œπŸŽ€πŸ’…

πŸ“¦ where this page comes from