|
@@ -23,6 +23,15 @@
|
|
|
#ifndef __SOUND_HDA_LOCAL_H
|
|
|
#define __SOUND_HDA_LOCAL_H
|
|
|
|
|
|
+/* We abuse kcontrol_new.subdev field to pass the NID corresponding to
|
|
|
+ * the given new control. If id.subdev has a bit flag HDA_SUBDEV_NID_FLAG,
|
|
|
+ * snd_hda_ctl_add() takes the lower-bit subdev value as a valid NID.
|
|
|
+ *
|
|
|
+ * Note that the subdevice field is cleared again before the real registration
|
|
|
+ * in snd_hda_ctl_add(), so that this value won't appear in the outside.
|
|
|
+ */
|
|
|
+#define HDA_SUBDEV_NID_FLAG (1U << 31)
|
|
|
+
|
|
|
/*
|
|
|
* for mixer controls
|
|
|
*/
|
|
@@ -33,7 +42,7 @@
|
|
|
/* mono volume with index (index=0,1,...) (channel=1,2) */
|
|
|
#define HDA_CODEC_VOLUME_MONO_IDX(xname, xcidx, nid, channel, xindex, direction) \
|
|
|
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xcidx, \
|
|
|
- .subdevice = (1<<31)|(nid), \
|
|
|
+ .subdevice = HDA_SUBDEV_NID_FLAG | (nid), \
|
|
|
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | \
|
|
|
SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
|
|
|
SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK, \
|
|
@@ -54,7 +63,7 @@
|
|
|
/* mono mute switch with index (index=0,1,...) (channel=1,2) */
|
|
|
#define HDA_CODEC_MUTE_MONO_IDX(xname, xcidx, nid, channel, xindex, direction) \
|
|
|
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xcidx, \
|
|
|
- .subdevice = (1<<31)|(nid), \
|
|
|
+ .subdevice = HDA_SUBDEV_NID_FLAG | (nid), \
|
|
|
.info = snd_hda_mixer_amp_switch_info, \
|
|
|
.get = snd_hda_mixer_amp_switch_get, \
|
|
|
.put = snd_hda_mixer_amp_switch_put, \
|
|
@@ -71,7 +80,7 @@
|
|
|
/* special beep mono mute switch with index (index=0,1,...) (channel=1,2) */
|
|
|
#define HDA_CODEC_MUTE_BEEP_MONO_IDX(xname, xcidx, nid, channel, xindex, direction) \
|
|
|
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xcidx, \
|
|
|
- .subdevice = (1<<31)|(nid), \
|
|
|
+ .subdevice = HDA_SUBDEV_NID_FLAG | (nid), \
|
|
|
.info = snd_hda_mixer_amp_switch_info, \
|
|
|
.get = snd_hda_mixer_amp_switch_get, \
|
|
|
.put = snd_hda_mixer_amp_switch_put_beep, \
|