Paul Menzel (paulepanter@users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2984
-gerrit
commit 4ce1ef5b5cf64e7457e2dd86db4c1cbdea959f55 Author: Paul Menzel paulepanter@users.sourceforge.net Date: Fri Mar 29 21:41:56 2013 +0100
ASRock E350M1: Provide HD Audio verb table for Realtek ALC892
Use the same HD Audio [1] verb table for the Realtek ALC892 audio chip [2] as the proprietary vendor BIOS version P1.60 sets up [2], which Linux exposes under its virtual filesystem sysfs.
/sys/class/sound/hwC1D0/init_pin_configs
The difference between the verb table between the vendor BIOS and coreboot is shown in the following output [3]. (Beware of the ordering!)
$ wdiff vendorbios_vt coreboot_vt # init_pin_config 0x11 [-0x411111f0-] {+0x411110f0+} 0x12 0x411111f0 0x14 [-0x01014010-] {+0x01014030+} 0x15 [-0x01011012-] {+0x01011031+} 0x16 [-0x01016011-] {+0x01016032+} 0x17 [-0x411111f0-] {+0x01012033+} 0x18 [-0x01a19840-] {+0x01a19850+} 0x19 [-0x02a19950-] {+0x02a19c80+} 0x1a [-0x0181304f-] {+0x01813051+} 0x1b [-0x02214120-] {+0x02214c40+} 0x1c [-0x411111f0-] {+0x9933105f+} 0x1d [-0x4005e601-] {+0x00000100+} 0x1e [-0x01452130-] {+0x01441070+} 0x1f [-0x411111f0-] {+0x41c46060+}
Note, that currently no problems are know with the default verb table used with coreboot. Sound over HDMI works fine and stereo out too. More thorough tests would need to be performed to test each connector for the front and back panel.
Additionally, I was not able to find out, where the values for the default verb table under coreboot come from. Searching for »6032« – a substring used in the default table – did not yield any results in coreboot and the Linux kernel (ALSA).
Additionally the script `alsa-info.sh` [5] seems to be able to decode the table. The differences of the section
HDA-Intel Codec information
are pasted to the comments of the Gerrit page, where this patch is reviewed on.
[1] http://en.wikipedia.org/wiki/Intel_High_Definition_Audio [2] http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=24&am... [3] http://www.coreboot.org/pipermail/coreboot/2013-March/075559.html [4] http://mailman.alsa-project.org/pipermail/alsa-devel/2013-March/060717.html [5] http://alsa-project.org/main/index.php/Help_To_Debug
Change-Id: I03cb1ffc86554ebf55c355f5363f490a3ca58260 Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net --- src/mainboard/asrock/e350m1/platform_cfg.h | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
diff --git a/src/mainboard/asrock/e350m1/platform_cfg.h b/src/mainboard/asrock/e350m1/platform_cfg.h index 24a66dd..a54e561 100644 --- a/src/mainboard/asrock/e350m1/platform_cfg.h +++ b/src/mainboard/asrock/e350m1/platform_cfg.h @@ -227,6 +227,45 @@ */ #define GEC_CONFIG 0
+static const CODECENTRY e350m1_codec_alc892[] = /* Realtek ALC892 */ +{ + /* + * The comments after each entry are taken from the block + * diagram (figure 1) in the ALC892 datasheet + * (Rev. 1.3, Track ID: JATR-2265-11) on page 5 which is available for download + * on the Realtek Web site. + */ + + /* NID, PinConfig (Verbs 71F..C) */ + {0x11, 0x411111F0}, /* S/PDIF-OUT 2 */ + {0x12, 0x411111F0}, /* DMIC-L/R */ + {0x14, 0x01014010}, /* FRONT (Port-D) */ + {0x15, 0x01011012}, /* SURR (Port-A) */ + {0x16, 0x01016011}, /* CEN/LFE (Port-G) */ + {0x17, 0x411111F0}, /* SIDESURR (Port-H) */ + {0x18, 0x01A19840}, /* MIC1 (Port-B) */ + {0x19, 0x02A19950}, /* MIC2 (Port-F) */ + {0x1A, 0x0181304F}, /* LINE1 (Port-C) */ + {0x1B, 0x02214120}, /* LINE2 (Port-E) */ + {0x1C, 0x411111F0}, /* CD-IN */ + {0x1D, 0x4005E601}, /* BEEP-IN */ + {0x1E, 0x01452130}, /* S/PDIF-OUT */ + {0x1F, 0x411111F0}, /* S/PDIF-IN */ + {0xff, 0xffffffff} /* end of table */ +}; + +static const CODECTBLLIST codec_tablelist[] = +{ + {0x10ec0892, (CODECENTRY*)&e350m1_codec_alc892[0]}, + {0xFFFFFFFF, (CODECENTRY*)0xFFFFFFFFL} +}; + +/** + * @def AZALIA_OEM_VERB_TABLE + * Mainboard specific codec verb table list + */ +#define AZALIA_OEM_VERB_TABLE (&codec_tablelist[0]) + /** * @def SIO_HWM_BASE_ADDRESS Super IO HWM base address */