mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
sound: sdw: Add hw_params to SoundWire config helper function
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> Link: https://lore.kernel.org/r/20221123165432.594972-1-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
d695d089e3
commit
e45875168d
49
include/sound/sdw.h
Normal file
49
include/sound/sdw.h
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user