sound/soc/codecs/rt712-sdca-dmic.c
Source file repositories/reference/linux-study-clean/sound/soc/codecs/rt712-sdca-dmic.c
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/codecs/rt712-sdca-dmic.c- Extension
.c- Size
- 28284 bytes
- Lines
- 972
- Domain
- Driver Families
- Bucket
- sound/soc
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/module.hlinux/mod_devicetable.hlinux/pm_runtime.hlinux/soundwire/sdw_registers.hlinux/slab.hsound/core.hsound/pcm.hsound/pcm_params.hsound/tlv.hrt712-sdca.hrt712-sdca-dmic.h
Detected Declarations
function rt712_sdca_dmic_readable_registerfunction rt712_sdca_dmic_volatile_registerfunction rt712_sdca_dmic_mbq_readable_registerfunction rt712_sdca_dmic_mbq_volatile_registerfunction rt712_sdca_dmic_index_writefunction rt712_sdca_dmic_index_readfunction rt712_sdca_dmic_index_update_bitsfunction rt712_sdca_dmic_io_initfunction rt712_sdca_dmic_set_gain_getfunction rt712_sdca_dmic_set_gain_putfunction rt712_sdca_set_fu1e_capture_ctlfunction rt712_sdca_dmic_fu1e_capture_getfunction rt712_sdca_dmic_fu1e_capture_putfunction rt712_sdca_fu_infofunction rt712_sdca_dmic_mux_getfunction rt712_sdca_dmic_mux_putfunction rt712_sdca_dmic_fu1e_eventfunction rt712_sdca_dmic_pde11_eventfunction rt712_sdca_dmic_probefunction rt712_sdca_dmic_set_sdw_streamfunction rt712_sdca_dmic_shutdownfunction rt712_sdca_dmic_hw_paramsfunction rt712_sdca_dmic_hw_freefunction rt712_sdca_dmic_initfunction rt712_sdca_dmic_update_statusfunction rt712_sdca_dmic_read_propfunction rt712_sdca_dmic_dev_suspendfunction rt712_sdca_dmic_dev_system_suspendfunction rt712_sdca_dmic_dev_resumefunction rt712_sdca_dmic_sdw_probefunction rt712_sdca_dmic_sdw_remove
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-only
//
// rt712-sdca-dmic.c -- rt712 SDCA DMIC ALSA SoC audio driver
//
// Copyright(c) 2023 Realtek Semiconductor Corp.
//
//
#include <linux/module.h>
#include <linux/mod_devicetable.h>
#include <linux/pm_runtime.h>
#include <linux/soundwire/sdw_registers.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/tlv.h>
#include "rt712-sdca.h"
#include "rt712-sdca-dmic.h"
static bool rt712_sdca_dmic_readable_register(struct device *dev, unsigned int reg)
{
switch (reg) {
case 0x201a ... 0x201f:
case 0x2029 ... 0x202a:
case 0x202d ... 0x2034:
case 0x2230 ... 0x2232:
case 0x2f01 ... 0x2f0a:
case 0x2f35 ... 0x2f36:
case 0x2f52:
case 0x2f58 ... 0x2f59:
case 0x3201:
case 0x320c:
return true;
default:
return false;
}
}
static bool rt712_sdca_dmic_volatile_register(struct device *dev, unsigned int reg)
{
switch (reg) {
case 0x201b:
case 0x201c:
case 0x201d:
case 0x201f:
case 0x202d ... 0x202f:
case 0x2230:
case 0x2f01:
case 0x2f35:
case 0x320c:
return true;
default:
return false;
}
}
static bool rt712_sdca_dmic_mbq_readable_register(struct device *dev, unsigned int reg)
{
switch (reg) {
case 0x2000000 ... 0x200008e:
case 0x5300000 ... 0x530000e:
case 0x5400000 ... 0x540000e:
case 0x5600000 ... 0x5600008:
case 0x5700000 ... 0x570000d:
case 0x5800000 ... 0x5800021:
case 0x5900000 ... 0x5900028:
case 0x5a00000 ... 0x5a00009:
case 0x5b00000 ... 0x5b00051:
case 0x5c00000 ... 0x5c0009a:
case 0x5d00000 ... 0x5d00009:
case 0x5f00000 ... 0x5f00030:
case 0x6100000 ... 0x6100068:
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_01):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_02):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_03):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_04):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_01):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_02):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_03):
case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_04):
return true;
default:
return false;
}
}
static bool rt712_sdca_dmic_mbq_volatile_register(struct device *dev, unsigned int reg)
{
switch (reg) {
Annotation
- Immediate include surface: `linux/module.h`, `linux/mod_devicetable.h`, `linux/pm_runtime.h`, `linux/soundwire/sdw_registers.h`, `linux/slab.h`, `sound/core.h`, `sound/pcm.h`, `sound/pcm_params.h`.
- Detected declarations: `function rt712_sdca_dmic_readable_register`, `function rt712_sdca_dmic_volatile_register`, `function rt712_sdca_dmic_mbq_readable_register`, `function rt712_sdca_dmic_mbq_volatile_register`, `function rt712_sdca_dmic_index_write`, `function rt712_sdca_dmic_index_read`, `function rt712_sdca_dmic_index_update_bits`, `function rt712_sdca_dmic_io_init`, `function rt712_sdca_dmic_set_gain_get`, `function rt712_sdca_dmic_set_gain_put`.
- Atlas domain: Driver Families / sound/soc.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.