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

Commit ce38207f authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "No dramatic changes are found in this development cycle, but as usual,
  many commits are applied in a wide range of drivers.

  Most of big changes are in ASoC, where a few bits of framework work
  and quite a lot of cleanups and improvements to existing code have
  been done. The rest are usual stuff, a few HD-audio and USB-audio
  quirks and fixes, as well as the drop of kthread usages in the whole
  subsystem.

  Below are some highlights:

  ASoC:
   - support for stereo DAPM controls
   - some initial work on the of-graph sound card
   - regmap conversions of the remaining AC'97 drivers
   - a new version of the topology ABI; this should be backward
     compatible
   - updates / cleanups of rsnd, sunxi, sti, nau8825, samsung, arizona,
     Intel skylake, atom-sst
   - new drivers for Cirrus Logic CS42L42, Qualcomm MSM8916-WCD, and
     Realtek RT5665

  USB-audio:
   - yet another race fix at disconnection
   - tolerated packet size calculation for some Android devices
   - quirks for Axe-Fx II, QuickCam, TEAC 501/503

  HD-audio:
   - improvement of Dell pin fixup mapping
   - quirks for HP Z1 Gen3, Alienware 15 R2 2016 and ALC622 headset mic

  Misc:
   - replace all kthread usages with simple works"

* tag 'sound-4.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (296 commits)
  ALSA: hiface: Fix M2Tech hiFace driver sampling rate change
  ALSA: usb-audio: Eliminate noise at the start of DSD playback.
  ALSA: usb-audio: Add native DSD support for TEAC 501/503 DAC
  ASoC: wm_adsp: wm_adsp_buf_alloc should use kfree in error path
  ASoC: topology: avoid uninitialized kcontrol_type
  ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks
  ALSA: usb-audio: add implicit fb quirk for Axe-Fx II
  ASoC: zte: spdif: correct ZX_SPDIF_CLK_RAT define
  ASoC: zte: spdif and i2s drivers are not zx296702 specific
  ASoC: rsnd: setup BRGCKR/BRRA/BRRB when starting
  ASoC: rsnd: enable/disable ADG when suspend/resume timing
  ASoC: rsnd: tidyup ssi->usrcnt counter check in hw_params
  ALSA: cs46xx: add a new line
  ASoC: Intel: update bxt_da7219_max98357a to support quad ch dmic capture
  ASoC: nau8825: disable sinc filter for high THD of ADC
  ALSA: usb-audio: more tolerant packetsize
  ALSA: usb-audio: avoid setting of sample rate multiple times on bus
  ASoC: cs35l34: Simplify the logic to set CS35L34_MCLK_CTL setting
  ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
  ALSA: hda: when comparing pin configurations, ignore assoc in addition to seq
  ...
parents a9042def 995c6a7f
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
What:		/sys/devices/platform/8086%x:00/firmware_version
Date:		November 2016
KernelVersion:	4.10
Contact:	"Sebastien Guiriec" <sebastien.guiriec@intel.com>
Description:
		LPE Firmware version for SST driver on all atom
		plaforms (BYT/CHT/Merrifield/BSW).
		If the FW has never been loaded it will display:
			"FW not yet loaded"
		If FW has been loaded it will display:
			"v01.aa.bb.cc"
		aa: Major version is reflecting SoC version:
			0d: BYT FW
			0b: BSW FW
			07: Merrifield FW
		bb: Minor version
		cc: Build version
+88 −0
Original line number Diff line number Diff line
Devicetree bindings for the Axentia TSE-850 audio complex

Required properties:
  - compatible: "axentia,tse850-pcm5142"
  - axentia,ssc-controller: The phandle of the atmel SSC controller used as
    cpu dai.
  - axentia,audio-codec: The phandle of the PCM5142 codec.
  - axentia,add-gpios: gpio specifier that controls the mixer.
  - axentia,loop1-gpios: gpio specifier that controls loop relays on channel 1.
  - axentia,loop2-gpios: gpio specifier that controls loop relays on channel 2.
  - axentia,ana-supply: Regulator that supplies the output amplifier. Must
    support voltages in the 2V - 20V range, in 1V steps.

The schematics explaining the gpios are as follows:

               loop1 relays
   IN1 +---o  +------------+  o---+ OUT1
            \                /
             +              +
             |   /          |
             +--o  +--.     |
             |  add   |     |
             |        V     |
             |      .---.   |
   DAC +----------->|Sum|---+
             |      '---'   |
             |              |
             +              +

   IN2 +---o--+------------+--o---+ OUT2
               loop2 relays

