cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

media.h (2470B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 * media.h - Media Controller specific ALSA driver code
      4 *
      5 * Copyright (c) 2019 Shuah Khan <shuah@kernel.org>
      6 *
      7 */
      8
      9/*
     10 * This file adds Media Controller support to the ALSA driver
     11 * to use the Media Controller API to share the tuner with DVB
     12 * and V4L2 drivers that control the media device.
     13 *
     14 * The media device is created based on the existing quirks framework.
     15 * Using this approach, the media controller API usage can be added for
     16 * a specific device.
     17 */
     18#ifndef __MEDIA_H
     19
     20#ifdef CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER
     21
     22#include <linux/media.h>
     23#include <media/media-device.h>
     24#include <media/media-entity.h>
     25#include <media/media-dev-allocator.h>
     26#include <sound/asound.h>
     27
     28struct media_ctl {
     29	struct media_device *media_dev;
     30	struct media_entity media_entity;
     31	struct media_intf_devnode *intf_devnode;
     32	struct media_link *intf_link;
     33	struct media_pad media_pad;
     34	struct media_pipeline media_pipe;
     35};
     36
     37/*
     38 * One source pad each for SNDRV_PCM_STREAM_CAPTURE and
     39 * SNDRV_PCM_STREAM_PLAYBACK. One for sink pad to link
     40 * to AUDIO Source
     41 */
     42#define MEDIA_MIXER_PAD_MAX    (SNDRV_PCM_STREAM_LAST + 2)
     43
     44struct media_mixer_ctl {
     45	struct media_device *media_dev;
     46	struct media_entity media_entity;
     47	struct media_intf_devnode *intf_devnode;
     48	struct media_link *intf_link;
     49	struct media_pad media_pad[MEDIA_MIXER_PAD_MAX];
     50	struct media_pipeline media_pipe;
     51};
     52
     53int snd_media_device_create(struct snd_usb_audio *chip,
     54			    struct usb_interface *iface);
     55void snd_media_device_delete(struct snd_usb_audio *chip);
     56int snd_media_stream_init(struct snd_usb_substream *subs, struct snd_pcm *pcm,
     57			  int stream);
     58void snd_media_stream_delete(struct snd_usb_substream *subs);
     59int snd_media_start_pipeline(struct snd_usb_substream *subs);
     60void snd_media_stop_pipeline(struct snd_usb_substream *subs);
     61#else
     62static inline int snd_media_device_create(struct snd_usb_audio *chip,
     63					  struct usb_interface *iface)
     64						{ return 0; }
     65static inline void snd_media_device_delete(struct snd_usb_audio *chip) { }
     66static inline int snd_media_stream_init(struct snd_usb_substream *subs,
     67					struct snd_pcm *pcm, int stream)
     68						{ return 0; }
     69static inline void snd_media_stream_delete(struct snd_usb_substream *subs) { }
     70static inline int snd_media_start_pipeline(struct snd_usb_substream *subs)
     71					{ return 0; }
     72static inline void snd_media_stop_pipeline(struct snd_usb_substream *subs) { }
     73#endif
     74#endif /* __MEDIA_H */