Good evening. I am the lucky owner of a nice Compal EL80 laptop, sporting an Intel HDA audio controller with realtek alc883. Here is what I get with lspci -vvv:
00:1b.0 Audio device [0403]: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller [8086:27d8] (rev 02) Subsystem: COMPAL Electronics Inc Unknown device [14c0:0017] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 22 Region 0: Memory at d2500000 (64-bit, non-prefetchable) [size=16K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [70] Express Unknown type IRQ 0 Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag- Device: Latency L0s <64ns, L1 <1us Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported- Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ Device: MaxPayload 128 bytes, MaxReadReq 128 bytes Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0 Link: Latency L0s <64ns, L1 <1us Link: ASPM Disabled CommClk- ExtSynch- Link: Speed unknown, Width x0 Capabilities: [100] Virtual Channel Capabilities: [130] Unknown (5)
I had very elementary operativity, but missed much, including for example microphone boost. I applied the following patch:
--8<-----8<----8<----8<----8<----8<----8<----8<----8<----8<---8<--
--- /usr/src/alsa/alsa-kernel/pci/hda/patch_realtek.c 2007-02-15 20:00:04.000000000 +0100 +++ ./patch_realtek.c 2007-03-15 08:36:30.000000000 +0100 @@ -141,6 +141,7 @@ ALC883_ACER, ALC883_MEDION, ALC883_LAPTOP_EAPD, + ALC883_LAPTOP_COMPAL, ALC883_AUTO, ALC883_MODEL_LAST, }; @@ -5582,6 +5583,7 @@ [ALC883_ACER] = "acer", [ALC883_MEDION] = "medion", [ALC883_LAPTOP_EAPD] = "laptop-eapd", + [ALC883_LAPTOP_COMPAL] = "laptop-compal", [ALC883_AUTO] = "auto", };
@@ -5607,6 +5609,7 @@ SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION), SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), + SND_PCI_QUIRK(0x14c0, 0x0017, "Compal EL80", ALC883_LAPTOP_COMPAL), {} };
@@ -5747,6 +5750,76 @@ .channel_mode = alc883_3ST_2ch_modes, .input_mux = &alc883_capture_source, }, +#if 1 + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_base_mixer, + alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs, alc882_eapd_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), + .channel_mode = alc883_3ST_2ch_modes, + .input_mux = &alc883_capture_source, + }, +#else + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_fivestack_mixer, --- /usr/src/alsa/alsa-kernel/pci/hda/patch_realtek.c 2007-02-15 20:00:04.000000000 +0100 +++ ./patch_realtek.c 2007-03-15 08:36:30.000000000 +0100 @@ -141,6 +141,7 @@ ALC883_ACER, ALC883_MEDION, ALC883_LAPTOP_EAPD, + ALC883_LAPTOP_COMPAL, ALC883_AUTO, ALC883_MODEL_LAST, }; @@ -5582,6 +5583,7 @@ [ALC883_ACER] = "acer", [ALC883_MEDION] = "medion", [ALC883_LAPTOP_EAPD] = "laptop-eapd", + [ALC883_LAPTOP_COMPAL] = "laptop-compal", [ALC883_AUTO] = "auto", };
@@ -5607,6 +5609,7 @@ SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION), SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), + SND_PCI_QUIRK(0x14c0, 0x0017, "Compal EL80", ALC883_LAPTOP_COMPAL), {} };
@@ -5747,6 +5750,76 @@ .channel_mode = alc883_3ST_2ch_modes, .input_mux = &alc883_capture_source, }, +#if 1 + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_base_mixer, + alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs, alc882_eapd_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), + .channel_mode = alc883_3ST_2ch_modes, + .input_mux = &alc883_capture_source, + }, +#else + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_fivestack_mixer, + alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs, + alc883_medion_eapd_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes), + .channel_mode = alc883_sixstack_modes, + .input_mux = &alc883_capture_source, + }, + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_3ST_2ch_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), + .channel_mode = alc883_3ST_2ch_modes, + .input_mux = &alc883_capture_source, + }, + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_3ST_6ch_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), + .channel_mode = alc883_3ST_6ch_modes, + .need_dac_fix = 1, + .input_mux = &alc883_capture_source, + }, + [ALC883_LAPTOP_COMPAL] = { + .mixers = { alc883_tagra_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs, alc883_tagra_verbs}, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), + .channel_mode = alc883_3ST_6ch_modes, + .need_dac_fix = 1, + .input_mux = &alc883_capture_source, + .unsol_event = alc883_tagra_unsol_event, + .init_hook = alc883_tagra_automute, + }, +#endif };
--8<-----8<----8<----8<----8<----8<----8<----8<----8<----8<---8<--
As you can see, I did various tests with possible 'alc_config_preset' structures. I could only copy from other existing examples, since I have no idea how you would obtain the correct values to insert there. With the first example, the only one that is commented in (copied from LAPTOP_EAPD), I could obtain a working microphone boost. The thing is far from perfect, though. Suffice to say that I find the main volume in the cursor labeled 'Surround' in alsamixer.
Is there any instruction about how to obtain the right information to configure this laptop of mine? Can you help? In this case, what other information may I provide?
Thanks in advance
Carlo - Den Haag, NL