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

Commit a016af2e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "We've had quite busy weeks in this cycle.  Looking at ALSA core, the
  significant changes are a few fixes wrt timer and sequencer ioctls
  that have been revealed by fuzzer recently.  Other than that, ASoC
  core got a few updates about DAI link handling, but these are rather
  straightforward refactoring.

  In drivers scene, ASoC received quite lots of new drivers in addition
  to bunch of updates for still ongoing Intel Skylake support and
  topology API.  HD-audio gained a new HDMI/DP hotplug notification via
  component.  FireWire got a pile of code refactoring/updates with
  SCS.1x driver integration.

  More highlights are shown below.

  [ NOTE: this contains also many commits for DRM.  This is due to the
    pull of drm stable branch into sound tree, as the base of i915 audio
    component work for HD-audio.  The highlights below don't contain
    these DRM changes, as these are supposed to be pulled via drm tree
    in anyway sooner or later.  ]

  Core:
   - Handful fixes to harden ALSA timer and sequencer ioctls against
     races reported by syzkaller fuzzer
   - Irq description string can be unique to each card; only for
     HD-audio for now

  ASoC:
   - Conversion of the array of DAI links to a list for supporting
     dynamically adding and removing DAI links
   - Topology API enhancements to make everything more component based
     and being able to specify PCM links via topology
   - Some more fixes for the topology code, though it is still not final
     and ready for enabling in production; we really need to get to the
     point where that can be done
   - A pile of changes for Intel SkyLake drivers which hopefully deliver
     some useful initial functionality for systems with this chipset,
     though there is more work still to come
   - Lots of new features and cleanups for the Renesas drivers
   - ANC support for WM5110
   - New drivers: Imagination Technologies IPs, Atmel class D speaker,
     Cirrus CS47L24 and WM1831, Dialog DA7128, Realtek RT5659 and
     RT56156, Rockchip RK3036, TI PC3168A, and AMD ACP
   - Rename PCM1792a driver to be generic pcm179x

  HD-Audio:
   - Use audio component for i915 HDMI/DP hotplug handling
   - On-demand binding with i915 driver
   - bdl_pos_adj parameter adjustment for Baytrail controllers
   - Enable power_save_node for CX20722; this shouldn't lead to
     regression, hopefully
   - Kabylake HDMI/DP codec support
   - Quirks for Lenovo E50-80, Dell Latitude E-series, and other Dell
     machines
   - A few code refactoring

  FireWire:
   - Lots of code cleanup and refactoring
   - Integrate the support of SCS.1x devices into snd-oxfw driver;
     snd-scs1x driver is obsoleted

  USB-audio:
   - Fix possible NULL dereference at disconnection
   - A regression fix for Native Instruments devices

  Misc:
   - A few code cleanups of fm801 driver"

* tag 'sound-4.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (722 commits)
  ALSA: timer: Code cleanup
  ALSA: timer: Harden slave timer list handling
  ALSA: hda - Add fixup for Dell Latitidue E6540
  ALSA: timer: Fix race among timer ioctls
  ALSA: hda - add codec support for Kabylake display audio codec
  ALSA: timer: Fix double unlink of active_list
  ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices
  ALSA: hda - fix the headset mic detection problem for a Dell laptop
  ALSA: hda - Fix white noise on Dell Latitude E5550
  ALSA: hda_intel: add card number to irq description
  ALSA: seq: Fix race at timer setup and close
  ALSA: seq: Fix missing NULL check at remove_events ioctl
  ALSA: usb-audio: Avoid calling usb_autopm_put_interface() at disconnect
  ASoC: hdac_hdmi: remove unused hdac_hdmi_query_pin_connlist
  ASoC: AMD: Add missing include file
  ALSA: hda - Fixup inverted internal mic for Lenovo E50-80
  ALSA: usb: Add native DSD support for Oppo HA-1
  ASoC: Make aux_dev more like a generic component
  ASoC: bcm2835: cleanup includes by ordering them alphabetically
  ASoC: AMD: Manage ACP 2.x SRAM banks power
  ...
