Gerd Hoffmann d61a4ce8f0 Add Intel HD Audio support to qemu.
This patch adds three devices to qemu:

intel-hda
	Intel HD Audio Controller, the PCI device.  Provides a HDA bus.
	Emulates ICH6 at the moment.  Adding a ICH9 PCIE
	variant shouldn't be hard.

hda-duplex
	HDA Codec.  Attaches to the HDA bus.  Supports 16bit stereo,
	rates 16k -> 96k, playback, recording and volume control
	(with CONFIG_MIXEMU=y).

hda-output
	HDA Codec without recording support.  Subset of the hda-duplex
	codec.  Use this if you don't want your guests access your mic.

Usage: add '-device intel-hda -device hda-duplex' to your command line.

Tested guests:
 * Linux works.
 * Win7 works.
 * DOS (mpxplay) works.
 * WinXP doesn't work.

[ v2 changes ]
 * Fixed endianess, big endian hosts work now.
 * Fixed some emulation bugs.
 * Added immediate command emulation.
 * Added vmstate support.
 * Make it behave like all other sound card drivers:
   - can be configured via '--audio-card-list=hda'
   - can be added to a VM using '-soundhw hda'
 * Code style fixups.
 * Zapped guest-triggerable asserts.
 * Handle partial reads/writes of audio data correctly.

Cc: malc <av1474@comtv.ru>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: malc <av1474@comtv.ru>
2010-11-01 17:57:22 +03:00
..
2010-10-22 14:49:35 +02:00
2010-06-13 19:00:50 +01:00
2009-11-19 16:45:21 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-06-19 07:47:42 +00:00
2010-05-15 17:36:13 +00:00
2010-07-11 20:33:10 +03:00
2009-11-19 16:45:21 +00:00
2010-07-06 10:36:28 -05:00
2009-05-08 02:35:15 +01:00
2009-11-13 04:04:18 +00:00
2010-07-06 10:36:28 -05:00
2009-11-19 16:45:21 +00:00
2010-07-06 10:36:28 -05:00
2010-11-01 17:57:22 +03:00
2010-04-08 21:17:10 +02:00
2009-11-22 21:27:40 +00:00
2009-11-22 21:27:40 +00:00
2009-10-01 16:12:16 -05:00
2009-11-09 08:43:03 -06:00
2010-07-06 10:36:28 -05:00
2010-04-08 21:44:38 +02:00
2010-02-07 19:28:32 +00:00
2010-08-24 15:22:24 +00:00
2010-04-05 19:57:40 +01:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2009-11-22 21:27:40 +00:00
2009-05-10 01:44:56 +01:00
2010-09-09 19:37:16 +00:00
2010-04-18 08:55:12 +00:00
2010-04-18 08:55:12 +00:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2009-03-28 16:17:50 +00:00
2010-03-29 19:23:56 +00:00
2010-09-24 04:09:01 +04:00
2004-11-07 18:04:02 +00:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-06-27 16:04:55 +00:00
2010-02-07 09:15:26 +00:00
2010-08-24 15:22:24 +00:00
2009-09-10 19:48:00 +04:00
2010-07-06 10:36:28 -05:00
2010-06-14 11:12:53 -05:00
2010-11-01 17:57:12 +03:00
2010-07-06 10:36:28 -05:00
2009-10-05 09:32:39 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-06-19 07:41:43 +00:00
2010-03-21 19:47:09 +00:00
2010-05-22 08:00:52 +00:00
2010-09-04 09:53:53 +00:00
2010-07-31 17:14:50 +02:00
2010-07-30 23:05:51 +02:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2010-07-06 10:36:28 -05:00
2010-08-24 15:22:24 +00:00
2009-05-10 01:44:56 +01:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:27 -05:00
2009-10-01 16:12:16 -05:00
2009-12-03 09:41:32 -06:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-10-13 18:41:29 +00:00
2010-10-13 18:41:29 +00:00
2009-11-19 16:45:21 +00:00
2010-09-18 05:53:14 +00:00
2009-09-11 10:19:48 -05:00
2009-09-11 10:19:48 -05:00
2010-07-06 10:36:28 -05:00
2010-08-24 15:22:24 +00:00
2010-07-06 10:36:28 -05:00
2009-12-04 20:44:44 +00:00
2009-12-03 09:41:31 -06:00
2010-02-07 08:05:03 +00:00
2010-09-18 05:53:14 +00:00
2009-10-01 16:12:16 -05:00
2010-06-30 20:41:36 +02:00
2010-09-18 07:01:48 +00:00
2009-10-01 16:12:16 -05:00
2010-09-18 07:01:48 +00:00
2010-06-30 20:41:37 +02:00
2010-08-24 15:22:24 +00:00
2009-10-01 16:12:16 -05:00
2010-08-28 08:50:40 +00:00
2010-08-24 15:22:24 +00:00
2010-03-23 09:59:54 +01:00
2010-03-21 19:47:15 +00:00
2009-12-23 16:35:00 +02:00
2010-08-24 15:22:24 +00:00
2010-10-05 13:53:56 -05:00
2010-09-18 05:53:14 +00:00
2010-08-24 15:22:24 +00:00
2010-07-11 23:14:57 +03:00
2009-12-03 09:41:31 -06:00
2010-09-18 05:53:14 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2010-10-13 18:41:29 +00:00
2010-10-13 18:41:29 +00:00
2009-10-01 16:12:16 -05:00
2010-03-21 19:47:11 +00:00
2009-10-01 16:12:16 -05:00
2010-10-13 18:38:07 +00:00
2010-10-13 18:41:29 +00:00
2010-10-13 18:41:29 +00:00
2010-10-13 18:41:29 +00:00
2010-09-08 14:55:19 -05:00
2009-10-01 16:12:16 -05:00
2009-11-13 04:04:18 +00:00
2010-07-06 10:36:28 -05:00
2008-12-13 09:32:43 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-09-18 07:01:48 +00:00
2010-04-05 19:57:40 +01:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2010-07-11 23:15:22 +03:00
2009-10-01 16:12:16 -05:00
2010-09-15 15:35:53 +02:00
2010-04-13 20:17:24 +02:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-09-18 05:53:14 +00:00
2009-09-20 14:58:02 +00:00
2010-09-18 07:01:48 +00:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-10-07 08:54:54 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-10-01 16:12:16 -05:00
2010-08-24 15:22:24 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-10-02 14:27:41 +00:00
2010-10-02 14:27:41 +00:00
2010-08-24 15:22:24 +00:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2009-12-04 20:44:44 +00:00
2010-08-24 15:22:24 +00:00
2010-06-13 23:37:31 +01:00
2010-04-04 21:18:26 +01:00
2010-03-31 11:16:52 -05:00
2010-08-24 15:22:24 +00:00
2010-04-08 11:11:21 +02:00
2010-07-06 10:36:28 -05:00
2010-07-06 10:36:28 -05:00
2010-08-22 17:11:06 -05:00
2010-04-01 13:56:43 -05:00
2010-10-07 12:19:47 +02:00
2010-04-01 13:56:43 -05:00
2010-10-13 18:41:29 +00:00
2010-06-13 19:00:50 +01:00
2010-02-03 19:47:34 -02:00
2009-09-20 08:02:28 +00:00
2010-10-13 18:41:29 +00:00
2009-12-02 08:57:43 -06:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2010-08-24 15:22:24 +00:00
2009-12-03 09:41:34 -06:00
2009-06-13 16:18:31 +03:00
2010-06-13 19:00:50 +01:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-07-06 10:36:28 -05:00