ALSA: hda - Advertise MODALIAS in uevent
authorThierry Reding <treding@nvidia.com>
Thu, 17 Sep 2015 10:00:05 +0000 (12:00 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Oct 2015 08:15:53 +0000 (10:15 +0200)
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>
sound/hda/hda_bus_type.c

index bcb1a79eec38fee30e74f8d1fb2d98f899c76679..3060e2aee36fd736ce3755559d26c7049ba11218 100644 (file)
@@ -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);