parents e535d74b c3b16813
Loading
Loading
Loading
Loading
+20 −40
Original line number Diff line number Diff line
@@ -615,18 +615,6 @@ char *date;</synopsis>
          <function>drm_gem_object_init</function>. Storage for private GEM
          objects must be managed by drivers.
        </para>
        <para>
          Drivers that do not need to extend GEM objects with private information
          can call the <function>drm_gem_object_alloc</function> function to
          allocate and initialize a struct <structname>drm_gem_object</structname>
          instance. The GEM core will call the optional driver
          <methodname>gem_init_object</methodname> operation after initializing
          the GEM object with <function>drm_gem_object_init</function>.
          <synopsis>int (*gem_init_object) (struct drm_gem_object *obj);</synopsis>
        </para>
        <para>
          No alloc-and-init function exists for private GEM objects.
        </para>
      </sect3>
      <sect3>
        <title>GEM Objects Lifetime</title>
@@ -635,10 +623,10 @@ char *date;</synopsis>
          acquired and release by <function>calling drm_gem_object_reference</function>
          and <function>drm_gem_object_unreference</function> respectively. The
          caller must hold the <structname>drm_device</structname>
          <structfield>struct_mutex</structfield> lock. As a convenience, GEM
          provides the <function>drm_gem_object_reference_unlocked</function> and
          <function>drm_gem_object_unreference_unlocked</function> functions that
          can be called without holding the lock.
	  <structfield>struct_mutex</structfield> lock when calling
	  <function>drm_gem_object_reference</function>. As a convenience, GEM
	  provides <function>drm_gem_object_unreference_unlocked</function>
	  functions that can be called without holding the lock.
        </para>
        <para>
          When the last reference to a GEM object is released the GEM core calls
@@ -649,15 +637,9 @@ char *date;</synopsis>
        </para>
        <para>
          <synopsis>void (*gem_free_object) (struct drm_gem_object *obj);</synopsis>
          Drivers are responsible for freeing all GEM object resources, including
          the resources created by the GEM core. If an mmap offset has been
          created for the object (in which case
          <structname>drm_gem_object</structname>::<structfield>map_list</structfield>::<structfield>map</structfield>
          is not NULL) it must be freed by a call to
          <function>drm_gem_free_mmap_offset</function>. The shmfs backing store
          must be released by calling <function>drm_gem_object_release</function>
          (that function can safely be called if no shmfs backing store has been
          created).
          Drivers are responsible for freeing all GEM object resources. This includes
          the resources created by the GEM core, which need to be released with
          <function>drm_gem_object_release</function>.
        </para>
      </sect3>
      <sect3>
@@ -740,17 +722,10 @@ char *date;</synopsis>
          DRM identifies the GEM object to be mapped by a fake offset passed
          through the mmap offset argument. Prior to being mapped, a GEM object
          must thus be associated with a fake offset. To do so, drivers must call
          <function>drm_gem_create_mmap_offset</function> on the object. The
          function allocates a fake offset range from a pool and stores the
          offset divided by PAGE_SIZE in
          <literal>obj-&gt;map_list.hash.key</literal>. Care must be taken not to
          call <function>drm_gem_create_mmap_offset</function> if a fake offset
          has already been allocated for the object. This can be tested by
          <literal>obj-&gt;map_list.map</literal> being non-NULL.
          <function>drm_gem_create_mmap_offset</function> on the object.
        </para>
        <para>
          Once allocated, the fake offset value
          (<literal>obj-&gt;map_list.hash.key &lt;&lt; PAGE_SHIFT</literal>)
          must be passed to the application in a driver-specific way and can then
          be used as the mmap offset argument.
        </para>
@@ -836,10 +811,11 @@ char *date;</synopsis>
          abstracted from the client in libdrm.
        </para>
      </sect3>
      <sect3>
    </sect2>
    <sect2>
      <title>GEM Function Reference</title>
!Edrivers/gpu/drm/drm_gem.c
      </sect3>
!Iinclude/drm/drm_gem.h
    </sect2>
    <sect2>
      <title>VMA Offset Manager</title>
@@ -4201,17 +4177,21 @@ int num_ioctls;</synopsis>
      </sect2>
    </sect1>
    <sect1>
      <title>GuC-based Command Submission</title>
      <sect2>
      <title>GuC</title>
      <sect2>
        <title>GuC-specific firmware loader</title>
!Pdrivers/gpu/drm/i915/intel_guc_loader.c GuC-specific firmware loader
!Idrivers/gpu/drm/i915/intel_guc_loader.c
      </sect2>
      <sect2>
        <title>GuC Client</title>
