sound/soc/mediatek/mt8186/mt8186-afe-control.c

Source file repositories/reference/linux-study-clean/sound/soc/mediatek/mt8186/mt8186-afe-control.c

File Facts

System
Linux kernel
Corpus path
sound/soc/mediatek/mt8186/mt8186-afe-control.c
Extension
.c
Size
5620 bytes
Lines
255
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.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
//
// MediaTek ALSA SoC Audio Control
//
// Copyright (c) 2022 MediaTek Inc.
// Author: Jiaxin Yu <jiaxin.yu@mediatek.com>

#include "mt8186-afe-common.h"

enum {
	MTK_AFE_RATE_8K = 0,
	MTK_AFE_RATE_11K,
	MTK_AFE_RATE_12K,
	MTK_AFE_RATE_384K,
	MTK_AFE_RATE_16K,
	MTK_AFE_RATE_22K,
	MTK_AFE_RATE_24K,
	MTK_AFE_RATE_352K,
	MTK_AFE_RATE_32K,
	MTK_AFE_RATE_44K,
	MTK_AFE_RATE_48K,
	MTK_AFE_RATE_88K,
	MTK_AFE_RATE_96K,
	MTK_AFE_RATE_176K,
	MTK_AFE_RATE_192K,
	MTK_AFE_RATE_260K,
};

enum {
	MTK_AFE_PCM_RATE_8K = 0,
	MTK_AFE_PCM_RATE_16K,
	MTK_AFE_PCM_RATE_32K,
	MTK_AFE_PCM_RATE_48K,
};

enum {
	MTK_AFE_TDM_RATE_8K = 0,
	MTK_AFE_TDM_RATE_12K,
	MTK_AFE_TDM_RATE_16K,
	MTK_AFE_TDM_RATE_24K,
	MTK_AFE_TDM_RATE_32K,
	MTK_AFE_TDM_RATE_48K,
	MTK_AFE_TDM_RATE_64K,
	MTK_AFE_TDM_RATE_96K,
	MTK_AFE_TDM_RATE_128K,
	MTK_AFE_TDM_RATE_192K,
	MTK_AFE_TDM_RATE_256K,
	MTK_AFE_TDM_RATE_384K,
	MTK_AFE_TDM_RATE_11K,
	MTK_AFE_TDM_RATE_22K,
	MTK_AFE_TDM_RATE_44K,
	MTK_AFE_TDM_RATE_88K,
	MTK_AFE_TDM_RATE_176K,
	MTK_AFE_TDM_RATE_352K,
};

enum {
	MTK_AFE_TDM_RELATCH_RATE_8K = 0,
	MTK_AFE_TDM_RELATCH_RATE_11K,
	MTK_AFE_TDM_RELATCH_RATE_12K,
	MTK_AFE_TDM_RELATCH_RATE_16K,
	MTK_AFE_TDM_RELATCH_RATE_22K,
	MTK_AFE_TDM_RELATCH_RATE_24K,
	MTK_AFE_TDM_RELATCH_RATE_32K,
	MTK_AFE_TDM_RELATCH_RATE_44K,
	MTK_AFE_TDM_RELATCH_RATE_48K,
	MTK_AFE_TDM_RELATCH_RATE_88K,
	MTK_AFE_TDM_RELATCH_RATE_96K,
	MTK_AFE_TDM_RELATCH_RATE_176K,
	MTK_AFE_TDM_RELATCH_RATE_192K,
	MTK_AFE_TDM_RELATCH_RATE_352K,
	MTK_AFE_TDM_RELATCH_RATE_384K,
};

unsigned int mt8186_general_rate_transform(struct device *dev, unsigned int rate)
{
	switch (rate) {
	case 8000:
		return MTK_AFE_RATE_8K;
	case 11025:
		return MTK_AFE_RATE_11K;
	case 12000:
		return MTK_AFE_RATE_12K;
	case 16000:
		return MTK_AFE_RATE_16K;
	case 22050:
		return MTK_AFE_RATE_22K;
	case 24000:
		return MTK_AFE_RATE_24K;
	case 32000:

Annotation

Implementation Notes