Commit c9f7a144 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v6.12-rc4' of...

Merge tag 'asoc-fix-v6.12-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.12

An uncomfortably large set of fixes due to me not getting round to
sending them for longer than I should due to travel and illness.  This
is mostly smaller driver specific changes, but there are a couple of
generic changes:

 - Bumping the minimal topology ABI we check for during validation, the
   code had support for v4 removed previously but the update of the
   define used for initial validation was missed.
 - Fix the assumption that DAPM structs will be embedded in a component
   which isn't true for card widgets when doing name comparisons, though
   fortunately this is rarely triggered.

We've pulled in one Soundwire fix which was part of a larger series
fixing cleanup issues in on Intel Soundwire systems.
parents e3ea2757 db7e59e6
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -102,21 +102,21 @@ properties:
    default: 2

  interrupts:
    oneOf:
      - minItems: 1
        items:
          - description: TX interrupt
          - description: RX interrupt
      - items:
          - description: common/combined interrupt
    minItems: 1
    maxItems: 2

  interrupt-names:
    oneOf:
      - minItems: 1
      - description: TX interrupt
        const: tx
      - description: RX interrupt
        const: rx
      - description: TX and RX interrupts
        items:
          - const: tx
          - const: rx
      - const: common
      - description: Common/combined interrupt
        const: common

  fck_parent:
    $ref: /schemas/types.yaml#/definitions/string
+4 −1
Original line number Diff line number Diff line
@@ -15089,6 +15089,7 @@ F: drivers/spi/spi-at91-usart.c
MICROCHIP AUDIO ASOC DRIVERS
M:	Claudiu Beznea <claudiu.beznea@tuxon.dev>
M:	Andrei Simion <andrei.simion@microchip.com>
L:	linux-sound@vger.kernel.org
S:	Supported
F:	Documentation/devicetree/bindings/sound/atmel*
@@ -15197,6 +15198,7 @@ F: include/video/atmel_lcdc.h
MICROCHIP MCP16502 PMIC DRIVER
M:	Claudiu Beznea <claudiu.beznea@tuxon.dev>
M:	Andrei Simion <andrei.simion@microchip.com>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S:	Supported
F:	Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
@@ -15328,6 +15330,7 @@ F: drivers/spi/spi-atmel.*
MICROCHIP SSC DRIVER
M:	Claudiu Beznea <claudiu.beznea@tuxon.dev>
M:	Andrei Simion <andrei.simion@microchip.com>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S:	Supported
F:	Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -23287,7 +23290,7 @@ F: Documentation/devicetree/bindings/iio/adc/ti,lmp92064.yaml
F:	drivers/iio/adc/ti-lmp92064.c
TI PCM3060 ASoC CODEC DRIVER
M:	Kirill Marinushkin <kmarinushkin@birdec.com>
M:	Kirill Marinushkin <k.marinushkin@gmail.com>
L:	linux-sound@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/sound/pcm3060.txt
+6 −13
Original line number Diff line number Diff line
@@ -376,11 +376,12 @@ static int intel_hw_params(struct snd_pcm_substream *substream,
static int intel_prepare(struct snd_pcm_substream *substream,
			 struct snd_soc_dai *dai)
{
	struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
	struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
	struct sdw_intel *sdw = cdns_to_intel(cdns);
	struct sdw_cdns_dai_runtime *dai_runtime;
	struct snd_pcm_hw_params *hw_params;
	int ch, dir;
	int ret = 0;

	dai_runtime = cdns->dai_runtime_array[dai->id];
	if (!dai_runtime) {
@@ -389,12 +390,8 @@ static int intel_prepare(struct snd_pcm_substream *substream,
		return -EIO;
	}

	if (dai_runtime->suspended) {
		struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
		struct snd_pcm_hw_params *hw_params;

	hw_params = &rtd->dpcm[substream->stream].hw_params;

	if (dai_runtime->suspended) {
		dai_runtime->suspended = false;

		/*
@@ -415,17 +412,13 @@ static int intel_prepare(struct snd_pcm_substream *substream,
		/* the SHIM will be configured in the callback functions */

		sdw_cdns_config_stream(cdns, ch, dir, dai_runtime->pdi);
	}

	/* Inform DSP about PDI stream number */
		ret = intel_params_stream(sdw, substream, dai,
					  hw_params,
					  sdw->instance,
	return intel_params_stream(sdw, substream, dai, hw_params, sdw->instance,
				   dai_runtime->pdi->intel_alh_id);
}

	return ret;
}

static int
intel_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
{
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@

/* ABI version */
#define SND_SOC_TPLG_ABI_VERSION	0x5	/* current version */
#define SND_SOC_TPLG_ABI_VERSION_MIN	0x4	/* oldest version supported */
#define SND_SOC_TPLG_ABI_VERSION_MIN	0x5	/* oldest version supported */

/* Max size of TLV data */
#define SND_SOC_TPLG_TLV_SIZE		32
+14 −0
Original line number Diff line number Diff line
@@ -325,6 +325,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "M6500RC"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_PRODUCT_NAME, "E1404FA"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
@@ -339,6 +346,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "M7600RE"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_PRODUCT_NAME, "M3502RA"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
Loading