__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0+
 *
 *  Copyright (C) 2012, Analog Devices Inc.
 *	Author: Lars-Peter Clausen <[email protected]>
 */

#ifndef __SOUND_DMAENGINE_PCM_H__
#define __SOUND_DMAENGINE_PCM_H__

#include <sound/pcm.h>
#include <sound/soc.h>
#include <linux/dmaengine.h>

/**
 * snd_pcm_substream_to_dma_direction - Get dma_transfer_direction for a PCM
 *   substream
 * @substream: PCM substream
 *
 * Return: DMA transfer direction
 */
static inline enum dma_transfer_direction
snd_pcm_substream_to_dma_direction(const struct snd_pcm_substream *substream)
{
	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
		return DMA_MEM_TO_DEV;
	else
		return DMA_DEV_TO_MEM;
}

int snd_hwparams_to_dma_slave_config(const struct snd_pcm_substream *substream,
	const struct snd_pcm_hw_params *params, struct dma_slave_config *slave_config);
int snd_dmaengine_pcm_trigger(struct snd_pcm_substream *substream, int cmd);
snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream);
snd_pcm_uframes_t snd_dmaengine_pcm_pointer_no_residue(struct snd_pcm_substream *substream);

int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream,
	struct dma_chan *chan);
int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream);
int snd_dmaengine_pcm_sync_stop(struct snd_pcm_substream *substream);

int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
	dma_filter_fn filter_fn, void *filter_data);
int snd_dmaengine_pcm_close_release_chan(struct snd_pcm_substream *substream);

struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn,
	void *filter_data);
struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream);

/*
 * The DAI supports packed transfers, eg 2 16-bit samples in a 32-bit word.
 * If this flag is set the dmaengine driver won't put any restriction on
 * the supported sample formats and set the DMA transfer size to undefined.
 * The DAI driver is responsible to disable any unsupported formats in it's
 * configuration and catch corner cases that are not already handled in
 * the ALSA core.
 */
#define SND_DMAENGINE_PCM_DAI_FLAG_PACK BIT(0)

/**
 * struct snd_dmaengine_dai_dma_data - DAI DMA configuration data
 * @addr: Address of the DAI data source or destination register.
 * @addr_width: Width of the DAI data source or destination register.
 * @maxburst: Maximum number of words(note: words, as in units of the
 * src_addr_width member, not bytes) that can be send to or received from the
 * DAI in one burst.
 * @filter_data: Custom DMA channel filter data, this will usually be used when
 * requesting the DMA channel.
 * @chan_name: Custom channel name to use when requesting DMA channel.
 * @fifo_size: FIFO size of the DAI controller in bytes
 * @flags: PCM_DAI flags, only SND_DMAENGINE_PCM_DAI_FLAG_PACK for now
 * @peripheral_config: peripheral configuration for programming peripheral
 * for dmaengine transfer
 * @peripheral_size: peripheral configuration buffer size
 */
struct snd_dmaengine_dai_dma_data {
	dma_addr_t addr;
	enum dma_slave_buswidth addr_width;
	u32 maxburst;
	void *filter_data;
	const char *chan_name;
	unsigned int fifo_size;
	unsigned int flags;
	void *peripheral_config;
	size_t peripheral_size;
};

void snd_dmaengine_pcm_set_config_from_dai_data(
	const struct snd_pcm_substream *substream,
	const struct snd_dmaengine_dai_dma_data *dma_data,
	struct dma_slave_config *config);

int snd_dmaengine_pcm_refine_runtime_hwparams(
	struct snd_pcm_substream *substream,
	struct snd_dmaengine_dai_dma_data *dma_data,
	struct snd_pcm_hardware *hw,
	struct dma_chan *chan);

/*
 * Try to request the DMA channel using compat_request_channel or
 * compat_filter_fn if it couldn't be requested through devicetree.
 */
#define SND_DMAENGINE_PCM_FLAG_COMPAT BIT(0)
/*
 * Don't try to request the DMA channels through devicetree. This flag only
 * makes sense if SND_DMAENGINE_PCM_FLAG_COMPAT is set as well.
 */
#define SND_DMAENGINE_PCM_FLAG_NO_DT BIT(1)
/*
 * The PCM is half duplex and the DMA channel is shared between capture and
 * playback.
 */
#define SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX BIT(3)

/**
 * struct snd_dmaengine_pcm_config - Configuration data for dmaengine based PCM
 * @prepare_slave_config: Callback used to fill in the DMA slave_config for a
 *   PCM substream. Will be called from the PCM drivers hwparams callback.
 * @compat_request_channel: Callback to request a DMA channel for platforms
 *   which do not use devicetree.
 * @process: Callback used to apply processing on samples transferred from/to
 *   user space.
 * @name: Component name. If null, dev_name will be used.
 * @compat_filter_fn: Will be used as the filter function when requesting a
 *  channel for platforms which do not use devicetree. The filter parameter
 *  will be the DAI's DMA data.
 * @dma_dev: If set, request DMA channel on this device rather than the DAI
 *  device.
 * @chan_names: If set, these custom DMA channel names will be requested at
 *  registration time.
 * @pcm_hardware: snd_pcm_hardware struct to be used for the PCM.
 * @prealloc_buffer_size: Size of the preallocated audio buffer.
 *
 * Note: If both compat_request_channel and compat_filter_fn are set
 * compat_request_channel will be used to request the channel and
 * compat_filter_fn will be ignored. Otherwise the channel will be requested
 * using dma_request_channel with compat_filter_fn as the filter function.
 */
