Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d4ff66a authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'topic/hda' into for-linus

* topic/hda: (92 commits)
  ALSA: hda - Use auto model for HP laptops with ALC268 codec
  ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital
  ALSA: hda - Add support of Alienware M17x laptop
  ALSA: hda - Remove dead codes from patch_sigmatel.c
  ALSA: hda - Fix input source selection of IDT92HD73xx
  ALSA: hda - Fix obsolete CONFIG_SND_DEBUG_DETECT
  ALSA: hda - Unmute docking line-out as default with AD1984A codec
  ALSA: hda - Add another entry for Nvidia HDMI device
  ALSA: hda - Add missing GPIO initialization for AD1984A laptop model
  ALSA: hda - Add support of docking auto-mute/mic for AD1984A laptop model
  ALSA: hda - Fix ALC268/ALC269 headphone pin routing
  ALSA: hda - Create "Digital Mic Capture Volume" correctly for IDT codecs
  ALSA: hda - Add more quirk for HP laptops with AD1984A
  ALSA: hda - Add / fix model entries for HD-audio driver
  ALSA: hda - Add full audio support on Acer Aspire 7730G notebook
  ALSA: hda - Improve auto-cfg mixer name for ALC662
  ALSA: hda - Improve auto-cfg mixer name for ALC861-VD
  ALSA: hda - Improve auto-cfg mixer name for ALC262
  ALSA: hda - Improve auto-cfg mixer name for ALC260
  ALSA: hda - Improve auto-cfg mixer name for ALC880
  ...
parents 6a0f4021 33d78674
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -788,6 +788,10 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
    bdl_pos_adj	- Specifies the DMA IRQ timing delay in samples.
		Passing -1 will make the driver to choose the appropriate
		value based on the controller chip.
    patch	- Specifies the early "patch" files to modify the HD-audio
    		setup before initializing the codecs.  This option is
		available only when CONFIG_SND_HDA_PATCH_LOADER=y is set.
		See HD-Audio.txt for details.
    
    [Single (global) options]
    single_cmd  - Use single immediate commands to communicate with
+24 −9
Original line number Diff line number Diff line
@@ -114,8 +114,8 @@ ALC662/663/272
  samsung-nc10	Samsung NC10 mini notebook
  auto		auto-config reading BIOS (default)

ALC882/885
==========
ALC882/883/885/888/889
======================
  3stack-dig	3-jack with SPDIF I/O
  6stack-dig	6-jack digital with SPDIF I/O
  arima		Arima W820Di1
@@ -127,12 +127,8 @@ ALC882/885
  mbp3		Macbook Pro rev3
  imac24	iMac 24'' with jack detection
  w2jc		ASUS W2JC
  auto		auto-config reading BIOS (default)

ALC883/888
==========
  3stack-dig	3-jack with SPDIF I/O
  6stack-dig	6-jack digital with SPDIF I/O
  3stack-2ch-dig	3-jack with SPDIF I/O (ALC883)
  alc883-6stack-dig	6-jack digital with SPDIF I/O (ALC883)
  3stack-6ch    3-jack 6-channel
  3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
  6stack-dig-demo  6-jack digital for Intel demo board
@@ -140,6 +136,7 @@ ALC883/888
  acer-aspire	Acer Aspire 9810
  acer-aspire-4930g Acer Aspire 4930G
  acer-aspire-6530g Acer Aspire 6530G
  acer-aspire-7730g Acer Aspire 7730G
  acer-aspire-8930g Acer Aspire 8930G
  medion	Medion Laptops
  medion-md2	Medion MD2
@@ -155,10 +152,13 @@ ALC883/888
  3stack-hp	HP machines with 3stack (Lucknow, Samba boards)
  6stack-dell	Dell machines with 6stack (Inspiron 530)
  mitac		Mitac 8252D
  clevo-m540r	Clevo M540R (6ch + digital)
  clevo-m720	Clevo M720 laptop series
  fujitsu-pi2515 Fujitsu AMILO Pi2515
  fujitsu-xa3530 Fujitsu AMILO XA3530
  3stack-6ch-intel Intel DG33* boards
  intel-alc889a	Intel IbexPeak with ALC889A
  intel-x58	Intel DX58 with ALC889
  asus-p5q	ASUS P5Q-EM boards
  mb31		MacBook 3,1
  sony-vaio-tt  Sony VAIO TT
@@ -229,7 +229,7 @@ AD1984
======
  basic		default configuration
  thinkpad	Lenovo Thinkpad T61/X61
  dell		Dell T3400
  dell_desktop	Dell T3400

AD1986A
=======
@@ -258,6 +258,7 @@ Conexant 5045
  laptop-micsense   Laptop with Mic sense (old model fujitsu)
  laptop-hpmicsense Laptop with HP and Mic senses
  benq		Benq R55E
  laptop-hp530	HP 530 laptop
  test		for testing/debugging purpose, almost all controls
		can be adjusted.  Appearing only when compiled with
		$CONFIG_SND_DEBUG=y
@@ -278,9 +279,16 @@ Conexant 5051
  hp-dv6736	HP dv6736
  lenovo-x200	Lenovo X200 laptop

Conexant 5066
=============
  laptop	Basic Laptop config (default)
  dell-laptop	Dell laptops
  olpc-xo-1_5	OLPC XO 1.5

STAC9200
========
  ref		Reference board
  oqo		OQO Model 2
  dell-d21	Dell (unknown)
  dell-d22	Dell (unknown)
  dell-d23	Dell (unknown)
