ALSA: hda: Move common codec driver into sound/hda/common directory

The snd-hda-codec module contains the most of common code used by both
HD-audio controller and codec drivers, and it's basically independent
from PCI.  Let's move the code to sound/hda/common directory as a part
of code reorganization.

The hda_ prefix is dropped from the most of file names as it's rather
superfluous.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250709160434.1859-4-tiwai@suse.de
This commit is contained in:
Takashi Iwai
2025-07-09 18:04:06 +02:00
parent b2660d1ebd
commit 05be28fe85
21 changed files with 103 additions and 89 deletions

View File

@@ -1,2 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
menu "HD-Audio"
source "sound/hda/common/Kconfig"
source "sound/hda/core/Kconfig"
endmenu

View File

@@ -1,2 +1,3 @@
# SPDX-License-Identifier: GPL-2.0
obj-y += core/
obj-$(CONFIG_SND_HDA) += common/

80
sound/hda/common/Kconfig Normal file
View File

@@ -0,0 +1,80 @@
# SPDX-License-Identifier: GPL-2.0-only
config SND_HDA
tristate
select SND_PCM
select SND_VMASTER
select SND_JACK
select SND_HDA_CORE
if SND_HDA
config SND_HDA_HWDEP
bool "Build hwdep interface for HD-audio driver"
select SND_HWDEP
help
Say Y here to build a hwdep interface for HD-audio driver.
This interface can be used for out-of-band communication
with codecs for debugging purposes.
config SND_HDA_RECONFIG
bool "Allow dynamic codec reconfiguration"
help
Say Y here to enable the HD-audio codec re-configuration feature.
It allows user to clear the whole codec configuration, change the
codec setup, add extra verbs, and re-configure the codec dynamically.
Note that this item alone doesn't provide the sysfs interface, but
enables the feature just for the patch loader below.
If you need the traditional sysfs entries for the manual interaction,
turn on CONFIG_SND_HDA_HWDEP as well.
config SND_HDA_INPUT_BEEP
bool "Support digital beep via input layer"
depends on INPUT=y || INPUT=SND_HDA
help
Say Y here to build a digital beep interface for HD-audio
driver. This interface is used to generate digital beeps.
config SND_HDA_INPUT_BEEP_MODE
int "Digital beep registration mode (0=off, 1=on)"
depends on SND_HDA_INPUT_BEEP=y
default "1"
range 0 1
help
Set 0 to disable the digital beep interface for HD-audio by default.
Set 1 to always enable the digital beep interface for HD-audio by
default.
config SND_HDA_PATCH_LOADER
bool "Support initialization patch loading for HD-audio"
select FW_LOADER
select SND_HDA_RECONFIG
help
Say Y here to allow the HD-audio driver to load a pseudo
firmware file ("patch") for overriding the BIOS setup at
start up. The "patch" file can be specified via patch module
option, such as patch=hda-init.
config SND_HDA_POWER_SAVE_DEFAULT
int "Default time-out for HD-audio power-save mode"
depends on PM
default 0
help
The default time-out value in seconds for HD-audio automatic
power-save mode. 0 means to disable the power-save mode.
config SND_HDA_CTL_DEV_ID
bool "Use the device identifier field for controls"
depends on SND_HDA_INTEL
help
Say Y to use the device identifier field for (mixer)
controls (old behaviour until this option is available).
When enabled, the multiple HDA codecs may set the device
field in control (mixer) element identifiers. The use
of this field is not recommended and defined for mixer controls.
The old behaviour (Y) is obsolete and will be removed. Consider
to not enable this option.
endif

13
sound/hda/common/Makefile Normal file
View File

@@ -0,0 +1,13 @@
# SPDX-License-Identifier: GPL-2.0
snd-hda-codec-y := bind.o codec.o jack.o auto_parser.o sysfs.o
snd-hda-codec-y += controller.o
snd-hda-codec-$(CONFIG_SND_PROC_FS) += proc.o
snd-hda-codec-$(CONFIG_SND_HDA_HWDEP) += hwdep.o
snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += beep.o
# for trace-points
CFLAGS_controller.o := -I$(src)
# common driver
obj-$(CONFIG_SND_HDA) := snd-hda-codec.o

View File

@@ -29,7 +29,7 @@
#include "hda_local.h"
#define CREATE_TRACE_POINTS
#include "hda_controller_trace.h"
#include "controller_trace.h"
/* DSP lock helpers */
#define dsp_lock(dev) snd_hdac_dsp_lock(azx_stream(dev))

View File

@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM hda_controller
#define TRACE_INCLUDE_FILE hda_controller_trace
#define TRACE_INCLUDE_FILE controller_trace
#if !defined(_TRACE_HDA_CONTROLLER_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HDA_CONTROLLER_H

View File

