Unverified Commit 46234fbe authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Intel: avs: Fixes and new boards support

Merge series from Cezary Rojewski <cezary.rojewski@intel.com>:

Two fixes are leading the way - one addresses the incorrect DMA mask
assignment (typo) at driver probe. The other, fixes a potential buffer
overflow when copying data received from firmware to kernel buffer.
However unlikely, the fix should still be there.

Then a range of patches providing the support for:
- AML with rt286 (machine board)
- KBL-R for rt298 (codec)
- KBL-R with rt298 (machine board)
- APL/KBL with da7219 (machine board)
- Addition of all the missing SKL-based PCI ids to core.c

Of the remaining changes, only one stands out - special case is provided
for "unsupported" IPCs. The driver supports a range of platforms,
however, on some generations given IPC may not be supported. Such call
shall not be treated as "invalid" - those are two different scenarios.

Everything else in the patchset is mostly a readability improvement:
spelling fixes and log messages issues, code simplification.
parents a2ddd19f 62d0cee4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -213,7 +213,7 @@ static int hda_codec_probe(struct snd_soc_component *component)

	patch = (hda_codec_patch_t)codec->preset->driver_data;
	if (!patch) {
		dev_err(&hdev->dev, "no patch specified?\n");
		dev_err(&hdev->dev, "no patch specified\n");
		ret = -EINVAL;
		goto err;
	}
+7 −0
Original line number Diff line number Diff line
@@ -1166,6 +1166,13 @@ static const struct dmi_system_id force_combo_jack_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "Geminilake")
		}
	},
	{
		.ident = "Intel Kabylake R RVP",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Kabylake Client platform")
		}
	},
	{ }
};

+4 −2
Original line number Diff line number Diff line
@@ -133,12 +133,14 @@ static int apl_coredump(struct avs_dev *adev, union avs_notify_msg *msg)
	buf = apl_log_payload_addr(addr);
	memcpy_fromio(&layout, addr, sizeof(layout));
	if (!apl_is_entry_stackdump(buf + layout.read_ptr)) {
		union avs_notify_msg lbs_msg = AVS_NOTIFICATION(LOG_BUFFER_STATUS);

		/*
		 * DSP awaits the remaining logs to be
		 * gathered before dumping stack
		 */
		msg->log.core = msg->ext.coredump.core_id;
		avs_dsp_op(adev, log_buffer_status, msg);
		lbs_msg.log.core = msg->ext.coredump.core_id;
		avs_dsp_op(adev, log_buffer_status, &lbs_msg);
	}

	pos = dump + AVS_FW_REGS_SIZE;
+3 −1
Original line number Diff line number Diff line
@@ -220,8 +220,10 @@ static inline void avs_ipc_err(struct avs_dev *adev, struct avs_ipc_msg *tx,
	/*
	 * If IPC channel is blocked e.g.: due to ongoing recovery,
	 * -EPERM error code is expected and thus it's not an actual error.
	 *
	 * Unsupported IPCs are of no harm either.
	 */
	if (error == -EPERM)
	if (error == -EPERM || error == AVS_IPC_NOT_SUPPORTED)
		dev_dbg(adev->dev, "%s 0x%08x 0x%08x failed: %d\n", name,
			tx->glb.primary, tx->glb.ext.val, error);
	else
+6 −0
Original line number Diff line number Diff line
@@ -29,6 +29,12 @@ static const struct dmi_system_id kbl_dmi_table[] = {
			DMI_MATCH(DMI_BOARD_NAME, "Skylake Y LPDDR3 RVP3"),
		},
	},
	{
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
			DMI_MATCH(DMI_BOARD_NAME, "AmberLake Y"),
		},
	},
	{}
};

Loading