@@ -368,10 +376,12 @@ STAC92HD73*
===========
  ref		Reference board
  no-jd		BIOS setup but without jack-detection
  intel		Intel DG45* mobos
  dell-m6-amic	Dell desktops/laptops with analog mics
  dell-m6-dmic	Dell desktops/laptops with digital mics
  dell-m6	Dell desktops/laptops with both type of mics
  dell-eq	Dell desktops/laptops
  alienware	Alienware M17x
  auto		BIOS setup (default)

STAC92HD83*
@@ -385,3 +395,8 @@ STAC9872
========
  vaio		VAIO laptop without SPDIF
  auto		BIOS setup (default)

Cirrus Logic CS4206/4207
========================
  mbp55		MacBook Pro 5,5
  auto		BIOS setup (default)
+64 −0
Original line number Diff line number Diff line
@@ -138,6 +138,10 @@ override the BIOS setup or to provide more comprehensive features.
The driver checks PCI SSID and looks through the static configuration
table until any matching entry is found.  If you have a new machine,
you may see a message like below:
------------------------------------------------------------------------
    hda_codec: ALC880: BIOS auto-probing.
------------------------------------------------------------------------
Meanwhile, in the earlier versions, you would see a message like:
------------------------------------------------------------------------
    hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...
------------------------------------------------------------------------
@@ -403,6 +407,66 @@ re-configure based on that state, run like below:
------------------------------------------------------------------------


Early Patching
~~~~~~~~~~~~~~
When CONFIG_SND_HDA_PATCH_LOADER=y is set, you can pass a "patch" as a
firmware file for modifying the HD-audio setup before initializing the
codec.  This can work basically like the reconfiguration via sysfs in
the above, but it does it before the first codec configuration.

A patch file is a plain text file which looks like below:

------------------------------------------------------------------------
  [codec]
  0x12345678 0xabcd1234 2

  [model]
  auto

  [pincfg]
  0x12 0x411111f0

  [verb]
  0x20 0x500 0x03
  0x20 0x400 0xff

  [hint]
  hp_detect = yes
------------------------------------------------------------------------

The file needs to have a line `[codec]`.  The next line should contain
three numbers indicating the codec vendor-id (0x12345678 in the
example), the codec subsystem-id (0xabcd1234) and the address (2) of
the codec.  The rest patch entries are applied to this specified codec
until another codec entry is given.

The `[model]` line allows to change the model name of the each codec.
In the example above, it will be changed to model=auto.
Note that this overrides the module option.

After the `[pincfg]` line, the contents are parsed as the initial
default pin-configurations just like `user_pin_configs` sysfs above.
The values can be shown in user_pin_configs sysfs file, too.

Similarly, the lines after `[verb]` are parsed as `init_verbs`
sysfs entries, and the lines after `[hint]` are parsed as `hints`
sysfs entries, respectively.

The hd-audio driver reads the file via request_firmware().  Thus,
a patch file has to be located on the appropriate firmware path,
typically, /lib/firmware.  For example, when you pass the option
`patch=hda-init.fw`, the file /lib/firmware/hda-init-fw must be
present.

The patch module option is specific to each card instance, and you
need to give one file name for each instance, separated by commas.
For example, if you have two cards, one for an on-board analog and one 
for an HDMI video board, you may pass patch option like below:
------------------------------------------------------------------------
    options snd-hda-intel patch=on-board-patch,hdmi-patch
------------------------------------------------------------------------


Power-Saving
~~~~~~~~~~~~
The power-saving is a kind of auto-suspend of the device.  When the
+27 −0
Original line number Diff line number Diff line
@@ -46,6 +46,20 @@ config SND_HDA_INPUT_JACK
	  Say Y here to enable the jack plugging notification via
	  input layer.

config SND_HDA_PATCH_LOADER
	bool "Support initialization patch loading for HD-audio"
	depends on EXPERIMENTAL
	select FW_LOADER
	select SND_HDA_HWDEP
	select SND_HDA_RECONFIG
	help
	  Say Y here to allow the HD-audio driver to load a pseudo
	  firmware file ("patch") for overriding the BIOS setup at
	  start up.  The "patch" file can be specified via patch module
	  option, such as patch=hda-init.

	  This option turns on hwdep and reconfig features automatically.

config SND_HDA_CODEC_REALTEK
	bool "Build Realtek HD-audio codec support"
	default y
@@ -134,6 +148,19 @@ config SND_HDA_ELD
	def_bool y
	depends on SND_HDA_CODEC_INTELHDMI

config SND_HDA_CODEC_CIRRUS
	bool "Build Cirrus Logic codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include Cirrus Logic codec support in
	  snd-hda-intel driver, such as CS4206.

	  When the HD-audio driver is built as a module, the codec
	  support code is also built as another module,
	  snd-hda-codec-cirrus.
	  This module is automatically loaded at probing.

config SND_HDA_CODEC_CONEXANT
	bool "Build Conexant HD-audio codec support"
	default y
+4 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ snd-hda-codec-analog-objs := patch_analog.o
snd-hda-codec-idt-objs :=	patch_sigmatel.o
snd-hda-codec-si3054-objs :=	patch_si3054.o
snd-hda-codec-atihdmi-objs :=	patch_atihdmi.o
snd-hda-codec-cirrus-objs :=	patch_cirrus.o
snd-hda-codec-ca0110-objs :=	patch_ca0110.o
snd-hda-codec-conexant-objs :=	patch_conexant.o
snd-hda-codec-via-objs :=	patch_via.o
@@ -41,6 +42,9 @@ endif
ifdef CONFIG_SND_HDA_CODEC_ATIHDMI
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-atihdmi.o
endif
ifdef CONFIG_SND_HDA_CODEC_CIRRUS
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-cirrus.o
endif
ifdef CONFIG_SND_HDA_CODEC_CA0110
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-ca0110.o
endif
Loading