73 lines
2.4 KiB
C
73 lines
2.4 KiB
C
|
/*
|
||
|
* media.h - Media Controller specific ALSA driver code
|
||
|
*
|
||
|
* Copyright (c) 2016 Shuah Khan <shuahkh@osg.samsung.com>
|
||
|
* Copyright (c) 2016 Samsung Electronics Co., Ltd.
|
||
|
*
|
||
|
* This file is released under the GPLv2.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* This file adds Media Controller support to ALSA driver
|
||
|
* to use the Media Controller API to share tuner with DVB
|
||
|
* and V4L2 drivers that control media device. Media device
|
||
|
* is created based on existing quirks framework. Using this
|
||
|
* approach, the media controller API usage can be added for
|
||
|
* a specific device.
|
||
|
*/
|
||
|
#ifndef __MEDIA_H
|
||
|
|
||
|
#ifdef CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER
|
||
|
|
||
|
#include <media/media-device.h>
|
||
|
#include <media/media-entity.h>
|
||
|
#include <sound/asound.h>
|
||
|
|
||
|
struct media_ctl {
|
||
|
struct media_device *media_dev;
|
||
|
struct media_entity media_entity;
|
||
|
struct media_intf_devnode *intf_devnode;
|
||
|
struct media_link *intf_link;
|
||
|
struct media_pad media_pad;
|
||
|
struct media_pipeline media_pipe;
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* One source pad each for SNDRV_PCM_STREAM_CAPTURE and
|
||
|
* SNDRV_PCM_STREAM_PLAYBACK. One for sink pad to link
|
||
|
* to AUDIO Source
|
||
|
*/
|
||
|
#define MEDIA_MIXER_PAD_MAX (SNDRV_PCM_STREAM_LAST + 2)
|
||
|
|
||
|
struct media_mixer_ctl {
|
||
|
struct media_device *media_dev;
|
||
|
struct media_entity media_entity;
|
||
|
struct media_intf_devnode *intf_devnode;
|
||
|
struct media_link *intf_link;
|
||
|
struct media_pad media_pad[MEDIA_MIXER_PAD_MAX];
|
||
|
struct media_pipeline media_pipe;
|
||
|
};
|
||
|
|
||
|
int media_snd_device_create(struct snd_usb_audio *chip,
|
||
|
struct usb_interface *iface);
|
||
|
void media_snd_device_delete(struct snd_usb_audio *chip);
|
||
|
int media_snd_stream_init(struct snd_usb_substream *subs, struct snd_pcm *pcm,
|
||
|
int stream);
|
||
|
void media_snd_stream_delete(struct snd_usb_substream *subs);
|
||
|
int media_snd_start_pipeline(struct snd_usb_substream *subs);
|
||
|
void media_snd_stop_pipeline(struct snd_usb_substream *subs);
|
||
|
#else
|
||
|
static inline int media_snd_device_create(struct snd_usb_audio *chip,
|
||
|
struct usb_interface *iface)
|
||
|
{ return 0; }
|
||
|
static inline void media_snd_device_delete(struct snd_usb_audio *chip) { }
|
||
|
static inline int media_snd_stream_init(struct snd_usb_substream *subs,
|
||
|
struct snd_pcm *pcm, int stream)
|
||
|
{ return 0; }
|
||
|
static inline void media_snd_stream_delete(struct snd_usb_substream *subs) { }
|
||
|
static inline int media_snd_start_pipeline(struct snd_usb_substream *subs)
|
||
|
{ return 0; }
|
||
|
static inline void media_snd_stop_pipeline(struct snd_usb_substream *subs) { }
|
||
|
#endif
|
||
|
#endif /* __MEDIA_H */
|