All of lore.kernel.org
 help / color / mirror / Atom feed
* ASoC updates for v4.2
@ 2015-06-22  9:26 Mark Brown
  2015-06-22  9:58 ` Takashi Iwai
  0 siblings, 1 reply; 11+ messages in thread
From: Mark Brown @ 2015-06-22  9:26 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Liam Girdwood


[-- Attachment #1.1: Type: text/plain, Size: 48187 bytes --]

The following changes since commit 0f57d86787d8b1076ea8f9cbdddda2a46d534a27:

  Linux 4.1-rc8 (2015-06-14 15:51:10 -1000)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git tags/asoc-v4.2-2

for you to fetch changes up to c99d49a8f81fb35e67b0ffa45f320a75e0b5639d:

  Merge remote-tracking branch 'asoc/topic/wm8995' into asoc-next (2015-06-22 10:24:37 +0100)

----------------------------------------------------------------
ASoC: Further updates for v4.2

There's a bunch of additional updates and fixes that came in since my
orignal pull request here, including DT support for rt5645 and fairly
large serieses of cleanups and improvements to tas2552 and rcar.

----------------------------------------------------------------
Alexander Stein (2):
      ASoC: sgtl5000: Use specific variable for lo_vag
      ASoC: sgtl5000: Calculate Lineout Channel Output Level

Alexandre Belloni (4):
      ASoC: atmel: simplify Kconfig
      ASoC: atmel: compile pcm driver in snd-soc-atmel_ssc_dai
      ASoC: atmel: Revert previous fix for Kconfig limations
      ASoC: atmel: properly select dma driver state

Anatol Pomozov (1):
      ASoC: rt5677: Add reset-gpio dts option

Antonio Ospite (1):
      ASoC: adau1977: fix typo s/Substraction/Subtraction/

Arnaud Pouliquen (1):
      ASoC: simple card: Add mclk-fs property in dai-link

Arnd Bergmann (3):
      ASoC: omap: fix up SND_OMAP_SOC_OMAP_ABE_TWL6040 dependency, again
      ASoC: qcom: remove incorrect dependencies
      ASoC: qcom: fix STORM board Kconfig

Axel Lin (11):
      ASoC: da7210: Fix dependency to allow build with SND_SOC_I2C_AND_SPI
      ASoC: sta32x: Use devm_gpiod_get_optional at appropriate place
      ASoC: sta350: Use devm_gpiod_get_optional at appropriate place
      ASoC: wm8737: Fixup setting VMID Impedance control register
      ASoC: wm8903: Fix define for WM8903_VMID_RES_250K
      ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bits
      ASoC: max98925: Fix mask for setting DAI invert mode
      ASoC: tas2552: Use devm_gpiod_get_optional for enable-gpio
      ASoC: rt5645: Use devm_gpiod_get_optional for hp-detect
      ASoC: ml26124: Remove duplicate code
      ASoC: wm8995: Fix setting sysclk for WM8995_SYSCLK_MCLK2 case

Bard Liao (10):
      ASoC: rt5645: Adds push button support for rt5650
      ASoC: rt5677: add i2s asrc clk src selection
      ASoC: rt5645: fix implicit declaration error
      ASoC: rt5645: fix wrong mask for button report
      ASoC: rt5645: remove RT5645_I2S_BCLK_MS1 control
      ASoC: rt5645: fix PLL source register definitions
      ASoC: rt5645: add TDM slot control into dapm route
      ASoC: rt5645: make volume TLV closer to reality
      ASoC: rt5645: fix add missing widget
      ASoC: rt5645: remove unused field in pdata

Charles Keepax (22):
      ASoC: wm_adsp: Split out adsp1 & 2 setup algorithms
      ASoC: wm_adsp: Improve variable naming
      ASoC: wm_adsp: Remove len field from wm_adsp_alg_region
      ASoC: wm_adsp: Limit firmware control name to ALSA control name size
      ASoC: wm_adsp: Move temporary control name to the stack
      ASoC: wm_adsp: Clean up low level control read/write functions
      ASoC: wm_adsp: Factor out creation of alg_regions
      ASoC: wm_adsp: Remove private field from wm_coeff_ctl
      ASoC: wm_adsp: Group all the ALSA control functions together
      ASoC: wm_adsp: Add basic support for rev 1 firmware file format
      ASoC: wm_adsp: Add support for rev 2 firmware file format
      ASoC: wm_adsp: Warn that firmware file format 0 is depreciated
      ASoC: wm_adsp: Use __leXX for little endian data
      ASoC: wm_adsp: Add support for DSP control flags
      ASoC: dapm: Remove local OOM error message
      ASoC: Correct typo in SOC_VALUE_ENUM_SINGLE macro
      ASoC: dapm: Append "Autodisable" to autodisable widget names
      ASoC: dapm: Add support for autodisable mux controls
      ASoC: arizona: Use auto disable muxes for routing
      ASoC: dapm: Add missing mutex unlock
      ASoC: dapm: Break out of widget search when source and sink are located
      ASoC: dapm: Add cache to speed up adding of routes

Dan Carpenter (2):
      ASoC: wm8741: check for error returns from wm8741_set_pdata()
      ASoC: imx-wm8962: Add a missing error check

Dylan Reid (2):
      ASoC: Add jack types to dt-bindings
      ASoC: jack - add_gpiods accepts filled descriptors

Fabio Estevam (8):
      ASoC: fsl_ssi: No need call of_device_is_available()
      ASoC: fsl: fsl_dma: Use true/false for boolean init
      ASoC: fsl: imx-mc13783: Simplify trivial if-return sequence
      ASoC: wm8996: Pass the IRQF_ONESHOT flag
      ASoC: wm5100: Pass the IRQF_ONESHOT flag
      ASoC: wm8994: Pass the IRQF_ONESHOT flag
      ASoC: twl6040: Pass the IRQF_ONESHOT flag
      ASoC: max98095: Pass the IRQF_ONESHOT flag

Fang, Yang A (13):
      ASoC: Intel: Add support rt5650 in sst driver
      ASoC: rt5645: set platform data base on DMI
      ASoC: rt5645: fixed kbuild err
      ASoC: Intel: Add support max98090 in sst driver
      ASoC: Intel: Add Cherrytrail & Braswell machine driver cht_bsw_max98090_ti
      ASoC: Intel: Support rt5650 codec for Cherrytrail & Braswell
      ASoC: Intel: Fixed kbuild warnings
      ASoC: Intel: Enabled button jack for BSW platform with rt5650 codec
      ASoC: max98090: read micbias from device property
      ASoC: ts3a227e: use device property api
      ASoC: Intel: Fixed incorrect sst pcm_delay
      ASoC: Intel: Added I2C dependency to two BSW machine drivers
      ASoC: Intel: fixed TI button detection

Geert Uytterhoeven (2):
      ASoC: rsnd: Use generic names for device nodes
      ASoC: rsnd: Document r8a7778-specific binding

Jie Yang (6):
      ASoC: Intel: remove unused function hsw_pcm_free_modules()
      ASoC: Intel: don't need compress offload for broadwell
      ASoC: intel: Revert "ASoC: Intel: remove unused function hsw_pcm_free_modules()"
      ASoC: intel: Revert "ASoC: Intel: fix broadwell module removing failed issue"
      ASoC: Intel: check and clear runtime module pointer
      ASoC: Intel: handle haswell pcm suspend including runtime modules freeing

Jin Yao (1):
      ASoC: Intel: Remove invalid kfree of devm allocated data

John Lin (5):
      ASoC: rt5645: improve headphone depop function
      ASoC: rt5645: remove unnecessary power in JD function
      ASoC: rt5645: fix IRQ error in jack detection
      ASoC: rt5645: fix jack type detect error
      ASoC: rt5645: fix kernel hang when call rt5645_set_jack_detect()

Julian Scheel (1):
      ASoC: wm8523: Set bclk ratio for master mode

Jun Nie (5):
      ASoC: simple-card: support platform in dts parse
      ASoC: zx: Add zx296702 SPDIF support
      ASoC: zx: Add ZTE zx296702 I2S DAI driver
      dt: Add documentation for the ZTE SPDIF controller
      dt: Add documentation for the ZTE I2S controller

Jyri Sarha (5):
      ASoC: davinci-mcasp: Calculate BCLK using TDM slots and remove channels rule
      ASoC: davinci-mcasp: Channel count constraints for multi-serializer case
      ASoC: davinci-macsp: Optimize implicit BLCK sample-rate rule
      ASoC: core: If component doesn't have of_node use parent's node instead
      ASoC: davinci-mcasp: Choose PCM driver based on configured DMA controller

Kevin Cernekee (4):
      ASoC: tas571x: Add DT binding document
      ASoC: tas571x: New driver for TI TAS571x power amplifiers
      MAINTAINERS: Add entry for tas571x ASoC codec driver
      ASoC: tas571x: Eliminate redundant dev->of_node NULL check

Koro Chen (3):
      ASoC: mediatek: Add AFE platform driver
      ASoC: mediatek: Add machine driver for MAX98090 codec
      ASoC: mediatek: Add machine driver for rt5650 rt5676 codec

Krzysztof Kozlowski (4):
      ASoC: au1x: Constify platform_device_id
      ASoC: bt-sco: Constify platform_device_id
      ASoC: fsl: Constify platform_device_id
      ASoC: samsung: Constify platform_device_id

Kuninori Morimoto (34):
      ASoC: rsnd: add rsnd_dai_to_priv() macro
      ASoC: rsnd: make sure it uses lock when it calls rsnd_dai_call
      ASoC: rsnd: tidyup SSI parent related function/macro names
      ASoC: rsnd: make sure SSI parent/child uses same number of sound channel.
      ASoC: rsnd: care snd_kcontrol's index
      ASoC: soc.h: tidyup struct snd_soc_dai_link definition order
      ASoC: rsnd: revert lock for calls to rsnd_dai_call
      ASoC: rsnd: indicate unknown HW start
      ASoC: rsnd: add rsnd_dai_stream_quit()
      ASoC: soc-pcm: DPCM cares BE format
      ASoC: rsnd: rsrc-card uses FE/BE merged format when DPCM
      dmaengine: rcar-dmac: fixup spinlock in rcar-dmac
      ASoC: rsnd: spin lock for interrupt handler
      ASoC: rsnd: don't care under/over run error when PIO
      ASoC: rsnd: don't call snd_pcm_period_elapsed() under spin lock
      ASoC: rsrc-card: used "fe.xxx"/"be.xxx" name for dai_link
      ASoC: rsrc-card: tidyup priv->snd_card setup timing
      ASoC: rsrc-card: enable multi cpu/codec for DPCM
      ASoC: rsrc-card: remove unused name
      ASoC: rsnd-card: tidyup rsrc_priv_to_()
      ASoC: rsrc-card: move rsrc_card_parse_daifmt() to upper side
      ASoC: rsrc-card: tidyup return value of clock error
      ASoC: rsrc-card: cleanup for DPCM
      ASoC: rsnd: count each mod (SSI/SRC/DVC)
      ASoC: rsnd: rsnd_mod has rsnd_priv
      ASoC: rsnd: adds struct rsnd_dai_stream as on each fuction as parameter
      ASoC: rsnd: add common interrupt handler for SSI/SRC/DMA
      ASoC: rsnd: don't use rsnd_mod_to_io() on rsnd_get_adinr()
      ASoC: rsnd: don't use rsnd_mod_to_io() on rsnd_dma_xxx()
      ASoC: rsnd: don't use rsnd_mod_to_io() on rsnd_ssi_xxx()
      ASoC: rsnd: don't use rsnd_mod_to_io() on rsnd_src_xxx()
      ASoC: rsnd: don't use rsnd_mod_to_io() on snd_kcontrol
      ASoC: rsnd: move rsnd_mod_is_working() to rsnd_io_is_working()
      ASoC: rsnd: remove io from rsnd_mod

Lars-Peter Clausen (115):
      ASoC: at91sam9g20ek: Automatically disconnect non-connected pins
      ASoC: dmaengine_pcm: Make FLAG_NO_RESIDUE internal
      ASoC: Add helper function getting CODEC's DAPM context
      ASoC: Add helper functions bias level management
      ASoC: Route all bias level updates through the core
      ASoC: Move bias level update to the core
      ASoC: samsung: wolfson: Improve compile test coverage
      ASoC: lowland: Use card DAPM context to access widgets
      ASoC: smdk_wm8994: Use card DAPM context to access widgets
      ASoC: smartq: Remove unnecessary snd_soc_dapm_disable_pin()
      ASoC: smartq: Use card DAPM context to access widgets
      ASoC: speyside: Use snd_soc_codec_get_dapm()
      ASoC: ad1836: Replace direct snd_soc_codec dapm field access
      ASoC: adau17x1: Replace direct snd_soc_codec dapm field access
      ASoC: adau1977: Replace direct snd_soc_codec dapm field access
      ASoC: adav80x: Replace direct snd_soc_codec dapm field access
      ASoC: ssm2518: Replace direct snd_soc_codec dapm field access
      ASoC: ssm2602: Replace direct snd_soc_codec dapm field access
      ASoC: ssm4567: Replace direct snd_soc_codec dapm field access
      ASoC: dapm: Add new widgets to the end of the widget list
      ASoC: dapm: Add new widgets to the end of the widget list
      ASoC: dapm: Add demux support
      ASoC: lm4857: Use DAPM demux
      ASoC: lm4857: Convert to component
      ASoC: omap-twl4030: Use card DAPM context to access widgets
      ASoC: brownstone: Automatically disconnect non-connected pins
      ASoC: poodle: Automatically disconnect non-connected pins
      ASoC: tosa: Automatically disconnect non-connected pins
      ASoC: z2: Automatically disconnect non-connected pins
      ASoC: 88pm860x: Replace direct snd_soc_codec dapm field access
      ASoC: ab8500: Replace direct snd_soc_codec dapm field access
      ASoC: ak4641: Replace direct snd_soc_codec dapm field access
      ASoC: cx20442: Replace direct snd_soc_codec dapm field access
      ASoC: es8328: Replace direct snd_soc_codec dapm field access
      ASoC: jz4740: Replace direct snd_soc_codec dapm field access
      ASoC: ml26124: Replace direct snd_soc_codec dapm field access
      ASoC: uda134x: Replace direct snd_soc_codec dapm field access
      ASoC: uda1380: Replace direct snd_soc_codec dapm field access
      ASoC: sgtl5000: Replace direct snd_soc_codec dapm field access
      ASoC: sirf-audio-codec: Replace direct snd_soc_codec dapm field access
      ASoC: sn95031: Replace direct snd_soc_codec dapm field access
      ASoC: lm49453: Replace direct snd_soc_codec dapm field access
      ASoC: pcm512x: Replace direct snd_soc_codec dapm field access
      ASoC: tlv320aix31xx: Replace direct snd_soc_codec dapm field access
      ASoC: tlv320aic3x: Replace direct snd_soc_codec dapm field access
      ASoC: tlv320dac33: Replace direct snd_soc_codec dapm field access
      ASoC: twl4030: Replace direct snd_soc_codec dapm field access
      ASoC: twl6040: Replace direct snd_soc_codec dapm field access
      ASoC: Drop unnecessary bias level check on resume
      ASoC: sta32x: Replace direct snd_soc_codec dapm field access
      ASoC: sta350: Replace direct snd_soc_codec dapm field access
      ASoC: sta529: Replace direct snd_soc_codec dapm field access
      ASoC: da7213: Replace direct snd_soc_codec dapm field access
      ASoC: da732x: Replace direct snd_soc_codec dapm field access
      ASoC: da9055: Replace direct snd_soc_codec dapm field access
      ASoC: max98088: Replace direct snd_soc_codec dapm field access
      ASoC: max98090: Remove unnecessary snd_soc_dapm_sync()
      ASoC: max98090: Replace direct snd_soc_codec dapm field access
      ASoC: max98095: Replace direct snd_soc_codec dapm field access
      ASoC: max9850: Replace direct snd_soc_codec dapm field access
      ASoC: alc5623: Replace direct snd_soc_codec dapm field access
      ASoC: rt286: Replace direct snd_soc_codec dapm field access
      ASoC: rt5631: Replace direct snd_soc_codec dapm field access
      ASoC: rt5640: Replace direct snd_soc_codec dapm field access
      ASoC: rt5651: Replace direct snd_soc_codec dapm field access
      ASoC: rt5670: Replace direct snd_soc_codec dapm field access
      ASoC: rt5677: Replace direct snd_soc_codec dapm field access
      ASoC: cs42l52: Replace direct snd_soc_codec dapm field access
      ASoC: cs42l56: Replace direct snd_soc_codec dapm field access
      ASoC: cs42l73: Replace direct snd_soc_codec dapm field access
      ASoC: cs42xx8: Replace direct snd_soc_codec dapm field access
      ASoC: arizona: Replace direct snd_soc_codec dapm field access
      ASoC: wm0010: Replace direct snd_soc_codec dapm field access
      ASoC: wm5100: Replace direct snd_soc_codec dapm field access
      ASoC: wm5102: Replace direct snd_soc_codec dapm field access
      ASoC: wm5110: Replace direct snd_soc_codec dapm field access
      ASoC: wm8350: Replace direct snd_soc_codec dapm field access
      ASoC: wm8400: Replace direct snd_soc_codec dapm field access
      ASoC: wm8510: Replace direct snd_soc_codec dapm field access
      ASoC: wm8523: Replace direct snd_soc_codec dapm field access
      ASoC: wm8580: Replace direct snd_soc_codec dapm field access
      ASoC: wm8711: Replace direct snd_soc_codec dapm field access
      ASoC: wm8728: Replace direct snd_soc_codec dapm field access
      ASoC: wm8731: Replace direct snd_soc_codec dapm field access
      ASoC: wm8737: Replace direct snd_soc_codec dapm field access
      ASoC: wm8750: Replace direct snd_soc_codec dapm field access
      ASoC: wm8753: Replace direct snd_soc_codec dapm field access
      ASoC: wm8770: Replace direct snd_soc_codec dapm field access
      ASoC: wm8776: Replace direct snd_soc_codec dapm field access
      ASoC: wm8804: Replace direct snd_soc_codec dapm field access
      ASoC: wm8900: Replace direct snd_soc_codec dapm field access
      ASoC: wm8903: Replace direct snd_soc_codec dapm field access
      ASoC: wm8904: Replace direct snd_soc_codec dapm field access
      ASoC: wm8940: Replace direct snd_soc_codec dapm field access
      ASoC: wm8955: Replace direct snd_soc_codec dapm field access
      ASoC: wm8960: Replace direct snd_soc_codec dapm field access
      ASoC: wm8961: Replace direct snd_soc_codec dapm field access
      ASoC: wm8962: Replace direct snd_soc_codec dapm field access
      ASoC: wm8971: Replace direct snd_soc_codec dapm field access
      ASoC: wm8974: Replace direct snd_soc_codec dapm field access
      ASoC: wm8978: Replace direct snd_soc_codec dapm field access
      ASoC: wm8983: Replace direct snd_soc_codec dapm field access
      ASoC: wm8985: Replace direct snd_soc_codec dapm field access
      ASoC: wm8988: Replace direct snd_soc_codec dapm field access
      ASoC: wm8990: Replace direct snd_soc_codec dapm field access
      ASoC: wm8991: Replace direct snd_soc_codec dapm field access
      ASoC: wm8993: Replace direct snd_soc_codec dapm field access
      ASoC: wm8994: Replace direct snd_soc_codec dapm field access
      ASoC: wm8995: Replace direct snd_soc_codec dapm field access
      ASoC: wm8996: Replace direct snd_soc_codec dapm field access
      ASoC: wm8997: Replace direct snd_soc_codec dapm field access
      ASoC: wm9081: Replace direct snd_soc_codec dapm field access
      ASoC: wm9090: Replace direct snd_soc_codec dapm field access
      ASoC: wm_hubs: Replace direct snd_soc_codec dapm field access
      ASoC: rx51: Automatically disconnect non-connected pins

Liam Girdwood (6):
      ASoC: Intel: fix broadwell module removing failed issue
      ASoC: DAPM: Add APIs to create individual DAPM controls.
      ASoC: topology: Add topology UAPI header
      ASoC: topology: Add topology core
      ALSA: topology: Export ID types for TLV controls.
      ASoC: dapm: fix build errors for missing snd_soc_dapm_new_control symbol

Maciej S. Szmigiero (3):
      ASoC: ac97: Remove rate constraints
      ASoC: ac97: make selectable in config
      ASoC: codecs: use SNDRV_PCM_FMTBIT_* for format bitmask

Marek Belisko (2):
      ASoC: gtm601: Document GTM601 bindings
      ASoC: bt-sco: Add devicetree support for bt-sco codec

Mark Brown (44):
      Merge branch 'fix/rt5645' of git://git.kernel.org/.../broonie/sound into asoc-rt5645
      Merge branch 'topic/dapm' of git://git.kernel.org/.../broonie/sound into asoc-tas751x
      ASoC: tas751x: Factor setting of new bias level into the core
      Merge branch 'topic/rt5645' of git://git.kernel.org/.../broonie/sound into asoc-intel
      Merge branch 'topic/dpcm' of git://git.kernel.org/.../broonie/sound into asoc-rcar
      Merge branch 'topic/rcar-dma' of git://git.kernel.org/.../broonie/sound into asoc-rcar
      Merge branch 'topic/adsp' of git://git.kernel.org/.../broonie/sound into asoc-arizona
      ASoC: zte: Fix missing dev in devm operation
      Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-linus
      Merge remote-tracking branches 'asoc/fix/arizona', 'asoc/fix/fmtbit', 'asoc/fix/max98925', 'asoc/fix/rcar' and 'asoc/fix/ux500' into asoc-linus
      Merge remote-tracking branches 'asoc/fix/wm8737', 'asoc/fix/wm8903' and 'asoc/fix/wm8955' into asoc-linus
      Merge remote-tracking branch 'asoc/topic/core' into asoc-next
      Merge remote-tracking branch 'asoc/topic/dapm' into asoc-next
      Merge remote-tracking branch 'asoc/topic/dma' into asoc-next
      Merge remote-tracking branch 'asoc/topic/rt5645' into asoc-next
      Merge remote-tracking branches 'asoc/topic/ac97', 'asoc/topic/ad1836', 'asoc/topic/ada1977', 'asoc/topic/adau1701' and 'asoc/topic/adau17x1' into asoc-next
      Merge remote-tracking branches 'asoc/topic/adau1977', 'asoc/topic/adav80x', 'asoc/topic/arizona' and 'asoc/topic/atmel' into asoc-next
      Merge remote-tracking branches 'asoc/topic/au1x', 'asoc/topic/bt-sco', 'asoc/topic/cs35l32' and 'asoc/topic/da7210' into asoc-next
      Merge remote-tracking branches 'asoc/topic/davinci' and 'asoc/topic/dpcm' into asoc-next
      Merge remote-tracking branches 'asoc/topic/fsl', 'asoc/topic/fsl-sai', 'asoc/topic/fsl-spdif', 'asoc/topic/fsl-ssi' and 'asoc/topic/gpio-jack' into asoc-next
      Merge remote-tracking branches 'asoc/topic/gpiod-flags', 'asoc/topic/gtm601', 'asoc/topic/intel', 'asoc/topic/lm3857' and 'asoc/topic/max98090' into asoc-next
      Merge remote-tracking branches 'asoc/topic/max98095', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/qcom' and 'asoc/topic/rcar' into asoc-next
      Merge remote-tracking branches 'asoc/topic/rt5677', 'asoc/topic/samsung' and 'asoc/topic/sgtl5000' into asoc-next
      Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/ssm2518', 'asoc/topic/ssm2602', 'asoc/topic/ssm4567' and 'asoc/topic/sta32x' into asoc-next
      Merge remote-tracking branches 'asoc/topic/sta350', 'asoc/topic/tas2552', 'asoc/topic/tas3a227e' and 'asoc/topic/tas571x' into asoc-next
      Merge remote-tracking branches 'asoc/topic/topology', 'asoc/topic/twl6040', 'asoc/topic/wm5100', 'asoc/topic/wm8741' and 'asoc/topic/wm8960' into asoc-next
      Merge remote-tracking branches 'asoc/topic/wm8994', 'asoc/topic/wm8996' and 'asoc/topic/zx' into asoc-next
      Merge tag 'asoc-v4.2' into asoc-rt5645
      Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-linus
      Merge remote-tracking branches 'asoc/fix/arizona', 'asoc/fix/fmtbit', 'asoc/fix/intel', 'asoc/fix/max98925', 'asoc/fix/rcar' and 'asoc/fix/ux500' into asoc-linus
      Merge remote-tracking branches 'asoc/fix/wm8737', 'asoc/fix/wm8903', 'asoc/fix/wm8955' and 'asoc/fix/wm8960' into asoc-linus
      Merge tag 'asoc-v4.2' into asoc-next
      Merge remote-tracking branch 'asoc/topic/rt5645' into asoc-next
      Merge remote-tracking branch 'asoc/topic/rt5670' into asoc-next
      Merge remote-tracking branches 'asoc/topic/adsp' and 'asoc/topic/atmel' into asoc-next
      Merge remote-tracking branch 'asoc/topic/davinci' into asoc-next
      Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next
      Merge remote-tracking branches 'asoc/topic/intel' and 'asoc/topic/max98090' into asoc-next
      Merge remote-tracking branches 'asoc/topic/mediatek', 'asoc/topic/ml26124' and 'asoc/topic/omap' into asoc-next
      Merge remote-tracking branches 'asoc/topic/qcom', 'asoc/topic/rcar', 'asoc/topic/rt286' and 'asoc/topic/rt5640' into asoc-next
      Merge remote-tracking branch 'asoc/topic/simple' into asoc-next
      Merge remote-tracking branch 'asoc/topic/tas2552' into asoc-next
      Merge remote-tracking branches 'asoc/topic/wm8523' and 'asoc/topic/wm8741' into asoc-next
      Merge remote-tracking branch 'asoc/topic/wm8995' into asoc-next

Mathias Krause (4):
      ASoC: rt5640: Constify ACPI device ids and register defaults
      ASoC: max98090: Constify ACPI device ids and register defaults
      ASoC: rt5670: Constify ACPI device ids and register defaults
      ASoC: intel: Constify ACPI device ids

Michele Curti (1):
      ASoC: rt5645: move RT5650 muxes to rt5650_specific_dapm_widgets

Misael Lopez Cruz (1):
      ASoC: davinci-mcasp: Logic low for inactive output slots

Nicolas Boichat (3):
      ASoC: rt5645: Rename HP control to Headphone
      ASoC: rt5645: Init jack_detect_work before registering irq
      ASoC: rt5645: Lock mutex in rt5645_enable_push_button_irq

Nicolin Chen (1):
      ASoC: fsl_spdif: Don't try to round-up for clock divisor calculation

Oder Chiou (6):
      ASoC: rt5677: Add DMIC ASRC detect function
      ASoC: rt5645: make RT5650_TDM_CTRL_4 readable
      ASoC: rt5645: add device tree support
      ASoC: rt5645: change gpio to gpiod APIs
      ASoC: rt286: Add RL6347A class device shared support for RT286
      ASoC: rt5645: Add the device tree parser

Pascal Huerst (1):
      ASoC: adau1701: add regulator consumer support

Peter Ujfalusi (27):
      ASoC: tas2552: Make the enable-gpio really optional
      ASoC: tas2552: Fix kernel crash when the codec is loaded but not part of a card
      ASoC: tas2552: Fix kernel crash caused by wrong kcontrol entry
      ASoC: tas2552: Correct PDM configuration register bit definitions
      ASoC: tas2552: Correct CFG1 register bit definitions
      ASoC: tas2552: Simplify the tas2552_mute function
      ASoC: tas2552: Simplify and reverse the functionality of tas2552_sw_shutdown
      ASoC: tas2552: Rename mclk parameter to pll_clkin to match with the datasheet
      ASoC: tas2552: bindings header file for tas2552 codec
      ASoC: tas2552: Add support for pll and pdm source clock selection
      ASoC: tas2552: Correct dai format support
      ASoC: tas2552: Correct and clean up data format and BCLK/WCLK direction
      ASoC: tas2552: Add TDM support
      ASoC: tas2552: Clean up the Digital - Analog DAPM route definition
      ASoC: tas2552: Correct the Speaker Driver Playback Volume (PGA_GAIN)
      ASoC: tas2552: Implement startup/stop sequence as per TRM
      ASoC: tas2552: Add support for word length configuration
      ASoC: tas2552: Configure the WCLK frequency based on the stream
      ASoC: tas2552: Correct the PLL configuration
      ASoC: tas2552: Add control for selecting DIN source
      ASoC: tas2552: Correct Output Data register usage
      ASoC: tas2552: Correct Boost Auto-Pass Through Control register usage
      ASoC: tas2552: Code, define alignment changes for uniformity
      ASoC: tas2552: Call pm_runtime_disable when the module is removed
      ASoC: tas2552: Remove unneeded semicolon
      ASoC: tas2552: Use consistent name for 'struct tas2552_data'
      ASoC: tas2552: Update DT binding document regarding clock configuration

Rajan Vaja (1):
      ASoC: mop500_ab8500: Add a NULL pointer check in mop500_ab8500_machine_init()

Rasmus Villemoes (1):
      ASoC: Intel: mrfld: simplify sst_fill_widget_module_info

Richard Fitzgerald (9):
      ASoC: arizona: Fix noise generator gain TLV
      ASoC: wm_adsp: Dump scratch registers on DSP shutdown
      ASoC: arizona: Export functions to control subsystem DVFS
      ASoC: wm_adsp: Move DVFS control into codec driver
      ASoC: arizona: Add DVFS handling for sample rate control
      regulator: arizona-ldo1: Do not control DVFS clocking from regulator
      ASoC: wm_adsp: Add codec_probe and codec_remove stubs
      ASoC: wm_adsp: create ALSA controls from wm_adsp driver
      ASoC: wm_adsp: Add basic debugfs entries

Sebastian Andrzej Siewior (1):
      ASoC: Intel: sst: use ; instead of , at the of a C statement

Sergej Sawazki (2):
      ASoC: wm8741: Add differential mono mode support
      ASoC: wm8741: Allow master clock switching

Srinivas Kandagatla (17):
      ASoC: qcom: Remove redundant error check.
      ASoC: qcom: remove unnecessary header files
      ASoC: qcom: move ipq806x specific bits out of lpass driver.
      ASoC: qcom: remove hardcoded i2s port number
      ASoC: qcom: remove hardcoded dma channel
      ASoC: skip legacy dai naming if dai driver has all the information
      ASoC: qcom: support bitclk and osrclk per i2s port
      ASoC: qcom: make osr clock optional
      ASoC: qcom: add dma channel control offset to variant data
      ASoC: qcom: Add ability to handle interrupts per dma channel
      ASoC: qcom: add bit map to track static dma channel allocations
      ASoC: qcom: Document apq8016 bindings.
      ASoC: qcom: Add apq8016 lpass driver support
      ASoC: qcom: storm: allocate snd_soc_card struct dynamically.
      ASoC: qcom: storm: remove special casing EPROBE_DEFER
      ASoC: qcom: document apq8016 sbc machine driver bindings
      ASoC: qcom: add apq8016 sound card support

Subhransu S. Prusty (8):
      ASoC: Intel: Create an ops to check for DSP busy
      ASoC: Intel: Move the busy check to ops for Baytrail
      ASoC: Intel: Move the busy check to ops for HSW
      ASoC: Intel: Remove the direct register reference from common ipc
      ASoC: Intel: Allow to configure max size for mailbox data
      ASoC: Intel: Initialize max mailbox size for baytrail
      ASoC: Intel: Initialize max mailbox size for haswell
      ASoC: Intel: Allocate for the mailbox with max size

Sudip Mukherjee (1):
      ASoC: rt5645: fixed section mismatch

Takashi Iwai (1):
      ASoC: Simplify format_register_str() without stack usages

Uwe Kleine-König (3):
      ASoC: sta32x: use devm_gpiod_get_optional for optional reset gpio
      ASoC: max98357a: use flags argument of devm_gpiod_get to set direction
      ASoC: rx51: use flags argument of devm_gpiod_get to set direction

Vinod Koul (6):
      ASoC: intel - use SNDRV_CTL_ELEM_ID_NAME_MAXLEN
      ASoC: Intel: add frame and data polarity to ssp config
      ASoC: Intel: use local values for ssp configuration
      ASoC: Intel: load hw_defaults in hw_params of ssp be
      ASoC: intel: add support for specifying PCM format
      ASoC: Intel: add support for configuring TDM slots for SSP

Vladimir Zapolskiy (1):
      ASoC: dapm: fix snd_soc_dapm_new_control() implicit declaration

Wei Yongjun (1):
      ASoC: cs35l32: Remove unused including <linux/version.h>

Zidan Wang (5):
      ASoC: fsl_sai: add sai master mode support
      ASoC: fsl_sai: add 12kHz, 24kHz, 176.4kHz and 192kHz sample rate support
      ASoC: wm8960: Let wm8960 driver configure its bit clock and frame clock
      ASoC: wm8960: add 32 bit word length support
      ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1]

kbuild test robot (7):
      ASoC: adau1977: fix simple_return.cocci warnings
      ASoC: ssm2518: fix simple_return.cocci warnings
      ASoC: qcom: ipq806x_lpass_alloc_dma_channel() can be static
      ASoC: zx: zx_i2s_dai can be static
      ASoC: zx: fix platform_no_drv_owner.cocci warnings
      ASoC: zx: fix simple_return.cocci warnings
      ASoC: zx: fix platform_no_drv_owner.cocci warnings

 .../devicetree/bindings/sound/adi,adau1701.txt     |    4 +
 Documentation/devicetree/bindings/sound/bt-sco.txt |   13 +
 Documentation/devicetree/bindings/sound/gtm601.txt |   13 +
 .../devicetree/bindings/sound/max98090.txt         |    6 +
 .../devicetree/bindings/sound/mt8173-max98090.txt  |   13 +
 .../bindings/sound/mt8173-rt5650-rt5676.txt        |   13 +
 .../devicetree/bindings/sound/mtk-afe-pcm.txt      |   45 +
 .../devicetree/bindings/sound/qcom,apq8016-sbc.txt |   60 +
 .../devicetree/bindings/sound/qcom,lpass-cpu.txt   |   13 +-
 .../devicetree/bindings/sound/renesas,rsnd.txt     |    3 +-
 Documentation/devicetree/bindings/sound/rt5645.txt |   72 +
 Documentation/devicetree/bindings/sound/rt5677.txt |    2 +
 .../devicetree/bindings/sound/simple-card.txt      |    6 +-
 .../devicetree/bindings/sound/tas2552.txt          |    6 +
 .../devicetree/bindings/sound/tas571x.txt          |   41 +
 Documentation/devicetree/bindings/sound/wm8741.txt |   11 +
 .../devicetree/bindings/sound/zte,zx-i2s.txt       |   44 +
 .../devicetree/bindings/sound/zte,zx-spdif.txt     |   28 +
 .../devicetree/bindings/vendor-prefixes.txt        |    1 +
 MAINTAINERS                                        |    6 +
 drivers/dma/sh/rcar-dmac.c                         |   37 +-
 drivers/regulator/arizona-ldo1.c                   |    5 -
 include/dt-bindings/sound/apq8016-lpass.h          |    9 +
 include/dt-bindings/sound/audio-jack-events.h      |    9 +
 include/dt-bindings/sound/tas2552.h                |   18 +
 include/sound/dmaengine_pcm.h                      |    5 -
 include/sound/rt5645.h                             |    6 -
 include/sound/soc-dapm.h                           |   49 +
 include/sound/soc-topology.h                       |  168 ++
 include/sound/soc.h                                |  118 +-
 include/sound/tlv.h                                |   15 +-
 include/uapi/sound/asoc.h                          |  388 +++++
 include/uapi/sound/tlv.h                           |   31 +
 sound/soc/Kconfig                                  |    2 +
 sound/soc/Makefile                                 |    3 +
 sound/soc/atmel/Kconfig                            |   37 +-
 sound/soc/atmel/atmel-pcm-dma.c                    |    3 +-
 sound/soc/atmel/sam9g20_wm8731.c                   |   10 +-
 sound/soc/au1x/db1200.c                            |    2 +-
 sound/soc/cirrus/ep93xx-pcm.c                      |    1 -
 sound/soc/codecs/88pm860x-codec.c                  |   19 +-
 sound/soc/codecs/Kconfig                           |   17 +-
 sound/soc/codecs/Makefile                          |    4 +
 sound/soc/codecs/ab8500-codec.c                    |   20 +-
 sound/soc/codecs/ac97.c                            |    8 +-
 sound/soc/codecs/ad1836.c                          |    2 +-
 sound/soc/codecs/adau1373.c                        |    1 -
 sound/soc/codecs/adau1701.c                        |  126 +-
 sound/soc/codecs/adau1761.c                        |   27 +-
 sound/soc/codecs/adau1781.c                        |   10 +-
 sound/soc/codecs/adau17x1.c                        |   20 +-
 sound/soc/codecs/adau1977.c                        |   14 +-
 sound/soc/codecs/adav80x.c                         |   11 +-
 sound/soc/codecs/ak4535.c                          |    1 -
 sound/soc/codecs/ak4641.c                          |    3 +-
 sound/soc/codecs/ak4642.c                          |    1 -
 sound/soc/codecs/ak4671.c                          |    1 -
 sound/soc/codecs/alc5623.c                         |    3 +-
 sound/soc/codecs/alc5632.c                         |    1 -
 sound/soc/codecs/arizona.c                         |  174 +-
 sound/soc/codecs/arizona.h                         |   17 +-
 sound/soc/codecs/bt-sco.c                          |   11 +-
 sound/soc/codecs/cq93vc.c                          |    1 -
 sound/soc/codecs/cs35l32.c                         |    1 -
 sound/soc/codecs/cs4265.c                          |    1 -
 sound/soc/codecs/cs42l52.c                         |    5 +-
 sound/soc/codecs/cs42l56.c                         |    5 +-
 sound/soc/codecs/cs42l73.c                         |    3 +-
 sound/soc/codecs/cs42xx8.c                         |    2 +-
 sound/soc/codecs/cx20442.c                         |    6 +-
 sound/soc/codecs/da7213.c                          |    3 +-
 sound/soc/codecs/da732x.c                          |    4 +-
 sound/soc/codecs/da9055.c                          |    3 +-
 sound/soc/codecs/es8328.c                          |    3 +-
 sound/soc/codecs/isabelle.c                        |    2 -
 sound/soc/codecs/jz4740.c                          |    4 +-
 sound/soc/codecs/lm4857.c                          |  114 +-
 sound/soc/codecs/lm49453.c                         |    4 +-
 sound/soc/codecs/max98088.c                        |    3 +-
 sound/soc/codecs/max98090.c                        |   38 +-
 sound/soc/codecs/max98095.c                        |   24 +-
 sound/soc/codecs/max98357a.c                       |    3 +-
 sound/soc/codecs/max9850.c                         |    3 +-
 sound/soc/codecs/max98925.c                        |    2 +-
 sound/soc/codecs/ml26124.c                         |   61 +-
 sound/soc/codecs/pcm512x.c                         |    8 +-
 sound/soc/codecs/rl6347a.c                         |  128 ++
 sound/soc/codecs/rl6347a.h                         |   32 +
 sound/soc/codecs/rt286.c                           |  130 +-
 sound/soc/codecs/rt5631.c                          |    5 +-
 sound/soc/codecs/rt5640.c                          |   21 +-
 sound/soc/codecs/rt5645.c                          | 1112 +++++++++---
 sound/soc/codecs/rt5645.h                          |   31 +-
 sound/soc/codecs/rt5651.c                          |    5 +-
 sound/soc/codecs/rt5670.c                          |   31 +-
 sound/soc/codecs/rt5677.c                          |  157 +-
 sound/soc/codecs/rt5677.h                          |   15 +
 sound/soc/codecs/sgtl5000.c                        |   56 +-
 sound/soc/codecs/sirf-audio-codec.c                |    2 +-
 sound/soc/codecs/sn95031.c                         |   12 +-
 sound/soc/codecs/ssm2518.c                         |    9 +-
 sound/soc/codecs/ssm2602.c                         |    5 +-
 sound/soc/codecs/ssm4567.c                         |    9 +-
 sound/soc/codecs/sta32x.c                          |   19 +-
 sound/soc/codecs/sta350.c                          |    9 +-
 sound/soc/codecs/sta529.c                          |    8 +-
 sound/soc/codecs/stac9766.c                        |    3 +-
 sound/soc/codecs/tas2552.c                         |  430 +++--
 sound/soc/codecs/tas2552.h                         |  153 +-
 sound/soc/codecs/tas571x.c                         |  514 ++++++
 sound/soc/codecs/tas571x.h                         |   33 +
 sound/soc/codecs/tlv320aic23.c                     |    1 -
 sound/soc/codecs/tlv320aic31xx.c                   |   11 +-
 sound/soc/codecs/tlv320aic32x4.c                   |    1 -
 sound/soc/codecs/tlv320aic3x.c                     |   10 +-
 sound/soc/codecs/tlv320dac33.c                     |    5 +-
 sound/soc/codecs/ts3a227e.c                        |   15 +-
 sound/soc/codecs/twl4030.c                         |    3 +-
 sound/soc/codecs/twl6040.c                         |    9 +-
 sound/soc/codecs/uda134x.c                         |    4 +-
 sound/soc/codecs/uda1380.c                         |    6 +-
 sound/soc/codecs/wm0010.c                          |    6 +-
 sound/soc/codecs/wm1250-ev1.c                      |    2 -
 sound/soc/codecs/wm5100.c                          |   12 +-
 sound/soc/codecs/wm5102.c                          |   68 +-
 sound/soc/codecs/wm5110.c                          |   25 +-
 sound/soc/codecs/wm8350.c                          |    3 +-
 sound/soc/codecs/wm8400.c                          |    3 +-
 sound/soc/codecs/wm8510.c                          |    3 +-
 sound/soc/codecs/wm8523.c                          |   29 +-
 sound/soc/codecs/wm8580.c                          |    3 +-
 sound/soc/codecs/wm8711.c                          |    3 +-
 sound/soc/codecs/wm8728.c                          |    3 +-
 sound/soc/codecs/wm8731.c                          |    8 +-
 sound/soc/codecs/wm8737.c                          |   11 +-
 sound/soc/codecs/wm8741.c                          |  190 +-
 sound/soc/codecs/wm8741.h                          |   10 +
 sound/soc/codecs/wm8750.c                          |    3 +-
 sound/soc/codecs/wm8753.c                          |    3 +-
 sound/soc/codecs/wm8770.c                          |    3 +-
 sound/soc/codecs/wm8776.c                          |    3 +-
 sound/soc/codecs/wm8804.c                          |    2 +-
 sound/soc/codecs/wm8900.c                          |   13 +-
 sound/soc/codecs/wm8903.c                          |    4 +-
 sound/soc/codecs/wm8903.h                          |    2 +-
 sound/soc/codecs/wm8904.c                          |    5 +-
 sound/soc/codecs/wm8940.c                          |    6 +-
 sound/soc/codecs/wm8955.c                          |    7 +-
 sound/soc/codecs/wm8960.c                          |  127 +-
 sound/soc/codecs/wm8961.c                          |    6 +-
 sound/soc/codecs/wm8962.c                          |   21 +-
 sound/soc/codecs/wm8971.c                          |    3 +-
 sound/soc/codecs/wm8974.c                          |    3 +-
 sound/soc/codecs/wm8978.c                          |    7 +-
 sound/soc/codecs/wm8983.c                          |    3 +-
 sound/soc/codecs/wm8985.c                          |    3 +-
 sound/soc/codecs/wm8988.c                          |    3 +-
 sound/soc/codecs/wm8990.c                          |    5 +-
 sound/soc/codecs/wm8991.c                          |    3 +-
 sound/soc/codecs/wm8993.c                          |   12 +-
 sound/soc/codecs/wm8994.c                          |   68 +-
 sound/soc/codecs/wm8995.c                          |    8 +-
 sound/soc/codecs/wm8996.c                          |   23 +-
 sound/soc/codecs/wm8997.c                          |   18 +-
 sound/soc/codecs/wm9081.c                          |    4 +-
 sound/soc/codecs/wm9090.c                          |    6 +-
 sound/soc/codecs/wm9712.c                          |    3 +-
 sound/soc/codecs/wm9713.c                          |    7 +-
 sound/soc/codecs/wm_adsp.c                         | 1450 ++++++++++------
 sound/soc/codecs/wm_adsp.h                         |   33 +-
 sound/soc/codecs/wm_hubs.c                         |    4 +-
 sound/soc/codecs/wmfw.h                            |   44 +-
 sound/soc/davinci/davinci-mcasp.c                  |  239 ++-
 sound/soc/davinci/davinci-mcasp.h                  |    5 +-
 sound/soc/fsl/fsl_dma.c                            |    4 +-
 sound/soc/fsl/fsl_sai.c                            |  144 +-
 sound/soc/fsl/fsl_sai.h                            |    9 +-
 sound/soc/fsl/fsl_spdif.c                          |   10 +-
 sound/soc/fsl/fsl_ssi.c                            |    7 -
 sound/soc/fsl/imx-audmux.c                         |    2 +-
 sound/soc/fsl/imx-mc13783.c                        |    6 +-
 sound/soc/fsl/imx-wm8962.c                         |    2 +-
 sound/soc/generic/simple-card.c                    |   34 +-
 sound/soc/intel/Kconfig                            |   19 +-
 sound/soc/intel/atom/sst-atom-controls.c           |  187 +-
 sound/soc/intel/atom/sst-atom-controls.h           |    9 +-
 sound/soc/intel/atom/sst-mfld-platform-pcm.c       |   47 +-
 sound/soc/intel/atom/sst-mfld-platform.h           |    2 +
 sound/soc/intel/atom/sst/sst.c                     |    4 +-
 sound/soc/intel/atom/sst/sst_acpi.c                |    4 +
 sound/soc/intel/atom/sst/sst_drv_interface.c       |    2 +-
 sound/soc/intel/baytrail/sst-baytrail-ipc.c        |   11 +
 sound/soc/intel/boards/Makefile                    |    2 +
 sound/soc/intel/boards/cht_bsw_max98090_ti.c       |  348 ++++
 sound/soc/intel/boards/cht_bsw_rt5645.c            |  118 +-
 sound/soc/intel/common/sst-acpi.c                  |    2 +-
 sound/soc/intel/common/sst-ipc.c                   |   34 +-
 sound/soc/intel/common/sst-ipc.h                   |    7 +-
 sound/soc/intel/haswell/sst-haswell-ipc.c          |   12 +
 sound/soc/intel/haswell/sst-haswell-pcm.c          |   31 +-
 sound/soc/mediatek/Kconfig                         |   30 +
 sound/soc/mediatek/Makefile                        |    5 +
 sound/soc/mediatek/mt8173-max98090.c               |  213 +++
 sound/soc/mediatek/mt8173-rt5650-rt5676.c          |  278 +++
 sound/soc/mediatek/mtk-afe-common.h                |  109 ++
 sound/soc/mediatek/mtk-afe-pcm.c                   | 1233 +++++++++++++
 sound/soc/omap/Kconfig                             |    5 +-
 sound/soc/omap/omap-twl4030.c                      |    3 +-
 sound/soc/omap/rx51.c                              |   40 +-
 sound/soc/pxa/brownstone.c                         |   25 +-
 sound/soc/pxa/poodle.c                             |   19 +-
 sound/soc/pxa/tosa.c                               |   13 +-
 sound/soc/pxa/z2.c                                 |    9 +-
 sound/soc/qcom/Kconfig                             |   28 +-
 sound/soc/qcom/Makefile                            |    6 +
 sound/soc/qcom/apq8016_sbc.c                       |  198 +++
 sound/soc/qcom/lpass-apq8016.c                     |  242 +++
 sound/soc/qcom/lpass-cpu.c                         |  240 +--
 sound/soc/qcom/lpass-ipq806x.c                     |  109 ++
 .../{lpass-lpaif-ipq806x.h => lpass-lpaif-reg.h}   |   92 +-
 sound/soc/qcom/lpass-platform.c                    |  202 ++-
 sound/soc/qcom/lpass.h                             |   51 +-
 sound/soc/qcom/storm.c                             |   26 +-
 sound/soc/samsung/Kconfig                          |   15 +-
 sound/soc/samsung/i2s.c                            |    2 +-
 sound/soc/samsung/lowland.c                        |    2 +-
 sound/soc/samsung/smartq_wm8987.c                  |    6 +-
 sound/soc/samsung/smdk_wm8994.c                    |    3 +-
 sound/soc/samsung/speyside.c                       |    2 +-
 sound/soc/sh/rcar/core.c                           |  139 +-
 sound/soc/sh/rcar/dma.c                            |  113 +-
 sound/soc/sh/rcar/dvc.c                            |   30 +-
 sound/soc/sh/rcar/rsnd.h                           |  113 +-
 sound/soc/sh/rcar/rsrc-card.c                      |  437 ++---
 sound/soc/sh/rcar/src.c                            |  130 +-
 sound/soc/sh/rcar/ssi.c                            |  160 +-
 sound/soc/soc-core.c                               |   67 +-
 sound/soc/soc-dapm.c                               |  349 +++-
 sound/soc/soc-generic-dmaengine-pcm.c              |   25 +-
 sound/soc/soc-jack.c                               |    9 +-
 sound/soc/soc-pcm.c                                |   47 +-
 sound/soc/soc-topology.c                           | 1826 ++++++++++++++++++++
 sound/soc/ux500/mop500_ab8500.c                    |    4 +
 sound/soc/ux500/ux500_pcm.c                        |    1 -
 sound/soc/zte/Kconfig                              |   17 +
 sound/soc/zte/Makefile                             |    2 +
 sound/soc/zte/zx296702-i2s.c                       |  436 +++++
 sound/soc/zte/zx296702-spdif.c                     |  365 ++++
 248 files changed, 13076 insertions(+), 3099 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/bt-sco.txt
 create mode 100644 Documentation/devicetree/bindings/sound/gtm601.txt
 create mode 100644 Documentation/devicetree/bindings/sound/mt8173-max98090.txt
 create mode 100644 Documentation/devicetree/bindings/sound/mt8173-rt5650-rt5676.txt
 create mode 100644 Documentation/devicetree/bindings/sound/mtk-afe-pcm.txt
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8016-sbc.txt
 create mode 100644 Documentation/devicetree/bindings/sound/rt5645.txt
 create mode 100644 Documentation/devicetree/bindings/sound/tas571x.txt
 create mode 100644 Documentation/devicetree/bindings/sound/zte,zx-i2s.txt
 create mode 100644 Documentation/devicetree/bindings/sound/zte,zx-spdif.txt
 create mode 100644 include/dt-bindings/sound/apq8016-lpass.h
 create mode 100644 include/dt-bindings/sound/audio-jack-events.h
 create mode 100644 include/dt-bindings/sound/tas2552.h
 create mode 100644 include/sound/soc-topology.h
 create mode 100644 include/uapi/sound/asoc.h
 create mode 100644 include/uapi/sound/tlv.h
 create mode 100644 sound/soc/codecs/rl6347a.c
 create mode 100644 sound/soc/codecs/rl6347a.h
 create mode 100644 sound/soc/codecs/tas571x.c
 create mode 100644 sound/soc/codecs/tas571x.h
 create mode 100644 sound/soc/intel/boards/cht_bsw_max98090_ti.c
 create mode 100644 sound/soc/mediatek/Kconfig
 create mode 100644 sound/soc/mediatek/Makefile
 create mode 100644 sound/soc/mediatek/mt8173-max98090.c
 create mode 100644 sound/soc/mediatek/mt8173-rt5650-rt5676.c
 create mode 100644 sound/soc/mediatek/mtk-afe-common.h
 create mode 100644 sound/soc/mediatek/mtk-afe-pcm.c
 create mode 100644 sound/soc/qcom/apq8016_sbc.c
 create mode 100644 sound/soc/qcom/lpass-apq8016.c
 create mode 100644 sound/soc/qcom/lpass-ipq806x.c
 rename sound/soc/qcom/{lpass-lpaif-ipq806x.h => lpass-lpaif-reg.h} (64%)
 create mode 100644 sound/soc/soc-topology.c
 create mode 100644 sound/soc/zte/Kconfig
 create mode 100644 sound/soc/zte/Makefile
 create mode 100644 sound/soc/zte/zx296702-i2s.c
 create mode 100644 sound/soc/zte/zx296702-spdif.c

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22  9:26 ASoC updates for v4.2 Mark Brown
@ 2015-06-22  9:58 ` Takashi Iwai
  2015-06-22 10:30   ` Mark Brown
  0 siblings, 1 reply; 11+ messages in thread
From: Takashi Iwai @ 2015-06-22  9:58 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Koro Chen, Liam Girdwood

At Mon, 22 Jun 2015 10:26:16 +0100,
Mark Brown wrote:
> 
> The following changes since commit 0f57d86787d8b1076ea8f9cbdddda2a46d534a27:
> 
>   Linux 4.1-rc8 (2015-06-14 15:51:10 -1000)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git tags/asoc-v4.2-2
> 
> for you to fetch changes up to c99d49a8f81fb35e67b0ffa45f320a75e0b5639d:
> 
>   Merge remote-tracking branch 'asoc/topic/wm8995' into asoc-next (2015-06-22 10:24:37 +0100)
> 
> ----------------------------------------------------------------
> ASoC: Further updates for v4.2
> 
> There's a bunch of additional updates and fixes that came in since my
> orignal pull request here, including DT support for rt5645 and fairly
> large serieses of cleanups and improvements to tas2552 and rcar.

In addition to rsnd-card.c, I get a compile warning as below:

sound/soc/mediatek/mtk-afe-pcm.c:1035:12: warning: 'mtk_afe_runtime_suspend' defined but not used [-Wunused-function]

And, looking at the code, it seems calling runtime suspend in the
following way at probe:

        pm_runtime_enable(&pdev->dev);
        if (!pm_runtime_enabled(&pdev->dev)) {
                ret = mtk_afe_runtime_resume(&pdev->dev);
                if (ret)
                        goto err_pm_disable;
        }

I'm not sure whether this really behaves correctly, especially when a
kernel is built without CONFIG_PM.


Takashi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22  9:58 ` Takashi Iwai
@ 2015-06-22 10:30   ` Mark Brown
  2015-06-22 11:24     ` Takashi Iwai
  0 siblings, 1 reply; 11+ messages in thread
