All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: <tiwai@suse.com>, <broonie@kernel.org>
Cc: oder_chiou@realtek.com, alsa-devel@alsa-project.org,
	patches@opensource.cirrus.com,
	pierre-louis.bossart@linux.intel.com, lgirdwood@gmail.com
Subject: [PATCH v3 1/9] sound: sdw: Add hw_params to SoundWire config helper function
Date: Wed, 23 Nov 2022 16:54:24 +0000	[thread overview]
Message-ID: <20221123165432.594972-1-ckeepax@opensource.cirrus.com> (raw)

The vast majority of the current users of the SoundWire framework
have almost identical code for converting from hw_params to SoundWire
configuration. Whilst complex devices might require more, it is very
likely that most new devices will follow the same pattern. Save a
little code by factoring this out into a helper function.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---

I  was a little bit two minds about whether to make this an inline or
not, so any thoughts on that would be super welcome. The function does
very little, especially given that SNDRV_PCM_STREAM_PLAYBACK ==
SDW_DATA_DIR_RX so the if is also really just an assignment.

Thanks,
Charles

Changes since v2:
 - No difference
Changes since v1:
 - Correct spelling error in commit message

 include/sound/sdw.h | 49 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 include/sound/sdw.h

diff --git a/include/sound/sdw.h b/include/sound/sdw.h
new file mode 100644
index 0000000000000..6dcdb3228dba6
--- /dev/null
+++ b/include/sound/sdw.h
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * linux/sound/sdw.h -- SoundWire helpers for ALSA/ASoC
+ *
+ * Copyright (c) 2022 Cirrus Logic Inc.
+ *
+ * Author: Charles Keepax <ckeepax@opensource.cirrus.com>
+ */
+
+#include <linux/soundwire/sdw.h>
+#include <sound/asound.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+
+#ifndef __INCLUDE_SOUND_SDW_H
+#define __INCLUDE_SOUND_SDW_H
+
+/**
+ * snd_sdw_params_to_config() - Conversion from hw_params to SoundWire config
+ *
+ * @substream: Pointer to the PCM substream structure
+ * @params: Pointer to the hardware params structure
+ * @stream_config: Stream configuration for the SoundWire audio stream
+ * @port_config: Port configuration for the SoundWire audio stream
+ *
+ * This function provides a basic conversion from the hw_params structure to
+ * SoundWire configuration structures. The user will at a minimum need to also
+ * set the port number in the port config, but may also override more of the
+ * setup, or in the case of a complex user, not use this helper at all and
+ * open-code everything.
+ */
+static inline void snd_sdw_params_to_config(struct snd_pcm_substream *substream,
+					    struct snd_pcm_hw_params *params,
+					    struct sdw_stream_config *stream_config,
+					    struct sdw_port_config *port_config)
+{
+	stream_config->frame_rate = params_rate(params);
+	stream_config->ch_count = params_channels(params);
+	stream_config->bps = snd_pcm_format_width(params_format(params));
+
+	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+		stream_config->direction = SDW_DATA_DIR_RX;
+	else
+		stream_config->direction = SDW_DATA_DIR_TX;
+
+	port_config->ch_mask = GENMASK(stream_config->ch_count - 1, 0);
+}
+
+#endif
-- 
2.30.2


             reply	other threads:[~2022-11-23 16:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 16:54 Charles Keepax [this message]
2022-11-23 16:54 ` [PATCH v3 2/9] ASoC: max98373-sdw: Switch to new snd_sdw_params_to_config helper Charles Keepax
2022-11-23 16:54 ` [PATCH v3 3/9] ASoC: rt1308-sdw: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 4/9] ASoC: rt1316-sdw: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 5/9] ASoC: rt5682-sdw: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 6/9] ASoC: rt700: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 7/9] ASoC: rt711: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 8/9] ASoC: rt715: " Charles Keepax
2022-11-23 16:54 ` [PATCH v3 9/9] ASoC: sdw-mockup: " Charles Keepax
2022-11-28 16:39 ` [PATCH v3 1/9] sound: sdw: Add hw_params to SoundWire config helper function Mark Brown

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=20221123165432.594972-1-ckeepax@opensource.cirrus.com \
    --to=ckeepax@opensource.cirrus.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=oder_chiou@realtek.com \
    --cc=patches@opensource.cirrus.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=tiwai@suse.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 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.