From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
lgirdwood@gmail.com, daniel.baluta@nxp.com, perex@perex.cz,
tiwai@suse.com, sound-open-firmware@alsa-project.org,
linux-sound@vger.kernel.org
Subject: [PATCH AUTOSEL 6.6 22/47] ASoC: SOF: ipc4-topology: Correct data structures for the SRC module
Date: Mon, 11 Dec 2023 08:50:23 -0500 [thread overview]
Message-ID: <20231211135147.380223-22-sashal@kernel.org> (raw)
In-Reply-To: <20231211135147.380223-1-sashal@kernel.org>
From: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
[ Upstream commit c447636970e3409ac39f0bb8c2dcff6b726f36b0 ]
Separate the IPC message part as struct sof_ipc4_src_data. This struct
describes the message payload passed to the firmware via the mailbox.
It is not wise to be 'clever' and try to use the first part of a struct
as IPC message without marking the message section as packed and aligned.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20231129131411.27516-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/sof/ipc4-topology.c | 21 +++++++++++----------
sound/soc/sof/ipc4-topology.h | 16 ++++++++++++----
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c
index 05c3b1153a91c..42f6a99935d16 100644
--- a/sound/soc/sof/ipc4-topology.c
+++ b/sound/soc/sof/ipc4-topology.c
@@ -139,7 +139,7 @@ static const struct sof_topology_token gain_tokens[] = {
/* SRC */
static const struct sof_topology_token src_tokens[] = {
{SOF_TKN_SRC_RATE_OUT, SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32,
- offsetof(struct sof_ipc4_src, sink_rate)},
+ offsetof(struct sof_ipc4_src_data, sink_rate)},
};
static const struct sof_token_info ipc4_token_list[SOF_TOKEN_COUNT] = {
@@ -812,11 +812,12 @@ static int sof_ipc4_widget_setup_comp_src(struct snd_sof_widget *swidget)
swidget->private = src;
- ret = sof_ipc4_get_audio_fmt(scomp, swidget, &src->available_fmt, &src->base_config);
+ ret = sof_ipc4_get_audio_fmt(scomp, swidget, &src->available_fmt,
+ &src->data.base_config);
if (ret)
goto err;
- ret = sof_update_ipc_object(scomp, src, SOF_SRC_TOKENS, swidget->tuples,
+ ret = sof_update_ipc_object(scomp, &src->data, SOF_SRC_TOKENS, swidget->tuples,
swidget->num_tuples, sizeof(*src), 1);
if (ret) {
dev_err(scomp->dev, "Parsing SRC tokens failed\n");
@@ -825,7 +826,7 @@ static int sof_ipc4_widget_setup_comp_src(struct snd_sof_widget *swidget)
spipe->core_mask |= BIT(swidget->core);
- dev_dbg(scomp->dev, "SRC sink rate %d\n", src->sink_rate);
+ dev_dbg(scomp->dev, "SRC sink rate %d\n", src->data.sink_rate);
ret = sof_ipc4_widget_setup_msg(swidget, &src->msg);
if (ret)
@@ -1896,7 +1897,7 @@ static int sof_ipc4_prepare_src_module(struct snd_sof_widget *swidget,
u32 out_ref_rate, out_ref_channels, out_ref_valid_bits;
int output_format_index, input_format_index;
- input_format_index = sof_ipc4_init_input_audio_fmt(sdev, swidget, &src->base_config,
+ input_format_index = sof_ipc4_init_input_audio_fmt(sdev, swidget, &src->data.base_config,
pipeline_params, available_fmt);
if (input_format_index < 0)
return input_format_index;
@@ -1926,7 +1927,7 @@ static int sof_ipc4_prepare_src_module(struct snd_sof_widget *swidget,
*/
out_ref_rate = params_rate(fe_params);
- output_format_index = sof_ipc4_init_output_audio_fmt(sdev, &src->base_config,
+ output_format_index = sof_ipc4_init_output_audio_fmt(sdev, &src->data.base_config,
available_fmt, out_ref_rate,
out_ref_channels, out_ref_valid_bits);
if (output_format_index < 0) {
@@ -1936,10 +1937,10 @@ static int sof_ipc4_prepare_src_module(struct snd_sof_widget *swidget,
}
/* update pipeline memory usage */
- sof_ipc4_update_resource_usage(sdev, swidget, &src->base_config);
+ sof_ipc4_update_resource_usage(sdev, swidget, &src->data.base_config);
out_audio_fmt = &available_fmt->output_pin_fmts[output_format_index].audio_fmt;
- src->sink_rate = out_audio_fmt->sampling_frequency;
+ src->data.sink_rate = out_audio_fmt->sampling_frequency;
/* update pipeline_params for sink widgets */
return sof_ipc4_update_hw_params(sdev, pipeline_params, out_audio_fmt);
@@ -2297,8 +2298,8 @@ static int sof_ipc4_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget
{
struct sof_ipc4_src *src = swidget->private;
- ipc_size = sizeof(struct sof_ipc4_base_module_cfg) + sizeof(src->sink_rate);
- ipc_data = src;
+ ipc_size = sizeof(src->data);
+ ipc_data = &src->data;
msg = &src->msg;
break;
diff --git a/sound/soc/sof/ipc4-topology.h b/sound/soc/sof/ipc4-topology.h
index d75f17f4749c6..f96536dbaee55 100644
--- a/sound/soc/sof/ipc4-topology.h
+++ b/sound/soc/sof/ipc4-topology.h
@@ -387,16 +387,24 @@ struct sof_ipc4_mixer {
struct sof_ipc4_msg msg;
};
-/**
- * struct sof_ipc4_src SRC config data
+/*
+ * struct sof_ipc4_src_data - IPC data for SRC
* @base_config: IPC base config data
* @sink_rate: Output rate for sink module
+ */
+struct sof_ipc4_src_data {
+ struct sof_ipc4_base_module_cfg base_config;
+ uint32_t sink_rate;
+} __packed __aligned(4);
+
+/**
+ * struct sof_ipc4_src - SRC config data
+ * @data: IPC base config data
* @available_fmt: Available audio format
* @msg: IPC4 message struct containing header and data info
*/
struct sof_ipc4_src {
- struct sof_ipc4_base_module_cfg base_config;
- uint32_t sink_rate;
+ struct sof_ipc4_src_data data;
struct sof_ipc4_available_audio_format available_fmt;
struct sof_ipc4_msg msg;
};
--
2.42.0
next prev parent reply other threads:[~2023-12-11 13:54 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-11 13:50 [PATCH AUTOSEL 6.6 01/47] hwtracing: hisi_ptt: Handle the interrupt in hardirq context Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 02/47] hwtracing: hisi_ptt: Don't try to attach a task Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 03/47] ASoC: amd: yc: Add HP 255 G10 into quirk table Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 04/47] ASoC: wm8974: Correct boost mixer inputs Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 05/47] arm64: dts: rockchip: fix rk356x pcie msg interrupt name Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 06/47] ASoC: Intel: Skylake: Fix mem leak in few functions Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 07/47] ASoC: nau8822: Fix incorrect type in assignment and cast to restricted __be16 Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 08/47] ASoC: SOF: topology: Fix mem leak in sof_dai_load() Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 09/47] ASoC: Intel: Skylake: mem leak in skl register function Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 10/47] ASoC: cs43130: Fix the position of const qualifier Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 11/47] ASoC: cs43130: Fix incorrect frame delay configuration Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 12/47] ASoC: fsl_xcvr: Enable 2 * TX bit clock for spdif only case Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 13/47] ASoC: rt5650: add mutex to avoid the jack detection failure Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 14/47] ASoC: SOF: mediatek: mt8186: Add Google Steelix topology compatible Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 15/47] ASoC: fsl_xcvr: refine the requested phy clock frequency Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 16/47] ASoC: Intel: skl_hda_dsp_generic: Drop HDMI routes when HDMI is not available Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 17/47] ASoC: SOF: ipc4-topology: Add core_mask in struct snd_sof_pipeline Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 18/47] ASoC: SOF: sof-audio: Modify logic for enabling/disabling topology cores Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 19/47] nouveau/tu102: flush all pdbs on vmm flush Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 20/47] ASoC: amd: yc: Add DMI entry to support System76 Pangolin 13 Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 21/47] ASoC: hdac_hda: Conditionally register dais for HDMI and Analog Sasha Levin
2023-12-11 13:50 ` Sasha Levin [this message]
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 23/47] ASoC: SOF: ipc4-topology: Correct data structures for the GAIN module Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 24/47] pds_vdpa: fix up format-truncation complaint Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 25/47] pds_vdpa: clear config callback when status goes to 0 Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 26/47] pds_vdpa: set features order Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 27/47] net/tg3: fix race condition in tg3_reset_task() Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 28/47] ASoC: da7219: Support low DC impedance headset Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 29/47] ASoC: ops: add correct range check for limiting volume Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 30/47] nvme: introduce helper function to get ctrl state Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 31/47] nvme: ensure reset state check ordering Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 32/47] nvme-ioctl: move capable() admin check to the end Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 33/47] nvme: prevent potential spectre v1 gadget Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 34/47] nvme: fix deadlock between reset and scan Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 35/47] arm64: dts: rockchip: Fix PCI node addresses on rk3399-gru Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 36/47] mips/smp: Call rcutree_report_cpu_starting() earlier Sasha Levin
2023-12-12 1:45 ` Huacai Chen
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 37/47] r8152: add vendor/device ID pair for ASUS USB-C2500 Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 38/47] drm/amd/display: Use channel_width = 2 for vram table 3.0 Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 39/47] drm/amd/display: Add monitor patch for specific eDP Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 40/47] drm/amdgpu: Add NULL checks for function pointers Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 41/47] drm/exynos: fix a potential error pointer dereference Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 42/47] drm/exynos: fix a wrong error checking Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 43/47] ALSA: pcmtest: stop timer before buffer is released Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 44/47] hwmon: (corsair-psu) Fix probe when built-in Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 45/47] LoongArch: Apply dynamic relocations for LLD Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 46/47] LoongArch: Set unwind stack type to unknown rather than set error flag Sasha Levin
2023-12-11 13:50 ` [PATCH AUTOSEL 6.6 47/47] LoongArch: Preserve syscall nr across execve() Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231211135147.380223-22-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=broonie@kernel.org \
--cc=daniel.baluta@nxp.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=peter.ujfalusi@linux.intel.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=sound-open-firmware@alsa-project.org \
--cc=stable@vger.kernel.org \
--cc=tiwai@suse.com \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox