ALSA: hda - Make snd_hda_bus_type public
authorTakashi Iwai <tiwai@suse.de>
Tue, 17 Feb 2015 20:46:37 +0000 (21:46 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 23 Mar 2015 12:15:51 +0000 (13:15 +0100)
Define the common hd-audio driver and device types to bind over
snd_hda_bus_type publicly.  This allows to implement other type of
device and driver code over hd-audio bus.

Now both struct hda_codec and struct hda_codec_driver inherit these
new struct hdac_device and struct hdac_driver, respectively.

The bus registration is done in subsys_initcall() to assure it
before any other driver registrations.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/hdaudio.h [new file with mode: 0644]
sound/Kconfig
sound/Makefile
sound/hda/Kconfig [new file with mode: 0644]
sound/hda/Makefile [new file with mode: 0644]
sound/hda/hda_bus_type.c [new file with mode: 0644]
sound/pci/hda/Kconfig
sound/pci/hda/hda_bind.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.h

diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
new file mode 100644 (file)
index 0000000..2381509
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * HD-audio core stuff
+ */
+
+#ifndef __SOUND_HDAUDIO_H
+#define __SOUND_HDAUDIO_H
+
+#include <linux/device.h>
+
+/*
+ * exported bus type
+ */
+extern struct bus_type snd_hda_bus_type;
+
+/*
+ * HD-audio codec base device
+ */
+struct hdac_device {
+       struct device dev;
+       int type;
+};
+
+/* device/driver type used for matching */
+enum {
+       HDA_DEV_CORE,
+       HDA_DEV_LEGACY,
+};
+
+#define dev_to_hdac_dev(_dev)  container_of(_dev, struct hdac_device, dev)
+
+/*
+ * HD-audio codec base driver
+ */
+struct hdac_driver {
+       struct device_driver driver;
+       int type;
+       int (*match)(struct hdac_device *dev, struct hdac_driver *drv);
+};
+
+#define drv_to_hdac_driver(_drv) container_of(_drv, struct hdac_driver, driver)
+
+#endif /* __SOUND_HDAUDIO_H */
diff --cc sound/Kconfig
Simple merge
diff --cc sound/Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge