brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · f5bdec1 Raw
75 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * media.h - Media Controller specific ALSA driver code4 *5 * Copyright (c) 2019 Shuah Khan <shuah@kernel.org>6 *7 */8 9/*10 * This file adds Media Controller support to the ALSA driver11 * to use the Media Controller API to share the tuner with DVB12 * 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 for16 * a specific device.17 */18#ifndef __MEDIA_H19 20#ifdef CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER21 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 and39 * SNDRV_PCM_STREAM_PLAYBACK. One for sink pad to link40 * to AUDIO Source41 */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#else62static 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#endif74#endif /* __MEDIA_H */75