struct snd_dmaengine_pcm_config {
	int (*prepare_slave_config)(struct snd_pcm_substream *substream,
			struct snd_pcm_hw_params *params,
			struct dma_slave_config *slave_config);
	struct dma_chan *(*compat_request_channel)(
			struct snd_soc_pcm_runtime *rtd,
			struct snd_pcm_substream *substream);
	int (*process)(struct snd_pcm_substream *substream,
		       int channel, unsigned long hwoff,
		       unsigned long bytes);
	const char *name;
	dma_filter_fn compat_filter_fn;
	struct device *dma_dev;
	const char *chan_names[SNDRV_PCM_STREAM_LAST + 1];

	const struct snd_pcm_hardware *pcm_hardware;
	unsigned int prealloc_buffer_size;
};

int snd_dmaengine_pcm_register(struct device *dev,
	const struct snd_dmaengine_pcm_config *config,
	unsigned int flags);
void snd_dmaengine_pcm_unregister(struct device *dev);

int devm_snd_dmaengine_pcm_register(struct device *dev,
	const struct snd_dmaengine_pcm_config *config,
	unsigned int flags);

int snd_dmaengine_pcm_prepare_slave_config(struct snd_pcm_substream *substream,
	struct snd_pcm_hw_params *params,
	struct dma_slave_config *slave_config);

#define SND_DMAENGINE_PCM_DRV_NAME "snd_dmaengine_pcm"

struct dmaengine_pcm {
	struct dma_chan *chan[SNDRV_PCM_STREAM_LAST + 1];
	const struct snd_dmaengine_pcm_config *config;
	struct snd_soc_component component;
	unsigned int flags;
};

static inline struct dmaengine_pcm *soc_component_to_pcm(struct snd_soc_component *p)
{
	return container_of(p, struct dmaengine_pcm, component);
}
#endif

Filemanager