The 'loop1' gpio pin controlls two relays, which are either in loop position,
meaning that input and output are directly connected, or they are in mixer
position, meaning that the signal is passed through the 'Sum' mixer. Similarly
for 'loop2'.

In the above, the 'loop1' relays are inactive, thus feeding IN1 to the mixer
(if 'add' is active) and feeding the mixer output to OUT1. The 'loop2' relays
are active, short-cutting the TSE-850 from channel 2. IN1, IN2, OUT1 and OUT2
are TSE-850 connectors and DAC is the PCB name of the (filtered) output from
the PCM5142 codec.

Example:

	&i2c {
		codec: pcm5142@4c {
			compatible = "ti,pcm5142";

			reg = <0x4c>;

			AVDD-supply = <&reg_3v3>;
			DVDD-supply = <&reg_3v3>;
			CPVDD-supply = <&reg_3v3>;

			clocks = <&sck>;

			pll-in = <3>;
			pll-out = <6>;
		};
	};

	ana: ana-reg {
		compatible = "pwm-regulator";

		regulator-name = "ANA";

		pwms = <&pwm0 2 1000 PWM_POLARITY_INVERTED>;
		pwm-dutycycle-unit = <1000>;
		pwm-dutycycle-range = <100 1000>;

		regulator-min-microvolt = <2000000>;
		regulator-max-microvolt = <20000000>;
		regulator-ramp-delay = <1000>;
	};

	sound {
		compatible = "axentia,tse850-pcm5142";

		axentia,ssc-controller = <&ssc0>;
		axentia,audio-codec = <&codec>;

		axentia,add-gpios = <&pioA 8 GPIO_ACTIVE_LOW>;
		axentia,loop1-gpios = <&pioA 10 GPIO_ACTIVE_LOW>;
		axentia,loop2-gpios = <&pioA 11 GPIO_ACTIVE_LOW>;

		axentia,ana-supply = <&ana>;
	};
+64 −0
Original line number Diff line number Diff line
CS35L34 Speaker Amplifier

Required properties:

  - compatible : "cirrus,cs35l34"

  - reg : the I2C address of the device for I2C.

  - VA-supply, VP-supply : power supplies for the device,
    as covered in
    Documentation/devicetree/bindings/regulator/regulator.txt.

  - cirrus,boost-vtge-millivolt : Boost Voltage Value.  Configures the boost
    converter's output voltage in mV. The range is from VP to 8V with
    increments of 100mV.

  - cirrus,boost-nanohenry: Inductor value for boost converter. The value is
    in nH and they can be values of 1000nH, 1100nH, 1200nH, 1500nH, and 2200nH.

Optional properties:

  - reset-gpios: GPIO used to reset the amplifier.

  - interrupt-parent : Specifies the phandle of the interrupt controller to
    which the IRQs from CS35L34 are delivered to.
  - interrupts : IRQ line info CS35L34.
    (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
    for further information relating to interrupt properties)

  - cirrus,boost-peak-milliamp : Boost converter peak current limit in mA. The
    range starts at 1200mA and goes to a maximum of 3840mA with increments of
    80mA. The default value is 2480mA.

  - cirrus,i2s-sdinloc : ADSP SDIN I2S channel location. Indicates whether the
    received mono data is in the left or right portion of the I2S frame
    according to the AD0 pin or directly via this configuration.
    0x0 (Default) = Selected by AD0 input (if AD0 = LOW, use left channel),
    0x2 = Left,
    0x1 = Selected by the inversion of the AD0 input (if AD0 = LOW, use right
    channel),
    0x3 = Right.

  - cirrus,gain-zc-disable: Boolean property. If set, the gain change will take
    effect without waiting for a zero cross.

  - cirrus,tdm-rising-edge: Boolean property. If set, data is on the rising edge of
    SCLK. Otherwise, data is on the falling edge of SCLK.


Example:

cs35l34: cs35l34@40 {
	compatible = "cirrus,cs35l34";
	reg = <0x40>;

	interrupt-parent = <&gpio8>;
	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;

	reset-gpios = <&gpio 10 0>;

	cirrus,boost-vtge-milltvolt = <8000>; /* 8V */
	cirrus,boost-ind-nanohenry = <1000>; /* 1uH */
	cirrus,boost-peak-milliamp = <3000>; /* 3A */
};
+110 −0
Original line number Diff line number Diff line
CS42L42 audio CODEC

