2016-01-29 11:11:30 +03:00
/*
* v4l2 - mc . h - Media Controller V4L2 types and prototypes
*
* Copyright ( C ) 2016 Mauro Carvalho Chehab < mchehab @ osg . samsung . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
2016-02-12 12:35:44 +03:00
# ifndef _V4L2_MC_H
# define _V4L2_MC_H
2016-02-05 12:02:43 +03:00
# include <media/media-device.h>
2016-01-29 11:11:30 +03:00
/**
* enum tuner_pad_index - tuner pad index for MEDIA_ENT_F_TUNER
*
* @ TUNER_PAD_RF_INPUT : Radiofrequency ( RF ) sink pad , usually linked to a
* RF connector entity .
2016-01-29 12:00:08 +03:00
* @ TUNER_PAD_OUTPUT : Tuner video output source pad . Contains the video
* chrominance and luminance or the hole bandwidth
* of the signal converted to an Intermediate Frequency
* ( IF ) or to baseband ( on zero - IF tuners ) .
* @ TUNER_PAD_AUD_OUT : Tuner audio output source pad . Tuners used to decode
* analog TV signals have an extra pad for audio output .
* Old tuners use an analog stage with a saw filter for
* the audio IF frequency . The output of the pad is , in
* this case , the audio IF , with should be decoded either
* by the bridge chipset ( that ' s the case of cx2388x
* chipsets ) or may require an external IF sound
* processor , like msp34xx . On modern silicon tuners ,
* the audio IF decoder is usually incorporated at the
* tuner . On such case , the output of this pad is an
* audio sampled data .
2016-01-29 11:11:30 +03:00
* @ TUNER_NUM_PADS : Number of pads of the tuner .
*/
enum tuner_pad_index {
TUNER_PAD_RF_INPUT ,
TUNER_PAD_OUTPUT ,
2016-01-29 12:00:08 +03:00
TUNER_PAD_AUD_OUT ,
2016-01-29 11:11:30 +03:00
TUNER_NUM_PADS
2016-01-29 12:00:08 +03:00
} ;
2016-01-29 12:00:37 +03:00
/**
* enum if_vid_dec_index - video IF - PLL pad index for
* MEDIA_ENT_F_IF_VID_DECODER
*
* @ IF_VID_DEC_PAD_IF_INPUT : video Intermediate Frequency ( IF ) sink pad
* @ IF_VID_DEC_PAD_OUT : IF - PLL video output source pad . Contains the
* video chrominance and luminance IF signals .
* @ IF_VID_DEC_PAD_NUM_PADS : Number of pads of the video IF - PLL .
*/
enum if_vid_dec_pad_index {
IF_VID_DEC_PAD_IF_INPUT ,
IF_VID_DEC_PAD_OUT ,
IF_VID_DEC_PAD_NUM_PADS
} ;
/**
* enum if_aud_dec_index - audio / sound IF - PLL pad index for
* MEDIA_ENT_F_IF_AUD_DECODER
*
* @ IF_AUD_DEC_PAD_IF_INPUT : audio Intermediate Frequency ( IF ) sink pad
* @ IF_AUD_DEC_PAD_OUT : IF - PLL audio output source pad . Contains the
* audio sampled stream data , usually connected
* to the bridge bus via an Inter - IC Sound ( I2S )
* bus .
* @ IF_AUD_DEC_PAD_NUM_PADS : Number of pads of the audio IF - PLL .
*/
enum if_aud_dec_pad_index {
IF_AUD_DEC_PAD_IF_INPUT ,
IF_AUD_DEC_PAD_OUT ,
IF_AUD_DEC_PAD_NUM_PADS
} ;
2016-01-29 12:00:57 +03:00
/**
* enum demod_pad_index - analog TV pad index for MEDIA_ENT_F_ATV_DECODER
*
* @ DEMOD_PAD_IF_INPUT : IF input sink pad .
* @ DEMOD_PAD_VID_OUT : Video output source pad .
* @ DEMOD_PAD_VBI_OUT : Vertical Blank Interface ( VBI ) output source pad .
* @ DEMOD_NUM_PADS : Maximum number of output pads .
*/
enum demod_pad_index {
DEMOD_PAD_IF_INPUT ,
DEMOD_PAD_VID_OUT ,
DEMOD_PAD_VBI_OUT ,
DEMOD_NUM_PADS
} ;
2016-02-05 12:02:43 +03:00
2016-02-11 20:21:46 +03:00
/* We don't need to include pci.h or usb.h here */
struct pci_dev ;
struct usb_device ;
2016-02-05 18:16:18 +03:00
# ifdef CONFIG_MEDIA_CONTROLLER
2016-02-05 12:02:43 +03:00
/**
* v4l2_mc_create_media_graph ( ) - create Media Controller links at the graph .
*
* @ mdev : pointer to the & media_device struct .
*
* Add links between the entities commonly found on PC customer ' s hardware at
* the V4L2 side : camera sensors , audio and video PLL - IF decoders , tuners ,
* analog TV decoder and I / O entities ( video , VBI and Software Defined Radio ) .
* NOTE : webcams are modelled on a very simple way : the sensor is
* connected directly to the I / O entity . All dirty details , like
* scaler and crop HW are hidden . While such mapping is enough for v4l2
* interface centric PC - consumer ' s hardware , V4L2 subdev centric camera
* hardware should not use this routine , as it will not build the right graph .
*/
int v4l2_mc_create_media_graph ( struct media_device * mdev ) ;
2016-02-05 18:16:18 +03:00
2016-02-05 12:02:43 +03:00
# else
static inline int v4l2_mc_create_media_graph ( struct media_device * mdev )
{
return 0 ;
}
2016-02-05 18:16:18 +03:00
2016-02-05 12:02:43 +03:00
# endif
2016-02-12 12:35:44 +03:00
# endif