Name Type Size Permission Actions
ac97 Folder 0755
sof Folder 0755
ac97_codec.h File 15.8 KB 0644
aci.h File 2.42 KB 0644
acp63_chip_offset_byte.h File 29.75 KB 0644
ad1816a.h File 4.73 KB 0644
ad1843.h File 1.48 KB 0644
ak4113.h File 10.22 KB 0644
ak4114.h File 9.54 KB 0644
ak4117.h File 8.34 KB 0644
ak4531_codec.h File 2.56 KB 0644
ak4641.h File 476 B 0644
ak4xxx-adda.h File 2.66 KB 0644
alc5623.h File 536 B 0644
asequencer.h File 3.06 KB 0644
asound.h File 590 B 0644
asoundef.h File 16.27 KB 0644
compress_driver.h File 9.49 KB 0644
control.h File 10.56 KB 0644
core.h File 14.07 KB 0644
cs-amp-lib.h File 1.69 KB 0644
cs35l33.h File 888 B 0644
cs35l34.h File 741 B 0644
cs35l35.h File 2.21 KB 0644
cs35l36.h File 772 B 0644
cs35l41.h File 34.33 KB 0644
cs35l56.h File 11.72 KB 0644
cs4231-regs.h File 7.6 KB 0644
cs4271.h File 906 B 0644
cs42l42.h File 34.47 KB 0644
cs42l43.h File 385 B 0644
cs42l52.h File 592 B 0644
cs42l56.h File 1.02 KB 0644
cs42l73.h File 361 B 0644
cs8403.h File 7.95 KB 0644
cs8427.h File 9.72 KB 0644
da7213.h File 1.01 KB 0644
da7218.h File 2.41 KB 0644
da7219-aad.h File 2.37 KB 0644
da7219.h File 998 B 0644
da9055.h File 707 B 0644
designware_i2s.h File 1.66 KB 0644
dmaengine_pcm.h File 6.78 KB 0644
emu10k1.h File 94.74 KB 0644
emu10k1_synth.h File 693 B 0644
emu8000.h File 3.25 KB 0644
emu8000_reg.h File 9.54 KB 0644
emux_legacy.h File 4.7 KB 0644
emux_synth.h File 6.78 KB 0644
es1688.h File 2.88 KB 0644
graph_card.h File 1.04 KB 0644
gus.h File 19.65 KB 0644
hda-mlink.h File 6.32 KB 0644
hda_chmap.h File 2.6 KB 0644
hda_codec.h File 17.49 KB 0644
hda_component.h File 2.04 KB 0644
hda_hwdep.h File 736 B 0644
hda_i915.h File 589 B 0644
hda_register.h File 11.98 KB 0644
hda_regmap.h File 6.77 KB 0644
hda_verbs.h File 16.88 KB 0644
hdaudio.h File 24.57 KB 0644
hdaudio_ext.h File 4.84 KB 0644
hdmi-codec.h File 3.01 KB 0644
hwdep.h File 1.88 KB 0644
i2c.h File 2.79 KB 0644
info.h File 7.75 KB 0644
initval.h File 2.43 KB 0644
intel-dsp-config.h File 896 B 0644
intel-nhlt.h File 4.01 KB 0644
jack.h File 3.1 KB 0644
madera-pdata.h File 1.95 KB 0644
max9768.h File 544 B 0644
max98088.h File 1.05 KB 0644
max98090.h File 534 B 0644
max98095.h File 1.33 KB 0644
memalloc.h File 3.62 KB 0644
minors.h File 3.65 KB 0644
mixer_oss.h File 1.73 KB 0644
mpu401.h File 3.81 KB 0644
omap-hdmi-audio.h File 971 B 0644
opl3.h File 11.62 KB 0644
opl4.h File 459 B 0644
pcm-indirect.h File 5.18 KB 0644
pcm.h File 53.57 KB 0644
pcm_drm_eld.h File 183 B 0644
pcm_iec958.h File 597 B 0644
pcm_oss.h File 2.01 KB 0644
pcm_params.h File 8.72 KB 0644
pt2258.h File 513 B 0644
pxa2xx-lib.h File 2.25 KB 0644
rawmidi.h File 6.37 KB 0644
rt1015.h File 283 B 0644
rt1318.h File 303 B 0644
rt286.h File 314 B 0644
rt298.h File 373 B 0644
rt5514.h File 399 B 0644
rt5659.h File 880 B 0644
rt5660.h File 578 B 0644
rt5663.h File 476 B 0644
rt5665.h File 723 B 0644
rt5668.h File 607 B 0644
rt5682.h File 862 B 0644
rt5682s.h File 1.01 KB 0644
sb.h File 10.43 KB 0644
sb16_csp.h File 2.05 KB 0644
sdca.h File 1.66 KB 0644
sdca_function.h File 3.05 KB 0644
sdw.h File 1.63 KB 0644
seq_device.h File 2.16 KB 0644
seq_kernel.h File 3.51 KB 0644
seq_midi_emul.h File 6.6 KB 0644
seq_midi_event.h File 1.32 KB 0644
seq_oss.h File 2.21 KB 0644
seq_oss_legacy.h File 360 B 0644
seq_virmidi.h File 2.07 KB 0644
sh_dac_audio.h File 441 B 0644
sh_fsi.h File 693 B 0644
simple_card.h File 524 B 0644
simple_card_utils.h File 9.38 KB 0644
snd_wavefront.h File 5.49 KB 0644
soc-acpi-intel-match.h File 2.61 KB 0644
soc-acpi-intel-ssp-common.h File 1.88 KB 0644
soc-acpi.h File 8.46 KB 0644
soc-card.h File 3.45 KB 0644
soc-component.h File 20.23 KB 0644
soc-dai.h File 20.72 KB 0644
soc-dapm.h File 33.46 KB 0644
soc-dpcm.h File 4.82 KB 0644
soc-jack.h File 3.68 KB 0644
soc-link.h File 1.14 KB 0644
soc-topology.h File 5.75 KB 0644
soc.h File 54.82 KB 0644
soc_sdw_utils.h File 9.05 KB 0644
sof.h File 4.58 KB 0644
soundfont.h File 3.86 KB 0644
spear_dma.h File 350 B 0644
spear_spdif.h File 345 B 0644
sta32x.h File 1015 B 0644
sta350.h File 1.44 KB 0644
tas2552-plat.h File 283 B 0644
tas2563-tlv.h File 11.37 KB 0644
tas2781-dsp.h File 4.85 KB 0644
tas2781-tlv.h File 594 B 0644
tas2781.h File 7.98 KB 0644
tas5086.h File 210 B 0644
tea6330t.h File 468 B 0644
timer.h File 4.99 KB 0644
tlv.h File 1.59 KB 0644
tlv320aic32x4.h File 1.29 KB 0644
tlv320dac33-plat.h File 574 B 0644
tpa6130a2-plat.h File 291 B 0644
uda1380.h File 335 B 0644
ump.h File 8.24 KB 0644
ump_convert.h File 1.25 KB 0644
ump_msg.h File 13.81 KB 0644
util_mem.h File 1.58 KB 0644
vx_core.h File 14.68 KB 0644
wavefront.h File 16.32 KB 0644
wm0010.h File 321 B 0644
wm2000.h File 479 B 0644
wm2200.h File 1.21 KB 0644
wm5100.h File 935 B 0644
wm8903.h File 15.02 KB 0644
wm8904.h File 7.22 KB 0644
wm8955.h File 442 B 0644
wm8960.h File 888 B 0644
wm8962.h File 1.65 KB 0644
wm8993.h File 1.05 KB 0644
wm8996.h File 1.19 KB 0644
wm9081.h File 515 B 0644
wm9090.h File 634 B 0644
wss.h File 7.76 KB 0644
Filemanager