Support for Compal EL81 (Intel HDA/Realtek alc883)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

-- 
  *         Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido@xxxxxxxxx             che bisogno ci sarebbe
  *               di parlare tanto di amore e di rettitudine? (Chuang-Tzu)
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux