sound/soc/codecs/wm5100-tables.c

Source file repositories/reference/linux-study-clean/sound/soc/codecs/wm5100-tables.c

File Facts

System
Linux kernel
Corpus path
sound/soc/codecs/wm5100-tables.c
Extension
.c
Size
64557 bytes
Lines
1482
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-only
/*
 * wm5100-tables.c  --  WM5100 ALSA SoC Audio driver data
 *
 * Copyright 2011-2 Wolfson Microelectronics plc
 *
 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
 */

#include "wm5100.h"

bool wm5100_volatile_register(struct device *dev, unsigned int reg)
{
	switch (reg) {
	case WM5100_SOFTWARE_RESET:
	case WM5100_DEVICE_REVISION:
	case WM5100_FX_CTRL:
	case WM5100_INTERRUPT_STATUS_1:
	case WM5100_INTERRUPT_STATUS_2:
	case WM5100_INTERRUPT_STATUS_3:
	case WM5100_INTERRUPT_STATUS_4:
	case WM5100_INTERRUPT_RAW_STATUS_2:
	case WM5100_INTERRUPT_RAW_STATUS_3:
	case WM5100_INTERRUPT_RAW_STATUS_4:
	case WM5100_OUTPUT_STATUS_1:
	case WM5100_OUTPUT_STATUS_2:
	case WM5100_INPUT_ENABLES_STATUS:
	case WM5100_MIC_DETECT_3:
		return true;
	default:
		if ((reg >= WM5100_DSP1_PM_0 && reg <= WM5100_DSP1_PM_1535) ||
		    (reg >= WM5100_DSP1_ZM_0 && reg <= WM5100_DSP1_ZM_2047) ||
		    (reg >= WM5100_DSP1_DM_0 && reg <= WM5100_DSP1_DM_511) ||
		    (reg >= WM5100_DSP2_PM_0 && reg <= WM5100_DSP2_PM_1535) ||
		    (reg >= WM5100_DSP2_ZM_0 && reg <= WM5100_DSP2_ZM_2047) ||
		    (reg >= WM5100_DSP2_DM_0 && reg <= WM5100_DSP2_DM_511) ||
		    (reg >= WM5100_DSP3_PM_0 && reg <= WM5100_DSP3_PM_1535) ||
		    (reg >= WM5100_DSP3_ZM_0 && reg <= WM5100_DSP3_ZM_2047) ||
		    (reg >= WM5100_DSP3_DM_0 && reg <= WM5100_DSP3_DM_511))
			return true;
		else
			return false;
	}
}

bool wm5100_readable_register(struct device *dev, unsigned int reg)
{
	switch (reg) {
	case WM5100_SOFTWARE_RESET:
	case WM5100_DEVICE_REVISION:
	case WM5100_CTRL_IF_1:
	case WM5100_TONE_GENERATOR_1:
	case WM5100_PWM_DRIVE_1:
	case WM5100_PWM_DRIVE_2:
	case WM5100_PWM_DRIVE_3:
	case WM5100_CLOCKING_1:
	case WM5100_CLOCKING_3:
	case WM5100_CLOCKING_4:
	case WM5100_CLOCKING_5:
	case WM5100_CLOCKING_6:
	case WM5100_CLOCKING_7:
	case WM5100_CLOCKING_8:
	case WM5100_ASRC_ENABLE:
	case WM5100_ASRC_STATUS:
	case WM5100_ASRC_RATE1:
	case WM5100_ISRC_1_CTRL_1:
	case WM5100_ISRC_1_CTRL_2:
	case WM5100_ISRC_2_CTRL1:
	case WM5100_ISRC_2_CTRL_2:
	case WM5100_FLL1_CONTROL_1:
	case WM5100_FLL1_CONTROL_2:
	case WM5100_FLL1_CONTROL_3:
	case WM5100_FLL1_CONTROL_5:
	case WM5100_FLL1_CONTROL_6:
	case WM5100_FLL1_EFS_1:
	case WM5100_FLL2_CONTROL_1:
	case WM5100_FLL2_CONTROL_2:
	case WM5100_FLL2_CONTROL_3:
	case WM5100_FLL2_CONTROL_5:
	case WM5100_FLL2_CONTROL_6:
	case WM5100_FLL2_EFS_1:
	case WM5100_MIC_CHARGE_PUMP_1:
	case WM5100_MIC_CHARGE_PUMP_2:
	case WM5100_HP_CHARGE_PUMP_1:
	case WM5100_LDO1_CONTROL:
	case WM5100_MIC_BIAS_CTRL_1:
	case WM5100_MIC_BIAS_CTRL_2:
	case WM5100_MIC_BIAS_CTRL_3:
	case WM5100_ACCESSORY_DETECT_MODE_1:
	case WM5100_HEADPHONE_DETECT_1:

Annotation

Implementation Notes