@@ -1,13 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
menu "HD-Audio"
config SND_HDA
tristate
select SND_PCM
select SND_VMASTER
select SND_JACK
select SND_HDA_CORE
config SND_HDA_GENERIC_LEDS
bool
@@ -55,53 +48,6 @@ config SND_HDA_ACPI
if SND_HDA
config SND_HDA_HWDEP
bool "Build hwdep interface for HD-audio driver"
select SND_HWDEP
help
Say Y here to build a hwdep interface for HD-audio driver.
This interface can be used for out-of-band communication
with codecs for debugging purposes.
config SND_HDA_RECONFIG
bool "Allow dynamic codec reconfiguration"
help
Say Y here to enable the HD-audio codec re-configuration feature.
It allows user to clear the whole codec configuration, change the
codec setup, add extra verbs, and re-configure the codec dynamically.
Note that this item alone doesn't provide the sysfs interface, but
enables the feature just for the patch loader below.
If you need the traditional sysfs entries for the manual interaction,
turn on CONFIG_SND_HDA_HWDEP as well.
config SND_HDA_INPUT_BEEP
bool "Support digital beep via input layer"
depends on INPUT=y || INPUT=SND_HDA
help
Say Y here to build a digital beep interface for HD-audio
driver. This interface is used to generate digital beeps.
config SND_HDA_INPUT_BEEP_MODE
int "Digital beep registration mode (0=off, 1=on)"
depends on SND_HDA_INPUT_BEEP=y
default "1"
range 0 1
help
Set 0 to disable the digital beep interface for HD-audio by default.
Set 1 to always enable the digital beep interface for HD-audio by
default.
config SND_HDA_PATCH_LOADER
bool "Support initialization patch loading for HD-audio"
select FW_LOADER
select SND_HDA_RECONFIG
help
Say Y here to allow the HD-audio driver to load a pseudo
firmware file ("patch") for overriding the BIOS setup at
start up. The "patch" file can be specified via patch module
option, such as patch=hda-init.
config SND_HDA_CIRRUS_SCODEC
tristate
@@ -394,14 +340,6 @@ config SND_HDA_GENERIC
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA=y && SND_HDA_GENERIC=m
config SND_HDA_POWER_SAVE_DEFAULT
int "Default time-out for HD-audio power-save mode"
depends on PM
default 0
help
The default time-out value in seconds for HD-audio automatic
power-save mode. 0 means to disable the power-save mode.
config SND_HDA_INTEL_HDMI_SILENT_STREAM
bool "Enable Silent Stream always for HDMI"
depends on SND_HDA_INTEL
@@ -417,20 +355,6 @@ config SND_HDA_INTEL_HDMI_SILENT_STREAM
This feature can impact power consumption as resources
are kept reserved both at transmitter and receiver.
config SND_HDA_CTL_DEV_ID
bool "Use the device identifier field for controls"
depends on SND_HDA_INTEL
help
Say Y to use the device identifier field for (mixer)
controls (old behaviour until this option is available).
When enabled, the multiple HDA codecs may set the device
field in control (mixer) element identifiers. The use
of this field is not recommended and defined for mixer controls.
The old behaviour (Y) is obsolete and will be removed. Consider
to not enable this option.
endif
endmenu

View File

@@ -3,17 +3,11 @@ snd-hda-intel-y := hda_intel.o
snd-hda-tegra-y := hda_tegra.o
snd-hda-acpi-y := hda_acpi.o
snd-hda-codec-y := hda_bind.o hda_codec.o hda_jack.o hda_auto_parser.o hda_sysfs.o
snd-hda-codec-y += hda_controller.o
snd-hda-codec-$(CONFIG_SND_PROC_FS) += hda_proc.o
snd-hda-codec-$(CONFIG_SND_HDA_HWDEP) += hda_hwdep.o
snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += hda_beep.o
# for trace-points
CFLAGS_hda_controller.o := -I$(src)
CFLAGS_hda_intel.o := -I$(src)
subdir-ccflags-y += -I$(src)/../../hda/common
snd-hda-codec-generic-y := hda_generic.o
snd-hda-codec-realtek-y := patch_realtek.o
snd-hda-codec-cmedia-y := patch_cmedia.o
@@ -43,9 +37,6 @@ snd-hda-scodec-tas2781-y := tas2781_hda.o
snd-hda-scodec-tas2781-i2c-y := tas2781_hda_i2c.o
snd-hda-scodec-tas2781-spi-y := tas2781_hda_spi.o
# common driver
obj-$(CONFIG_SND_HDA) := snd-hda-codec.o
# codec drivers
obj-$(CONFIG_SND_HDA_GENERIC) += snd-hda-codec-generic.o
obj-$(CONFIG_SND_HDA_CODEC_REALTEK) += snd-hda-codec-realtek.o