summaryrefslogtreecommitdiffstats
path: root/sound/hda
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2015-09-17 12:00:05 +0200
committerTakashi Iwai <tiwai@suse.de>2015-10-20 10:15:53 +0200
commit975c947e75f09ca4910053b626be2376e3313cf2 (patch)
tree187abfb655b287420f0496e5eccab91423a1f719 /sound/hda
parentb9a94a9c787d053e8d3bb7e7dff9648e723a4533 (diff)
downloadlinux-975c947e75f09ca4910053b626be2376e3313cf2.tar.bz2
ALSA: hda - Advertise MODALIAS in uevent
By setting the MODALIAS variable in uevents, userspace helpers will be enabled to load modules via the module alias associated with a device. This information is required to automatically load HDA codec drivers instead of having to explicitly request the various modules in the HDA core code. [Note that currently the legacy HDA controller driver tries to bind codec modules manually. It's for supporting the fallback generic drivers. This new udev modalias support was added rather for ASoC HDA ext drivers, since this addition itself won't hurt the legacy HDA -- tiwai] [Use the common helper function to generate the modalias -- tiwai] Signed-off-by: Thierry Reding <treding@nvidia.com> Reviewed-by: Vinod Koul <vinod.koul@intel.com> Tested-by: Subhransu S Prusty <subhransu.s.prusty@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/hda')
-rw-r--r--sound/hda/hda_bus_type.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/hda/hda_bus_type.c b/sound/hda/hda_bus_type.c
index bcb1a79eec38..3060e2aee36f 100644
--- a/sound/hda/hda_bus_type.c
+++ b/sound/hda/hda_bus_type.c
@@ -64,9 +64,21 @@ static int hda_bus_match(struct device *dev, struct device_driver *drv)
return 1;
}
+static int hda_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+ char modalias[32];
+
+ snd_hdac_codec_modalias(dev_to_hdac_dev(dev), modalias,
+ sizeof(modalias));
+ if (add_uevent_var(env, "MODALIAS=%s", modalias))
+ return -ENOMEM;
+ return 0;
+}
+
struct bus_type snd_hda_bus_type = {
.name = "hdaudio",
.match = hda_bus_match,
+ .uevent = hda_uevent,
};
EXPORT_SYMBOL_GPL(snd_hda_bus_type);