Required properties:

  - compatible : "cirrus,cs42l42"

  - reg : the I2C address of the device for I2C.

  - VP-supply, VCP-supply, VD_FILT-supply, VL-supply, VA-supply :
  power supplies for the device, as covered in
  Documentation/devicetree/bindings/regulator/regulator.txt.

Optional properties:

  - reset-gpios : a GPIO spec for the reset pin. If specified, it will be
  deasserted before communication to the codec starts.

  - interrupt-parent : Specifies the phandle of the interrupt controller to
  which the IRQs from CS42L42 are delivered to.

  - interrupts : IRQ line info CS42L42.
  (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
  for further information relating to interrupt properties)

  - cirrus,ts-inv : Boolean property. For jacks that invert the tip sense
  polarity. Normal jacks will short tip sense pin to HS1 when headphones are
  plugged in and leave tip sense floating when not plugged in. Inverting jacks
  short tip sense when unplugged and float when plugged in.

  0 = (Default) Non-inverted
  1 = Inverted

  - cirrus,ts-dbnc-rise : Debounce the rising edge of TIP_SENSE_PLUG. With no
  debounce, the tip sense pin might be noisy on a plug event.

  0 - 0ms,
  1 - 125ms,
  2 - 250ms,
  3 - 500ms,
  4 - 750ms,
  5 - (Default) 1s,
  6 - 1.25s,
  7 - 1.5s,

  - cirrus,ts-dbnc-fall : Debounce the falling edge of TIP_SENSE_UNPLUG.
  With no debounce, the tip sense pin might be noisy on an unplug event.

  0 - 0ms,
  1 - 125ms,
  2 - 250ms,
  3 - 500ms,
  4 - 750ms,
  5 - (Default) 1s,
  6 - 1.25s,
  7 - 1.5s,

  - cirrus,btn-det-init-dbnce : This sets how long the driver sleeps after
  enabling button detection interrupts. After auto-detection and before
  servicing button interrupts, the HS bias needs time to settle. If you
  don't wait, there is possibility for erroneous button interrupt.

  0ms - 200ms,
  Default = 100ms

  - cirrus,btn-det-event-dbnce : This sets how long the driver delays after
  receiving a button press interrupt. With level detect interrupts, you want
  to wait a small amount of time to make sure the button press is making a
  clean connection with the bias resistors.

  0ms - 20ms,
  Default = 10ms

  - cirrus,bias-lvls : For a level-detect headset button scheme, each button
  will bias the mic pin to a certain voltage. To determine which button was
  pressed, the driver will compare this biased voltage to sequential,
  decreasing voltages and will stop when a comparator is tripped,
  indicating a comparator voltage < bias voltage. This value represents a
  percentage of the internally generated HS bias voltage. For different
  hardware setups, a designer might want to tweak this. This is an array of
  descending values for the comparator voltage.

  Array of 4 values
  Each 0-63
  < x1 x2 x3 x4 >
  Default = < 15 8 4 1>


Example:

cs42l42: cs42l42@48 {
	compatible = "cirrus,cs42l42";
	reg = <0x48>;
	VA-supply = <&dummy_vreg>;
	VP-supply = <&dummy_vreg>;
	VCP-supply = <&dummy_vreg>;
	VD_FILT-supply = <&dummy_vreg>;
	VL-supply = <&dummy_vreg>;

	reset-gpios = <&axi_gpio_0 1 0>;
	interrupt-parent = <&gpio0>;
	interrupts = <55 8>

	cirrus,ts-inv = <0x00>;
	cirrus,ts-dbnc-rise = <0x05>;
	cirrus,ts-dbnc-fall = <0x00>;
	cirrus,btn-det-init-dbnce = <100>;
	cirrus,btn-det-event-dbnce = <10>;
	cirrus,bias-lvls = <0x0F 0x08 0x04 0x01>;
	cirrus,hs-bias-ramp-rate = <0x02>;
};
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ mcbsp0: mcbsp@1d10000 {
		<0x00310000 0x1000>;
	reg-names = "mpu", "dat";
	interrupts = <97 98>;
	interrupts-names = "rx", "tx";
	interrupt-names = "rx", "tx";
	dmas = <&edma0 3 1
		&edma0 2 1>;
	dma-names = "tx", "rx";
Loading