/* SPDX-License-Identifier: GPL-2.0-or-later */#ifndef __SOUND_PCM_H#define __SOUND_PCM_H/* * Digital Audio (PCM) abstract layer * Copyright (c) by Jaroslav Kysela <perex@perex.cz> * Abramo Bagnara <abramo@alsa-project.org> */#include<sound/asound.h>#include<sound/memalloc.h>#include<sound/minors.h>#include<linux/poll.h>#include<linux/mm.h>#include<linux/bitops.h>#include<linux/pm_qos.h>#include<linux/refcount.h>#define snd_pcm_substream_chip(substream) ((substream)->private_data)#define snd_pcm_chip(pcm) ((pcm)->private_data)#if IS_ENABLED(CONFIG_SND_PCM_OSS)#include<sound/pcm_oss.h>#endif/* * Hardware (lowlevel) section */structsnd_pcm_hardware{unsignedintinfo;/* SNDRV_PCM_INFO_* */u64formats;/* SNDRV_PCM_FMTBIT_* */unsignedintrates;/* SNDRV_PCM_RATE_* */unsignedintrate_min;/* min rate */unsignedintrate_max;/* max rate */unsignedintchannels_min;/* min channels */unsignedintchannels_max;/* max channels */size_tbuffer_bytes_max;/* max buffer size */size_tperiod_bytes_min;/* min period size */size_tperiod_bytes_max;/* max period size */unsignedintperiods_min;/* min # of periods */unsignedintperiods_max;/* max # of periods */size_tfifo_size;/* fifo size in bytes */};structsnd_pcm_substream;structsnd_pcm_audio_tstamp_config;/* definitions further down */structsnd_pcm_audio_tstamp_report;structsnd_pcm_ops{int(*open)(structsnd_pcm_substream*substream);int(*close)(structsnd_pcm_substream*substream);int(*ioctl)(structsnd_pcm_substream*substream,unsignedintcmd,void*arg);int(*hw_params)(structsnd_pcm_substream