root/sound/usb/media.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. snd_media_device_create
  2. snd_media_device_delete
  3. snd_media_stream_init
  4. snd_media_stream_delete
  5. snd_media_start_pipeline
  6. snd_media_stop_pipeline

   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 
  28 struct 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 
  44 struct 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 
  53 int snd_media_device_create(struct snd_usb_audio *chip,
  54                             struct usb_interface *iface);
  55 void snd_media_device_delete(struct snd_usb_audio *chip);
  56 int snd_media_stream_init(struct snd_usb_substream *subs, struct snd_pcm *pcm,
  57                           int stream);
  58 void snd_media_stream_delete(struct snd_usb_substream *subs);
  59 int snd_media_start_pipeline(struct snd_usb_substream *subs);
  60 void snd_media_stop_pipeline(struct snd_usb_substream *subs);
  61 #else
  62 static inline int snd_media_device_create(struct snd_usb_audio *chip,
  63                                           struct usb_interface *iface)
  64                                                 { return 0; }
  65 static inline void snd_media_device_delete(struct snd_usb_audio *chip) { }
  66 static inline int snd_media_stream_init(struct snd_usb_substream *subs,
  67                                         struct snd_pcm *pcm, int stream)
  68                                                 { return 0; }
  69 static inline void snd_media_stream_delete(struct snd_usb_substream *subs) { }
  70 static inline int snd_media_start_pipeline(struct snd_usb_substream *subs)
  71                                         { return 0; }
  72 static inline void snd_media_stop_pipeline(struct snd_usb_substream *subs) { }
  73 #endif
  74 #endif /* __MEDIA_H */

/* [<][>][^][v][top][bottom][index][help] */