Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2807314d authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[ALSA] hda-intel - Add hwdep interface



Added a hwdep interface for each codec (enabled per kconfig).
This interface can be used for reading/writing HD-audio verbs
and other purposes as future extensions.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent ef5fa1a4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ enum {
	SNDRV_HWDEP_IFACE_USX2Y_PCM,	/* Tascam US122, US224 & US428 rawusb pcm */
	SNDRV_HWDEP_IFACE_PCXHR,	/* Digigram PCXHR */
	SNDRV_HWDEP_IFACE_SB_RC,	/* SB Extigy/Audigy2NX remote control */
	SNDRV_HWDEP_IFACE_HDA,		/* HD-audio */

	/* Don't forget to change the following: */
	SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_SB_RC
+44 −0
Original line number Diff line number Diff line
/*
 * HWDEP Interface for HD-audio codec
 *
 * Copyright (c) 2007 Takashi Iwai <tiwai@suse.de>
 *
 *  This driver is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This driver is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 */

#ifndef __SOUND_HDA_HWDEP_H
#define __SOUND_HDA_HWDEP_H

#define HDA_HWDEP_VERSION	((1 << 16) | (0 << 8) | (0 << 0)) /* 1.0.0 */

/* verb */
#define HDA_REG_NID_SHIFT	24
#define HDA_REG_VERB_SHIFT	8
#define HDA_REG_VAL_SHIFT	0
#define HDA_VERB(nid,verb,param)	((nid)<<24 | (verb)<<8 | (param))

struct hda_verb_ioctl {
	u32 verb;	/* HDA_VERB() */
	u32 res;	/* response */
};

/*
 * ioctls
 */
#define HDA_IOCTL_PVERSION		_IOR('H', 0x10, int)
#define HDA_IOCTL_VERB_WRITE		_IOWR('H', 0x11, struct hda_verb_ioctl)
#define HDA_IOCTL_GET_WCAP		_IOWR('H', 0x12, struct hda_verb_ioctl)

#endif
+9 −0
Original line number Diff line number Diff line
@@ -500,6 +500,15 @@ config SND_HDA_INTEL
	  To compile this driver as a module, choose M here: the module
	  will be called snd-hda-intel.

config SND_HDA_HWDEP
	bool "Build hwdep interface for HD-audio driver"
	depends on SND_HDA_INTEL
	select SND_HWDEP
	help
	  Say Y here to build a hwdep interface for HD-audio driver.
	  This interface can be used for out-of-bound communication
	  with codesc for debugging purposes.

config SND_HDSP
	tristate "RME Hammerfall DSP Audio"
	depends on SND
+4 −5
Original line number Diff line number Diff line
snd-hda-intel-objs := hda_intel.o
snd-hda-intel-y := hda_intel.o
# since snd-hda-intel is the only driver using hda-codec,
# merge it into a single module although it was originally
# designed to be individual modules
snd-hda-intel-objs += hda_codec.o \
snd-hda-intel-y += hda_codec.o \
	hda_generic.o \
	patch_realtek.o \
	patch_cmedia.o \
@@ -12,8 +12,7 @@ snd-hda-intel-objs += hda_codec.o \
	patch_atihdmi.o \
	patch_conexant.o \
	patch_via.o
ifdef CONFIG_PROC_FS
snd-hda-intel-objs += hda_proc.o
endif
snd-hda-intel-$(CONFIG_PROC_FS) += hda_proc.o
snd-hda-intel-$(CONFIG_SND_HDA_HWDEP) += hda_hwdep.o

obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-intel.o
+4 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <sound/tlv.h>
#include <sound/initval.h>
#include "hda_local.h"
#include <sound/hda_hwdep.h>


/*
@@ -594,6 +595,9 @@ int __devinit snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr,
		init_unsol_queue(bus);

	snd_hda_codec_proc_new(codec);
#ifdef CONFIG_SND_HDA_HWDEP
	snd_hda_create_hwdep(codec);
#endif

	sprintf(component, "HDA:%08x", codec->vendor_id);
	snd_component_add(codec->bus->card, component);
Loading