!Pdrivers/gpu/drm/i915/i915_guc_submission.c GuC-based command submissison
        <title>GuC-based command submission</title>
!Pdrivers/gpu/drm/i915/i915_guc_submission.c GuC-based command submission
!Idrivers/gpu/drm/i915/i915_guc_submission.c
      </sect2>
      <sect2>
        <title>GuC Firmware Layout</title>
!Pdrivers/gpu/drm/i915/intel_guc_fwif.h GuC Firmware Layout
      </sect2>
    </sect1>

    <sect1>
+10 −0
Original line number Diff line number Diff line
@@ -7,6 +7,16 @@ Required properties:
- compatible : "asahi-kasei,ak4613"
- reg : The chip select number on the I2C bus

Optional properties:
- asahi-kasei,in1-single-end	: Boolean. Indicate input / output pins are single-ended.
- asahi-kasei,in2-single-end	  rather than differential.
- asahi-kasei,out1-single-end
- asahi-kasei,out2-single-end
- asahi-kasei,out3-single-end
- asahi-kasei,out4-single-end
- asahi-kasei,out5-single-end
- asahi-kasei,out6-single-end

Example:

&i2c {
+55 −0
Original line number Diff line number Diff line
* Atmel PDMIC driver under ALSA SoC architecture

Required properties:
- compatible
	Should be "atmel,sama5d2-pdmic".
- reg
	Should contain PDMIC registers location and length.
- interrupts
	Should contain the IRQ line for the PDMIC.
- dmas
	One DMA specifiers as described in atmel-dma.txt and dma.txt files.
- dma-names
	Must be "rx".
- clock-names
	Required elements:
	- "pclk"	peripheral clock
	- "gclk"	generated clock
- clocks
	Must contain an entry for each required entry in clock-names.
	Please refer to clock-bindings.txt.
- atmel,mic-min-freq
	The minimal frequency that the micphone supports.
- atmel,mic-max-freq
	The maximal frequency that the micphone supports.

Optional properties:
- pinctrl-names, pinctrl-0
	Please refer to pinctrl-bindings.txt.
- atmel,model
	The user-visible name of this sound card.
	The default value is "PDMIC".
- atmel,mic-offset
	The offset that should be added.
	The range is from -32768 to 32767.
	The default value is 0.

Example:
	pdmic@f8018000 {
				compatible = "atmel,sama5d2-pdmic";
				reg = <0xf8018000 0x124>;
				interrupts = <48 IRQ_TYPE_LEVEL_HIGH 7>;
				dmas = <&dma0
					(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
					| AT91_XDMAC_DT_PERID(50))>;
				dma-names = "rx";
				clocks = <&pdmic_clk>, <&pdmic_gclk>;
				clock-names = "pclk", "gclk";

				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_pdmic_default>;
				atmel,model = "PDMIC @ sama5d2_xplained";
				atmel,mic-min-freq = <1000000>;
				atmel,mic-max-freq = <3246000>;
				atmel,mic-offset = <0x0>;
	};
+104 −0
Original line number Diff line number Diff line
Dialog Semiconductor DA7218 Audio Codec bindings

DA7218 is an audio codec with HP detect feature.

======

Required properties:
- compatible : Should be "dlg,da7217" or "dlg,da7218"
- reg: Specifies the I2C slave address

- VDD-supply: VDD power supply for the device
- VDDMIC-supply: VDDMIC power supply for the device
- VDDIO-supply: VDDIO power supply for the device
  (See Documentation/devicetree/bindings/regulator/regulator.txt for further
   information relating to regulators)

Optional properties:
- interrupt-parent: Specifies the phandle of the interrupt controller to which
  the IRQs from DA7218 are delivered to.
- interrupts: IRQ line info for DA7218 chip.
  (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
   further information relating to interrupt properties)
- interrupt-names : Name associated with interrupt line. Should be "wakeup" if
  interrupt is to be used to wake system, otherwise "irq" should be used.
- wakeup-source: Flag to indicate this device can wake system (suspend/resume).

- clocks : phandle and clock specifier for codec MCLK.
- clock-names : Clock name string for 'clocks' attribute, should be "mclk".

- dlg,micbias1-lvl-millivolt : Voltage (mV) for Mic Bias 1
	[<1200>, <1600>, <1800>, <2000>, <2200>, <2400>, <2600>, <2800>, <3000>]
- dlg,micbias2-lvl-millivolt : Voltage (mV) for Mic Bias 2
	[<1200>, <1600>, <1800>, <2000>, <2200>, <2400>, <2600>, <2800>, <3000>]
- dlg,mic1-amp-in-sel : Mic1 input source type
	["diff", "se_p", "se_n"]
- dlg,mic2-amp-in-sel : Mic2 input source type
	["diff", "se_p", "se_n"]
- dlg,dmic1-data-sel : DMIC1 channel select based on clock edge.
	["lrise_rfall", "lfall_rrise"]
- dlg,dmic1-samplephase : When to sample audio from DMIC1.
	["on_clkedge", "between_clkedge"]
- dlg,dmic1-clkrate-hz : DMic1 clock frequency (Hz).
	[<1500000>, <3000000>]
- dlg,dmic2-data-sel : DMic2 channel select based on clock edge.
	["lrise_rfall", "lfall_rrise"]
- dlg,dmic2-samplephase : When to sample audio from DMic2.
	["on_clkedge", "between_clkedge"]
- dlg,dmic2-clkrate-hz : DMic2 clock frequency (Hz).
	[<1500000>, <3000000>]
- dlg,hp-diff-single-supply : Boolean flag, use single supply for HP
			      (DA7217 only)

======

Optional Child node - 'da7218_hpldet' (DA7218 only):

Optional properties:
- dlg,jack-rate-us : Time between jack detect measurements (us)
	[<5>, <10>, <20>, <40>, <80>, <160>, <320>, <640>]
- dlg,jack-debounce : Number of debounce measurements taken for jack detect
	[<0>, <2>, <3>, <4>]
- dlg,jack-threshold-pct : Threshold level for jack detection (% of VDD)
	[<84>, <88>, <92>, <96>]
- dlg,comp-inv : Boolean flag, invert comparator output
- dlg,hyst : Boolean flag, enable hysteresis
- dlg,discharge : Boolean flag, auto discharge of Mic Bias on jack removal

======

Example:

	codec: da7218@1a {
		compatible = "dlg,da7218";
		reg = <0x1a>;
		interrupt-parent = <&gpio6>;
		interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
		wakeup-source;

		VDD-supply = <&reg_audio>;
		VDDMIC-supply = <&reg_audio>;
		VDDIO-supply = <&reg_audio>;

		clocks = <&clks 201>;
		clock-names = "mclk";

		dlg,micbias1-lvl-millivolt = <2600>;
		dlg,micbias2-lvl-millivolt = <2600>;
		dlg,mic1-amp-in-sel = "diff";
		dlg,mic2-amp-in-sel = "diff";

		dlg,dmic1-data-sel = "lrise_rfall";
		dlg,dmic1-samplephase = "on_clkedge";
		dlg,dmic1-clkrate-hz = <3000000>;
		dlg,dmic2-data-sel = "lrise_rfall";
		dlg,dmic2-samplephase = "on_clkedge";
		dlg,dmic2-clkrate-hz = <3000000>;

		da7218_hpldet {
			dlg,jack-rate-us = <40>;
			dlg,jack-debounce = <2>;
			dlg,jack-threshold-pct = <84>;
			dlg,hyst;
		};
	};
+5 −3
Original line number Diff line number Diff line
@@ -28,13 +28,15 @@ Optional properties:
- clocks : phandle and clock specifier for codec MCLK.
- clock-names : Clock name string for 'clocks' attribute, should be "mclk".

- dlg,ldo-lvl : Required internal LDO voltage (mV) level for digital engine
	[<1050>, <1100>, <1200>, <1400>]
- dlg,micbias-lvl : Voltage (mV) for Mic Bias
	[<1800>, <2000>, <2200>, <2400>, <2600>]
	[<1600>, <1800>, <2000>, <2200>, <2400>, <2600>]
- dlg,mic-amp-in-sel : Mic input source type
	["diff", "se_p", "se_n"]

Deprecated properties:
- dlg,ldo-lvl : Required internal LDO voltage (mV) level for digital engine
  (LDO unavailable in production HW so property no longer required).

======

Child node - 'da7219_aad':
Loading