09 Sep, 2013

2 commits

  • MacBook 6,1 and 6,2 have a CS4208 codec instead of CS4206/CS4207 on
    the former models. Most of functions work fine as is, except for the
    silent speaker output. After debugging sessions, it turned out that
    the machine needs to set GPIO 0 for the speaker amp.

    This patch adds the basic support for CS4208 and the fixup for these
    MacBooks. Basically the codec works just with the generic parser.
    For re-using the existing GPIO amp code and init/free callbacks, a few
    places have been changed so that CS4206/4207-specific codes (errata,
    etc) won't hit with CS4208.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=60811
    Reported-and-tested-by: Imre Kaloz
    Reported-and-tested-by: Ian Munsie
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Toshiba Satellite C870 shows interrupt problems occasionally when
    certain mixer controls like "Mic Switch" is toggled. This seems
    worked around by not using MSI.

    Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=833585
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

07 Sep, 2013

2 commits

  • When Gfx driver reconnects a port and transcoder, the pin amplifier will
    be muted. To enable sound, the pin amp need to be unmuted.

    This patch
    - moves pin amp unmuting from stream preparing to hdmi_setup_audio_infoframe().
    So if port:transcoder reconnection happens during stream playback, the ELDV
    unsol event can stil trigger pin's amp unmuting when re-setting up audio
    info frame.

    - remove reading pin amp status before unmuting for speed-up, since pin amp
    should always be unmuted.

    - rename haswell_verify_pin_D0() to haswell_verify_D0(), since the convertor
    power state is also fixed here.

    This patch is mostly based on suggestion of David Henningsson.

    Cc: David Henningsson
    Signed-off-by: Mengdong Lin
    Signed-off-by: Takashi Iwai

    Mengdong Lin
     
  • To apply Haswell specific fixings, this patch defines is_haswell() to check
    whether a display audio codec is Haswell, to avoid explicitly checking Haswell
    vendor ID everywhere.

    Signed-off-by: Mengdong Lin
    Signed-off-by: Takashi Iwai

    Mengdong Lin
     

06 Sep, 2013

1 commit

  • ASUS TX300 has a built-in speaker in the tablet part and in the dock
    part, and the tablet speaker is supposed to be unused while the
    machine is docked. The current HD-audio driver, however, doesn't
    support the dock speaker, partly because BIOS doesn't set up the pin
    for the corresponding output.

    But, not only the missing pin config, also the missing unsol event
    handling is another issue. Otherwise the automatic switching via
    dock/undock won't work.

    Through debugging sessions, we found out that the dock speaker pin is
    NID 0x1b, and it generates an unsol event at docking/undocking, the
    docking state can be inquired via the normal pin detection verb.
    Also, it's turned out that GPIO 2 is needed as an amp. So, all
    materials are ready to cook.

    This patch provides the basic dock speaker support with TX300:
    - The dock speaker is turned on/off via "Dock Speaker" mixer mute.
    - The dock speaker is automatically muted when docked. This is
    independently from the mixer mute switch, just like the headphone
    auto-mute function.

    The implementation is a bit tricky. Since we want to handle it as a
    secondary speaker, we set it up a pin as a speaker with a jack
    detection. Then, the fixup function registers the own unsol callback
    for this pin because the standard automute can't handle the thing like
    a "speaker jack". In the own automute hook, we apply the mute of the
    tablet speaker in addition by checking the dock state.

    Also, the speaker control names are slightly shuffled because the
    generic parser doesn't give good names but blindly assumes a bass
    speaker as a secondary speaker.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59791
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

03 Sep, 2013

1 commit

  • When the transcoder:port mapping on Haswell HDMI/DP audio is changed
    during the stream playback, the sound gets lost. Typically this
    problem is seen when the user switches the graphics mode from eDP+DP
    to DP-only configuration, where CRTC 1 is used for DP in the former
    while CRTC 0 is used for the latter.

    The graphics controller notifies the change via the normal ELD update
    procedure, so we get the intrinsic event. For enabling the sound
    again, the HDMI audio driver needs to reset the pin and set up the
    audio infoframe again.

    This patch achieves it by:
    - keep the current status of channels and info frame setup in per_pin
    struct,
    - check the reconnection in the intrinsic event handler,
    - reset the pin and the re-invoke hdmi_setup_audio_infoframe()
    accordingly.

    The hdmi_setup_audio_infoframe() function has been changed, too, so
    that it can be invoked without passing the substream instance.

    The patch is mostly based on the work by Mengdong Lin.

    Cc: Mengdong Lin
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

02 Sep, 2013

6 commits


01 Sep, 2013

4 commits

  • On a mx28 board, running "aplay -l" and "arecord -l" results in the following:

    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: mxssgtl5000 [mxs_sgtl5000], device 0: Playback sgtl5000-0 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 0: mxssgtl5000 [mxs_sgtl5000], device 1: Capture sgtl5000-1 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: mxssgtl5000 [mxs_sgtl5000], device 0: Playback sgtl5000-0 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 0: mxssgtl5000 [mxs_sgtl5000], device 1: Capture sgtl5000-1 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    ,which is not correct because we got a capture device listed in aplay and a
    playback device listed in arecord.

    On mx28 there are two serial audio interface ports (SAIF0 and SAIF1) and each
    one of them are unidirectional.

    Allow to specify a dai link as 'playback_only' or 'capture_only', which suits
    well for this case.

    After this change we can correctly report the capabilities as follows:

    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: mxssgtl5000 [mxs_sgtl5000], device 0: HiFi Playback sgtl5000-0 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: mxssgtl5000 [mxs_sgtl5000], device 1: HiFi Capture sgtl5000-1 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    Also tested playback and capture on the mx28evk board.

    Signed-off-by: Fabio Estevam
    Signed-off-by: Mark Brown

    Fabio Estevam
     
  • Add 'playback_only' and 'capture_only' fields that can be used for specifying
    that a dai_link has a unidirectional capability.

    The motivation for this is for the cases of systems, such as Freescale MX28,
    that has two unidirectional DAIs.

    Signed-off-by: Fabio Estevam
    Signed-off-by: Mark Brown

    Fabio Estevam
     
  • Signed-off-by: Mark Brown
    Acked-by: Nicolin Chen

    Mark Brown
     
  • The ssm2602 uses regmap for caching not soc-cache, so we need to use
    regcache_sync() instead of snd_soc_cache_sync().

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Mark Brown

    Lars-Peter Clausen
     

31 Aug, 2013

5 commits


30 Aug, 2013

14 commits


29 Aug, 2013

4 commits


28 Aug, 2013

1 commit