Dell vostro 5470 has mono speakers and broken headset mic

Bug #1236228 reported by David Henningsson
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
Fix Released
Undecided
Unassigned
linux (Ubuntu)
Fix Released
Undecided
David Henningsson

Bug Description

We need a patch to enable
 - headset microphone
 - stereo speakers.

Changed in linux (Ubuntu):
status: New → In Progress
assignee: nobody → David Henningsson (diwic)
Revision history for this message
David Henningsson (diwic) wrote :

Alsa-info for Dell Vostro 5470

Revision history for this message
David Henningsson (diwic) wrote : [PATCH] ALSA: hda - Fix mono speakers and headset mic on Dell Vostro 5470

On this machine, DAC on node 0x03 seems to give mono output.

Also, it needs additional patches for headset mic support.
It supports CTIA style headsets only.

Alsa-info available at the bug link below.

Cc: <email address hidden> (v3.10+)
BugLink: https://bugs.launchpad.net/bugs/1236228
Signed-off-by: David Henningsson <email address hidden>
---
 sound/pci/hda/patch_realtek.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 0e303b9..52c26d3 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3496,6 +3496,15 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
  }
 }

+static void alc290_fixup_mono_speakers(struct hda_codec *codec,
+ const struct hda_fixup *fix, int action)
+{
+ if (action == HDA_FIXUP_ACT_PRE_PROBE)
+ /* Remove DAC node 0x03, as it seems to be
+ giving mono output */
+ snd_hda_override_wcaps(codec, 0x03, 0);
+}
+
 enum {
  ALC269_FIXUP_SONY_VAIO,
  ALC275_FIXUP_SONY_VAIO_GPIO2,
@@ -3522,6 +3531,7 @@ enum {
  ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
  ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
  ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
+ ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
  ALC269_FIXUP_HEADSET_MODE,
  ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
  ALC269_FIXUP_ASUS_X101_FUNC,
@@ -3535,6 +3545,7 @@ enum {
  ALC283_FIXUP_CHROME_BOOK,
  ALC282_FIXUP_ASUS_TX300,
  ALC283_FIXUP_INT_MIC,
+ ALC290_FIXUP_MONO_SPEAKERS,
 };

 static const struct hda_fixup alc269_fixups[] = {
@@ -3712,6 +3723,15 @@ static const struct hda_fixup alc269_fixups[] = {
   .chained = true,
   .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
  },
+ [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
+ .type = HDA_FIXUP_PINS,
+ .v.pins = (const struct hda_pintbl[]) {
+ { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
+ { }
+ },
+ .chained = true,
+ .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+ },
  [ALC269_FIXUP_HEADSET_MODE] = {
   .type = HDA_FIXUP_FUNC,
   .v.func = alc_fixup_headset_mode,
@@ -3804,6 +3824,12 @@ static const struct hda_fixup alc269_fixups[] = {
   .chained = true,
   .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
  },
+ [ALC290_FIXUP_MONO_SPEAKERS] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = alc290_fixup_mono_speakers,
+ .chained = true,
+ .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
+ },
 };

 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -3845,6 +3871,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
  SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
  SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
  SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
  SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
  SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
  SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
--
1.7.9.5

tags: added: blocks-hwcert-enablement
Changed in linux (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Takashi Iwai (tiwai) wrote :
Download full text (3.3 KiB)

At Mon, 7 Oct 2013 10:39:59 +0200,
David Henningsson wrote:
>
> On this machine, DAC on node 0x03 seems to give mono output.
>
> Also, it needs additional patches for headset mic support.
> It supports CTIA style headsets only.
>
> Alsa-info available at the bug link below.
>
> Cc: <email address hidden> (v3.10+)
> BugLink: https://bugs.launchpad.net/bugs/1236228
> Signed-off-by: David Henningsson <email address hidden>

Thanks, applied.

Takashi

> ---
> sound/pci/hda/patch_realtek.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 0e303b9..52c26d3 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -3496,6 +3496,15 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
> }
> }
>
> +static void alc290_fixup_mono_speakers(struct hda_codec *codec,
> + const struct hda_fixup *fix, int action)
> +{
> + if (action == HDA_FIXUP_ACT_PRE_PROBE)
> + /* Remove DAC node 0x03, as it seems to be
> + giving mono output */
> + snd_hda_override_wcaps(codec, 0x03, 0);
> +}
> +
> enum {
> ALC269_FIXUP_SONY_VAIO,
> ALC275_FIXUP_SONY_VAIO_GPIO2,
> @@ -3522,6 +3531,7 @@ enum {
> ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
> ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
> ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
> + ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
> ALC269_FIXUP_HEADSET_MODE,
> ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
> ALC269_FIXUP_ASUS_X101_FUNC,
> @@ -3535,6 +3545,7 @@ enum {
> ALC283_FIXUP_CHROME_BOOK,
> ALC282_FIXUP_ASUS_TX300,
> ALC283_FIXUP_INT_MIC,
> + ALC290_FIXUP_MONO_SPEAKERS,
> };
>
> static const struct hda_fixup alc269_fixups[] = {
> @@ -3712,6 +3723,15 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> },
> + [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
> + .type = HDA_FIXUP_PINS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
> + { }
> + },
> + .chained = true,
> + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
> + },
> [ALC269_FIXUP_HEADSET_MODE] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = alc_fixup_headset_mode,
> @@ -3804,6 +3824,12 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
> },
> + [ALC290_FIXUP_MONO_SPEAKERS] = {
> + .type = HDA_FIXUP_FUNC,
> + .v.func = alc290_fixup_mono_speakers,
> + .chained = true,
> + .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
> + },
> };
>
> static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> @@ -3845,6 +3871,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> + SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
> SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MI...

Read more...

Changed in hwe-next:
status: New → Fix Committed
Revision history for this message
Brad Figg (brad-figg) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-saucy' to 'verification-done-saucy'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-saucy
Brad Figg (brad-figg)
tags: added: verification-done-saucy
removed: verification-needed-saucy
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (18.4 KiB)

This bug was fixed in the package linux - 3.11.0-13.20

---------------
linux (3.11.0-13.20) saucy; urgency=low

  [ Brad Figg ]

  * Release Tracking Bug
    - LP: #1242793

  [ Paolo Pisati ]

  * [Config] amhf: VIRTIO_CONSOLE=y
    - LP: #1237982
  * [Config] AHCI_IMX=y
    - LP: #1240038

  [ Tim Gardner ]

  * [Config] CONFIG_USB_OTG=n for all arches
    - LP: #1047527
  * dm-raid4-5: Fix compile issues
    - LP: #1241086
  * [Config] CONFIG_DM_RAID45=m
    - LP: #1241086

  [ Upstream Kernel Changes ]

  * Revert "cw1200: Don't perform SPI transfers in interrupt context"
    - LP: #1237530
  * block: Fix bio_copy_data()
    - LP: #1237530
  * sysv: Add forgotten superblock lock init for v7 fs
    - LP: #1237530
  * bcache: Fix a dumb journal discard bug
    - LP: #1237530
  * bcache: Strip endline when writing the label through sysfs
    - LP: #1237530
  * bcache: Fix for when no journal entries are found
    - LP: #1237530
  * bcache: Fix a writeback performance regression
    - LP: #1237530
  * bcache: Fix a flush/fua performance bug
    - LP: #1237530
  * bcache: Fix a dumb CPU spinning bug in writeback
    - LP: #1237530
  * bcache: Fix a shrinker deadlock
    - LP: #1237530
  * bcache: Fix for handling overlapping extents when reading in a btree
    node
    - LP: #1237530
  * bcache: Fix flushes in writeback mode
    - LP: #1237530
  * kernel/reboot.c: re-enable the function of variable reboot_default
    - LP: #1237530
  * x86/reboot: Add quirk to make Dell C6100 use reboot=pci automatically
    - LP: #1237530
  * tools lib lk: Uninclude linux/magic.h in debugfs.c
    - LP: #1237530
  * x86, efi: Don't map Boot Services on i386
    - LP: #1237530
  * mei: make me client counters less error prone
    - LP: #1237530
  * mei: bus: stop wait for read during cl state transition
    - LP: #1237530
  * mei: cancel stall timers in mei_reset
    - LP: #1237530
  * tty: Fix SIGTTOU not sent with tcflush()
    - LP: #1237530
  * serial: tegra: fix tty-kref leak
    - LP: #1237530
  * serial: pch_uart: fix tty-kref leak in rx-error path
    - LP: #1237530
  * serial: pch_uart: fix tty-kref leak in dma-rx path
    - LP: #1237530
  * ARM: 7837/3: fix Thumb-2 bug in AES assembler code
    - LP: #1237530
  * staging: vt6656: [BUG] main_usb.c oops on device_close move flag
    earlier.
    - LP: #1237530
  * staging: vt6656: [BUG] iwctl_siwencodeext return if device not open
    - LP: #1237530
  * drm/i915/tv: clear adjusted_mode.flags
    - LP: #1237530
  * cw1200: Use a threaded oneshot irq handler for cw1200_spi
    - LP: #1237530
  * xhci: Ensure a command structure points to the correct trb on the
    command ring
    - LP: #1237530
  * xhci: Fix oops happening after address device timeout
    - LP: #1237530
  * USB: fix PM config symbol in uhci-hcd, ehci-hcd, and xhci-hcd
    - LP: #1237530
  * xhci: Fix race between ep halt and URB cancellation
    - LP: #1237530
  * USB: OHCI: accept very late isochronous URBs
    - LP: #1237530
  * USB: UHCI: accept very late isochronous URBs
    - LP: #1237530
  * USB: Fix breakage in ffs_fs_mount()
    - LP: #1237530
  * fsl/usb: Resolve PHY_CLK_VLD instability issue for ULPI phy
    - LP: #1237530
  *...

Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
Changed in hwe-next:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.