From: Mark Brown @ 2015-06-22 10:30 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Koro Chen, Liam Girdwood


[-- Attachment #1.1: Type: text/plain, Size: 1000 bytes --]

On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:

> In addition to rsnd-card.c, I get a compile warning as below:

> sound/soc/mediatek/mtk-afe-pcm.c:1035:12: warning: 'mtk_afe_runtime_suspend' defined but not used [-Wunused-function]

> And, looking at the code, it seems calling runtime suspend in the
> following way at probe:

>         pm_runtime_enable(&pdev->dev);
>         if (!pm_runtime_enabled(&pdev->dev)) {
>                 ret = mtk_afe_runtime_resume(&pdev->dev);
>                 if (ret)
>                         goto err_pm_disable;
>         }

I'm confused, where's the call to runtime suspend?

> I'm not sure whether this really behaves correctly, especially when a
> kernel is built without CONFIG_PM.

Could you be more specific about the problem you're seeing?  If runtime
PM is disabled pm_runtime_enabled() will return false and we'll run
through the resume path during probe() instead, otherwise we'll runtime
resume whenever we need to use the hardware.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 10:30   ` Mark Brown
@ 2015-06-22 11:24     ` Takashi Iwai
  2015-06-22 13:57       ` Mark Brown
  0 siblings, 1 reply; 11+ messages in thread
From: Takashi Iwai @ 2015-06-22 11:24 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Koro Chen, Liam Girdwood

At Mon, 22 Jun 2015 11:30:34 +0100,
Mark Brown wrote:
> 
> On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:
> 
> > In addition to rsnd-card.c, I get a compile warning as below:
> 
> > sound/soc/mediatek/mtk-afe-pcm.c:1035:12: warning: 'mtk_afe_runtime_suspend' defined but not used [-Wunused-function]
> 
> > And, looking at the code, it seems calling runtime suspend in the
> > following way at probe:
> 
> >         pm_runtime_enable(&pdev->dev);
> >         if (!pm_runtime_enabled(&pdev->dev)) {
> >                 ret = mtk_afe_runtime_resume(&pdev->dev);
> >                 if (ret)
> >                         goto err_pm_disable;
> >         }
> 
> I'm confused, where's the call to runtime suspend?

It's in
static const struct dev_pm_ops mtk_afe_pm_ops = {
	SET_RUNTIME_PM_OPS(mtk_afe_runtime_suspend, mtk_afe_runtime_resume,
			   NULL)
};

But my concern above isn't about the warning itself.  I just stumbled
on the code invoking runtime resume while looking at this warning, and
wondered the behavior with CONFIG_PM=n.

Usually this kind of warning could be simply fixed by adding a proper
ifdef.  But, this driver calls runtime resume in the probe manually.

> > I'm not sure whether this really behaves correctly, especially when a
> > kernel is built without CONFIG_PM.
> 
> Could you be more specific about the problem you're seeing?  If runtime
> PM is disabled pm_runtime_enabled() will return false and we'll run
> through the resume path during probe() instead, otherwise we'll runtime
> resume whenever we need to use the hardware.

The runtime suspend is never called when CONFIG_PM=n.  OTOH, we call
runtime resume *always* at probe when CONFIG_PM=n.  This looks
inconsistent to me.

If it's a part of the mandatory initialization, it should be named
explicitly so, and make the runtime resume callback just calls it
instead.


Takashi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 11:24     ` Takashi Iwai
@ 2015-06-22 13:57       ` Mark Brown
  2015-06-22 14:10         ` Takashi Iwai
  0 siblings, 1 reply; 11+ messages in thread
From: Mark Brown @ 2015-06-22 13:57 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Koro Chen, Liam Girdwood


[-- Attachment #1.1: Type: text/plain, Size: 2536 bytes --]

On Mon, Jun 22, 2015 at 01:24:02PM +0200, Takashi Iwai wrote:
> At Mon, 22 Jun 2015 11:30:34 +0100,
> Mark Brown wrote:
> > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:

> > > And, looking at the code, it seems calling runtime suspend in the
> > > following way at probe:

> > >         pm_runtime_enable(&pdev->dev);
> > >         if (!pm_runtime_enabled(&pdev->dev)) {
> > >                 ret = mtk_afe_runtime_resume(&pdev->dev);
> > >                 if (ret)
> > >                         goto err_pm_disable;
> > >         }

> > I'm confused, where's the call to runtime suspend?

> It's in
> static const struct dev_pm_ops mtk_afe_pm_ops = {
> 	SET_RUNTIME_PM_OPS(mtk_afe_runtime_suspend, mtk_afe_runtime_resume,
> 			   NULL)
> };

Sorry, I'm still confused about what you're seeing in the probe - I know
where the callbacks for runtime PM are registered but I'm not seeing a
call to suspend (or something that I'd expect to trigger one) in the
above?

> But my concern above isn't about the warning itself.  I just stumbled
> on the code invoking runtime resume while looking at this warning, and
> wondered the behavior with CONFIG_PM=n.

> Usually this kind of warning could be simply fixed by adding a proper
> ifdef.  But, this driver calls runtime resume in the probe manually.

Sure, that's a fairly common pattern though?

> > > I'm not sure whether this really behaves correctly, especially when a
> > > kernel is built without CONFIG_PM.

> > Could you be more specific about the problem you're seeing?  If runtime
> > PM is disabled pm_runtime_enabled() will return false and we'll run
> > through the resume path during probe() instead, otherwise we'll runtime
> > resume whenever we need to use the hardware.

> The runtime suspend is never called when CONFIG_PM=n.  OTOH, we call
> runtime resume *always* at probe when CONFIG_PM=n.  This looks
> inconsistent to me.

Yeah, it should really resuspend the hardware in the remove path.

> If it's a part of the mandatory initialization, it should be named
> explicitly so, and make the runtime resume callback just calls it
> instead.

I disagree, I think either way is fine - if the clear intent and
expectation is that the driver is used with runtime PM it seems fine to
structure things to to say say "this is the special case path for !PM".
I'd actually like to see this pattern better supported by the core so
that drivers can enable runtime PM with calls that have !PM paths like
in this driver, it'd make the whole !PM case a lot simpler.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 13:57       ` Mark Brown
@ 2015-06-22 14:10         ` Takashi Iwai
  2015-06-22 14:40           ` Takashi Iwai
                             ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Takashi Iwai @ 2015-06-22 14:10 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Koro Chen, Liam Girdwood

At Mon, 22 Jun 2015 14:57:29 +0100,
Mark Brown wrote:
> 
> On Mon, Jun 22, 2015 at 01:24:02PM +0200, Takashi Iwai wrote:
> > At Mon, 22 Jun 2015 11:30:34 +0100,
> > Mark Brown wrote:
> > > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:
> 
> > > > And, looking at the code, it seems calling runtime suspend in the
> > > > following way at probe:
> 
> > > >         pm_runtime_enable(&pdev->dev);
> > > >         if (!pm_runtime_enabled(&pdev->dev)) {
> > > >                 ret = mtk_afe_runtime_resume(&pdev->dev);
> > > >                 if (ret)
> > > >                         goto err_pm_disable;
> > > >         }
> 
> > > I'm confused, where's the call to runtime suspend?
> 
> > It's in
> > static const struct dev_pm_ops mtk_afe_pm_ops = {
> > 	SET_RUNTIME_PM_OPS(mtk_afe_runtime_suspend, mtk_afe_runtime_resume,
> > 			   NULL)
> > };
> 
> Sorry, I'm still confused about what you're seeing in the probe - I know
> where the callbacks for runtime PM are registered but I'm not seeing a
> call to suspend (or something that I'd expect to trigger one) in the
> above?
 
There is no place calling runtime suspend manually, that's why the
compiler catches and warns.

> > But my concern above isn't about the warning itself.  I just stumbled
> > on the code invoking runtime resume while looking at this warning, and
> > wondered the behavior with CONFIG_PM=n.
> 
> > Usually this kind of warning could be simply fixed by adding a proper
> > ifdef.  But, this driver calls runtime resume in the probe manually.
> 
> Sure, that's a fairly common pattern though?

Depends.  The more common pattern seems to call pm_runtime_resume().
And this will skip the call of runtime PM when CONFIG_PM=n.

> > > > I'm not sure whether this really behaves correctly, especially when a
> > > > kernel is built without CONFIG_PM.
> 
> > > Could you be more specific about the problem you're seeing?  If runtime
> > > PM is disabled pm_runtime_enabled() will return false and we'll run
> > > through the resume path during probe() instead, otherwise we'll runtime
> > > resume whenever we need to use the hardware.
> 
> > The runtime suspend is never called when CONFIG_PM=n.  OTOH, we call
> > runtime resume *always* at probe when CONFIG_PM=n.  This looks
> > inconsistent to me.
> 
> Yeah, it should really resuspend the hardware in the remove path.

Right, then it'll be balanced properly.

> > If it's a part of the mandatory initialization, it should be named
> > explicitly so, and make the runtime resume callback just calls it
> > instead.
> 
> I disagree, I think either way is fine - if the clear intent and
> expectation is that the driver is used with runtime PM it seems fine to
> structure things to to say say "this is the special case path for !PM".
> I'd actually like to see this pattern better supported by the core so
> that drivers can enable runtime PM with calls that have !PM paths like
> in this driver, it'd make the whole !PM case a lot simpler.

I don't mind much in either way.  But the current code looks somehow
inconsistent.


Takashi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 14:10         ` Takashi Iwai
@ 2015-06-22 14:40           ` Takashi Iwai
  2015-06-22 14:43           ` Mark Brown
  2015-06-23  7:45           ` Koro Chen
  2 siblings, 0 replies; 11+ messages in thread
From: Takashi Iwai @ 2015-06-22 14:40 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Koro Chen, Liam Girdwood

At Mon, 22 Jun 2015 16:10:32 +0200,
Takashi Iwai wrote:
> 
> At Mon, 22 Jun 2015 14:57:29 +0100,
> Mark Brown wrote:
> > 
> > On Mon, Jun 22, 2015 at 01:24:02PM +0200, Takashi Iwai wrote:
> > > At Mon, 22 Jun 2015 11:30:34 +0100,
> > > Mark Brown wrote:
> > > > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:
> > 
> > > > > And, looking at the code, it seems calling runtime suspend in the
> > > > > following way at probe:
> > 
> > > > >         pm_runtime_enable(&pdev->dev);
> > > > >         if (!pm_runtime_enabled(&pdev->dev)) {
> > > > >                 ret = mtk_afe_runtime_resume(&pdev->dev);
> > > > >                 if (ret)
> > > > >                         goto err_pm_disable;
> > > > >         }
> > 
> > > > I'm confused, where's the call to runtime suspend?
> > 
> > > It's in
> > > static const struct dev_pm_ops mtk_afe_pm_ops = {
> > > 	SET_RUNTIME_PM_OPS(mtk_afe_runtime_suspend, mtk_afe_runtime_resume,
> > > 			   NULL)
> > > };
> > 
> > Sorry, I'm still confused about what you're seeing in the probe - I know
> > where the callbacks for runtime PM are registered but I'm not seeing a
> > call to suspend (or something that I'd expect to trigger one) in the
> > above?
>  
> There is no place calling runtime suspend manually, that's why the
> compiler catches and warns.
> 
> > > But my concern above isn't about the warning itself.  I just stumbled
> > > on the code invoking runtime resume while looking at this warning, and
> > > wondered the behavior with CONFIG_PM=n.
> > 
> > > Usually this kind of warning could be simply fixed by adding a proper
> > > ifdef.  But, this driver calls runtime resume in the probe manually.
> > 
> > Sure, that's a fairly common pattern though?
> 
> Depends.  The more common pattern seems to call pm_runtime_resume().
> And this will skip the call of runtime PM when CONFIG_PM=n.
> 
> > > > > I'm not sure whether this really behaves correctly, especially when a
> > > > > kernel is built without CONFIG_PM.
> > 
> > > > Could you be more specific about the problem you're seeing?  If runtime
> > > > PM is disabled pm_runtime_enabled() will return false and we'll run
> > > > through the resume path during probe() instead, otherwise we'll runtime
> > > > resume whenever we need to use the hardware.
> > 
> > > The runtime suspend is never called when CONFIG_PM=n.  OTOH, we call
> > > runtime resume *always* at probe when CONFIG_PM=n.  This looks
> > > inconsistent to me.
> > 
> > Yeah, it should really resuspend the hardware in the remove path.
> 
> Right, then it'll be balanced properly.
> 
> > > If it's a part of the mandatory initialization, it should be named
> > > explicitly so, and make the runtime resume callback just calls it
> > > instead.
> > 
> > I disagree, I think either way is fine - if the clear intent and
> > expectation is that the driver is used with runtime PM it seems fine to
> > structure things to to say say "this is the special case path for !PM".
> > I'd actually like to see this pattern better supported by the core so
> > that drivers can enable runtime PM with calls that have !PM paths like
> > in this driver, it'd make the whole !PM case a lot simpler.
> 
> I don't mind much in either way.  But the current code looks somehow
> inconsistent.

In anyway, I now pushed out for-next branch after merging your two
pull requests.  Let's fix this warning later.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 14:10         ` Takashi Iwai
  2015-06-22 14:40           ` Takashi Iwai
@ 2015-06-22 14:43           ` Mark Brown
  2015-06-22 14:55             ` Takashi Iwai
  2015-06-23  7:45           ` Koro Chen
  2 siblings, 1 reply; 11+ messages in thread
From: Mark Brown @ 2015-06-22 14:43 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Koro Chen, Liam Girdwood


[-- Attachment #1.1: Type: text/plain, Size: 1747 bytes --]

On Mon, Jun 22, 2015 at 04:10:32PM +0200, Takashi Iwai wrote:
> Mark Brown wrote:
> > > Mark Brown wrote:
> > > > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:

> > > > > And, looking at the code, it seems calling runtime suspend in the
> > > > > following way at probe:

> > > > I'm confused, where's the call to runtime suspend?

> > Sorry, I'm still confused about what you're seeing in the probe - I know
> > where the callbacks for runtime PM are registered but I'm not seeing a
> > call to suspend (or something that I'd expect to trigger one) in the
> > above?

> There is no place calling runtime suspend manually, that's why the
> compiler catches and warns.

Right, that's why I was confused - you said it was calling runtime
suspend.

> > > But my concern above isn't about the warning itself.  I just stumbled
> > > on the code invoking runtime resume while looking at this warning, and
> > > wondered the behavior with CONFIG_PM=n.

> > > Usually this kind of warning could be simply fixed by adding a proper
> > > ifdef.  But, this driver calls runtime resume in the probe manually.

> > Sure, that's a fairly common pattern though?

> Depends.  The more common pattern seems to call pm_runtime_resume().
> And this will skip the call of runtime PM when CONFIG_PM=n.

That's another way of doing the same thing but it still leaves the same
thing with sharing the runtime code - if the runtime suspend and resume
paths are the same as the normal power up/down sequence you need to have
an explicit call to the shared power up function somewhere in probe and
can't ifdef things.

It does also mean that there's always going to be a bounce on of the
power in probe which is a bit sad though hardly the end of the world.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 14:43           ` Mark Brown
@ 2015-06-22 14:55             ` Takashi Iwai
  0 siblings, 0 replies; 11+ messages in thread
From: Takashi Iwai @ 2015-06-22 14:55 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Koro Chen, Liam Girdwood

At Mon, 22 Jun 2015 15:43:38 +0100,
Mark Brown wrote:
> 
> On Mon, Jun 22, 2015 at 04:10:32PM +0200, Takashi Iwai wrote:
> > Mark Brown wrote:
> > > > Mark Brown wrote:
> > > > > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:
> 
> > > > > > And, looking at the code, it seems calling runtime suspend in the
> > > > > > following way at probe:
> 
> > > > > I'm confused, where's the call to runtime suspend?
> 
> > > Sorry, I'm still confused about what you're seeing in the probe - I know
> > > where the callbacks for runtime PM are registered but I'm not seeing a
> > > call to suspend (or something that I'd expect to trigger one) in the
> > > above?
> 
> > There is no place calling runtime suspend manually, that's why the
> > compiler catches and warns.
> 
> Right, that's why I was confused - you said it was calling runtime
> suspend.

Ah sorry, missed that; I meant runtime resume, of course.

> > > > But my concern above isn't about the warning itself.  I just stumbled
> > > > on the code invoking runtime resume while looking at this warning, and
> > > > wondered the behavior with CONFIG_PM=n.
> 
> > > > Usually this kind of warning could be simply fixed by adding a proper
> > > > ifdef.  But, this driver calls runtime resume in the probe manually.
> 
> > > Sure, that's a fairly common pattern though?
> 
> > Depends.  The more common pattern seems to call pm_runtime_resume().
> > And this will skip the call of runtime PM when CONFIG_PM=n.
> 
> That's another way of doing the same thing but it still leaves the same
> thing with sharing the runtime code - if the runtime suspend and resume
> paths are the same as the normal power up/down sequence you need to have
> an explicit call to the shared power up function somewhere in probe and
> can't ifdef things.
>
> It does also mean that there's always going to be a bounce on of the
> power in probe which is a bit sad though hardly the end of the world.

Yep.  Also, basically the check of pm_runtime_enabled() is
superfluous, too, once when everything gets coded in a proper
balance.


Takashi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-22 14:10         ` Takashi Iwai
  2015-06-22 14:40           ` Takashi Iwai
  2015-06-22 14:43           ` Mark Brown
@ 2015-06-23  7:45           ` Koro Chen
  2015-06-23 10:14             ` Mark Brown
  2 siblings, 1 reply; 11+ messages in thread
From: Koro Chen @ 2015-06-23  7:45 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Liam Girdwood

On Mon, 2015-06-22 at 16:10 +0200, Takashi Iwai wrote:
> At Mon, 22 Jun 2015 14:57:29 +0100,
> Mark Brown wrote:
> > 
> > On Mon, Jun 22, 2015 at 01:24:02PM +0200, Takashi Iwai wrote:
> > > At Mon, 22 Jun 2015 11:30:34 +0100,
> > > Mark Brown wrote:
> > > > On Mon, Jun 22, 2015 at 11:58:24AM +0200, Takashi Iwai wrote:
> > 
> > > > > And, looking at the code, it seems calling runtime suspend in the
> > > > > following way at probe:
> > 
> > > > >         pm_runtime_enable(&pdev->dev);
> > > > >         if (!pm_runtime_enabled(&pdev->dev)) {
> > > > >                 ret = mtk_afe_runtime_resume(&pdev->dev);
> > > > >                 if (ret)
> > > > >                         goto err_pm_disable;
> > > > >         }
> > 
> > > > I'm confused, where's the call to runtime suspend?
> > 
> > > It's in
> > > static const struct dev_pm_ops mtk_afe_pm_ops = {
> > > 	SET_RUNTIME_PM_OPS(mtk_afe_runtime_suspend, mtk_afe_runtime_resume,
> > > 			   NULL)
> > > };
> > 
> > Sorry, I'm still confused about what you're seeing in the probe - I know
> > where the callbacks for runtime PM are registered but I'm not seeing a
> > call to suspend (or something that I'd expect to trigger one) in the
> > above?
>  
> There is no place calling runtime suspend manually, that's why the
> compiler catches and warns.
> 
> > > But my concern above isn't about the warning itself.  I just stumbled
> > > on the code invoking runtime resume while looking at this warning, and
> > > wondered the behavior with CONFIG_PM=n.
> > 
> > > Usually this kind of warning could be simply fixed by adding a proper
> > > ifdef.  But, this driver calls runtime resume in the probe manually.
> > 
> > Sure, that's a fairly common pattern though?
> 
> Depends.  The more common pattern seems to call pm_runtime_resume().
> And this will skip the call of runtime PM when CONFIG_PM=n.
> 
> > > > > I'm not sure whether this really behaves correctly, especially when a
> > > > > kernel is built without CONFIG_PM.
> > 
> > > > Could you be more specific about the problem you're seeing?  If runtime
> > > > PM is disabled pm_runtime_enabled() will return false and we'll run
> > > > through the resume path during probe() instead, otherwise we'll runtime
> > > > resume whenever we need to use the hardware.
> > 
> > > The runtime suspend is never called when CONFIG_PM=n.  OTOH, we call
> > > runtime resume *always* at probe when CONFIG_PM=n.  This looks
> > > inconsistent to me.
> > 
> > Yeah, it should really resuspend the hardware in the remove path.
> 
> Right, then it'll be balanced properly.
So I think maybe it should be modified like this?

 static int mtk_afe_pcm_dev_remove(struct platform_device *pdev)
 {
        pm_runtime_disable(&pdev->dev);
+       if (!pm_runtime_status_suspended(&pdev->dev))
+               mtk_afe_runtime_suspend(&pdev->dev);
        snd_soc_unregister_component(&pdev->dev);
        snd_soc_unregister_platform(&pdev->dev);
        return 0;

It can fix both build warning and unbalanced calls of suspend/resume.
Should I send a patch for this?

> 
> > > If it's a part of the mandatory initialization, it should be named
> > > explicitly so, and make the runtime resume callback just calls it
> > > instead.
> > 
> > I disagree, I think either way is fine - if the clear intent and
> > expectation is that the driver is used with runtime PM it seems fine to
> > structure things to to say say "this is the special case path for !PM".
> > I'd actually like to see this pattern better supported by the core so
> > that drivers can enable runtime PM with calls that have !PM paths like
> > in this driver, it'd make the whole !PM case a lot simpler.
> 
> I don't mind much in either way.  But the current code looks somehow
> inconsistent.
> 
> 
> Takashi
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ASoC updates for v4.2
  2015-06-23  7:45           ` Koro Chen
@ 2015-06-23 10:14             ` Mark Brown
  0 siblings, 0 replies; 11+ messages in thread
From: Mark Brown @ 2015-06-23 10:14 UTC (permalink / raw)
  To: Koro Chen; +Cc: Takashi Iwai, alsa-devel, Liam Girdwood


[-- Attachment #1.1: Type: text/plain, Size: 588 bytes --]

On Tue, Jun 23, 2015 at 03:45:02PM +0800, Koro Chen wrote:

> So I think maybe it should be modified like this?

>  static int mtk_afe_pcm_dev_remove(struct platform_device *pdev)
>  {
>         pm_runtime_disable(&pdev->dev);
> +       if (!pm_runtime_status_suspended(&pdev->dev))
> +               mtk_afe_runtime_suspend(&pdev->dev);
>         snd_soc_unregister_component(&pdev->dev);
>         snd_soc_unregister_platform(&pdev->dev);
>         return 0;

Yes.

> It can fix both build warning and unbalanced calls of suspend/resume.
> Should I send a patch for this?

Yes, please.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-06-23 10:15 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-22  9:26 ASoC updates for v4.2 Mark Brown
2015-06-22  9:58 ` Takashi Iwai
2015-06-22 10:30   ` Mark Brown
2015-06-22 11:24     ` Takashi Iwai
2015-06-22 13:57       ` Mark Brown
2015-06-22 14:10         ` Takashi Iwai
2015-06-22 14:40           ` Takashi Iwai
2015-06-22 14:43           ` Mark Brown
2015-06-22 14:55             ` Takashi Iwai
2015-06-23  7:45           ` Koro Chen
2015-06-23 10:14             ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.