On Friday 28 August 2009 02:16:47 [email protected] wrote:
> From: Santiago Nunez-Corrales <[email protected]>
> 
> This patch provides required std and control definitions in TVP7002
> within v4l2.

Is this supposed to be merged into the mainline kernel? Or is this for a
non-mainline tree only?

If you want to get it merged in the mainline, then you should be aware that
there will be a new API for HD resolutions. I hope to have a good proposal
available for discussion during the Linux Plumbers Conference in September.

We are definitely not going to extend v4l2_std_id. That will be frozen for
use with PAL/SECAM/NTSC formats only.

Note that I also have serious doubts about the usefulness of the decoder
controls. Is anyone actually interested in setting those?

It will be another topic for discussion during that conference: how to give
applications access to these low-level controls and whether we even want that.

Regards,

        Hans

> 
> Signed-off-by: Santiago Nunez-Corrales <[email protected]>
> ---
>  include/linux/videodev2.h       |   87 +++++++++++++++++++++++++++++++++++++-
>  include/media/v4l2-chip-ident.h |    3 +
>  2 files changed, 87 insertions(+), 3 deletions(-)
> 
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index 74f1687..5a735be 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -704,11 +704,66 @@ typedef __u64 v4l2_std_id;
>                                V4L2_STD_PAL_Nc        |\
>                                V4L2_STD_SECAM)
>  #define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
> -                              V4L2_STD_ATSC_16_VSB)
> +                                                              
> V4L2_STD_ATSC_16_VSB)
>  
> +/* Frequency for HD (i.e. 60 vs 50) */
> +#define V4L2_STD_HDTV_50     ((v4l2_std_id)0x04000000)
> +#define V4L2_STD_HDTV_60     ((v4l2_std_id)0x00000000)
> +
> +/* interlaced vs progressive for HD */
> +#define V4L2_STD_HDTV_I              ((v4l2_std_id)0x08000000)
> +#define V4L2_STD_HDTV_P              ((v4l2_std_id)0x00000000)
> +
> +/* 720 vs 1080 HD modes */
> +#define V4L2_STD_HDTV_720    ((v4l2_std_id)0x08000000)
> +#define V4L2_STD_HDTV_1080   ((v4l2_std_id)0x10000000)
> +
> +/* FIXME:
> + * 
> + * Definitions equal to zero are listed for clarity. In general,
> + * definitions of standards should be improved by using bits to
> + * denote properties, not specific standards and forcing the use
> + * of unnatural combinatorics tricks. Otherwise, as such is the
> + * current case, the descriptor bit space gets exhausted very
> + * rapidly.
> + */
> +
> +/* some standards for SDTV and HDTV */
> +#define V4L2_STD_480P_60     (V4L2_STD_525_60        |\
> +                              V4L2_STD_HDTV_P)
> +#define V4L2_STD_480I_60     (V4L2_STD_525_60        |\
> +                              V4L2_STD_HDTV_I)
> +#define V4L2_STD_576P_50     (V4L2_STD_625_50        |\
> +                              V4L2_STD_HDTV_P)
> +#define V4L2_STD_576I_50     (V4L2_STD_625_50        |\
> +                              V4L2_STD_HDTV_I)
> +#define V4L2_STD_720P_50     (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_50       |\
> +                              V4L2_STD_HDTV_P        |\
> +                              V4L2_STD_HDTV_720)
> +#define V4L2_STD_720P_60     (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_60       |\
> +                              V4L2_STD_HDTV_P        |\
> +                              V4L2_STD_HDTV_720)
> +#define V4L2_STD_1080I_50    (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_50       |\
> +                              V4L2_STD_HDTV_I        |\
> +                              V4L2_STD_HDTV_1080)
> +#define V4L2_STD_1080I_60    (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_60       |\
> +                              V4L2_STD_HDTV_I        |\
> +                              V4L2_STD_HDTV_1080)
> +#define V4L2_STD_1080P_50    (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_50       |\
> +                              V4L2_STD_HDTV_P        |\
> +                              V4L2_STD_HDTV_1080)
> +#define V4L2_STD_1080P_60    (V4L2_STD_ATSC          |\
> +                              V4L2_STD_HDTV_60       |\
> +                              V4L2_STD_HDTV_P        |\
> +                              V4L2_STD_HDTV_1080)
> +
> +                             
>  #define V4L2_STD_UNKNOWN        0
> -#define V4L2_STD_ALL            (V4L2_STD_525_60     |\
> -                              V4L2_STD_625_50)
>  
>  struct v4l2_standard {
>       __u32                index;
> @@ -808,6 +863,7 @@ struct v4l2_ext_controls {
>  #define V4L2_CTRL_CLASS_USER 0x00980000      /* Old-style 'user' controls */
>  #define V4L2_CTRL_CLASS_MPEG 0x00990000      /* MPEG-compression controls */
>  #define V4L2_CTRL_CLASS_CAMERA 0x009a0000    /* Camera class controls */
> +#define V4L2_CTRL_CLASS_DECODER 0x009c0000   /* Decoder class controls */
>  
>  #define V4L2_CTRL_ID_MASK              (0x0fffffff)
>  #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
> @@ -1147,6 +1203,31 @@ enum  v4l2_exposure_auto_type {
>  
>  #define V4L2_CID_PRIVACY                     (V4L2_CID_CAMERA_CLASS_BASE+16)
>  
> +
> +/* tvp7002 control IDs*/
> +#define V4L2_CID_TVP7002_BASE                        V4L2_CTRL_CLASS_DECODER
> +#define V4L2_CID_TVP7002_COARSE_GAIN_R               (V4L2_CID_TVP7002_BASE 
> + 1)
> +#define V4L2_CID_TVP7002_COARSE_GAIN_G               (V4L2_CID_TVP7002_BASE 
> + 2)
> +#define V4L2_CID_TVP7002_COARSE_GAIN_B               (V4L2_CID_TVP7002_BASE 
> + 3)
> +#define V4L2_CID_TVP7002_FINE_GAIN_R         (V4L2_CID_TVP7002_BASE + 4)
> +#define V4L2_CID_TVP7002_FINE_GAIN_G         (V4L2_CID_TVP7002_BASE + 5)
> +#define V4L2_CID_TVP7002_FINE_GAIN_B         (V4L2_CID_TVP7002_BASE + 6)
> +#define V4L2_CID_TVP7002_B_CLAMP             (V4L2_CID_TVP7002_BASE + 7)
> +#define V4L2_CID_TVP7002_G_CLAMP             (V4L2_CID_TVP7002_BASE + 8)
> +#define V4L2_CID_TVP7002_R_CLAMP             (V4L2_CID_TVP7002_BASE + 9)
> +#define V4L2_CID_TVP7002_CLAMP_OFF_EN                (V4L2_CID_TVP7002_BASE 
> + 10)
> +#define V4L2_CID_TVP7002_FCTCA                       (V4L2_CID_PRIVATE_BASE 
> + 11)
> +#define V4L2_CID_TVP7002_F_CLAMP_GB          (V4L2_CID_TVP7002_BASE + 12)
> +#define V4L2_CID_TVP7002_F_CLAMP_R           (V4L2_CID_TVP7002_BASE + 13)
> +#define V4L2_CID_TVP7002_CLAMP_START         (V4L2_CID_TVP7002_BASE + 14)
> +#define V4L2_CID_TVP7002_CLAMP_W             (V4L2_CID_TVP7002_BASE + 15)
> +#define V4L2_CID_TVP7002_B_COARSE_OFF                (V4L2_CID_TVP7002_BASE 
> + 16)
> +#define V4L2_CID_TVP7002_G_COARSE_OFF                (V4L2_CID_TVP7002_BASE 
> + 17)
> +#define V4L2_CID_TVP7002_R_COARSE_OFF                (V4L2_CID_TVP7002_BASE 
> + 18)
> +#define V4L2_CID_TVP7002_B_FINE_OFF          (V4L2_CID_TVP7002_BASE + 19)
> +#define V4L2_CID_TVP7002_G_FINE_OFF          (V4L2_CID_TVP7002_BASE + 20)
> +#define V4L2_CID_TVP7002_R_FINE_OFF          (V4L2_CID_TVP7002_BASE + 21)
> +
>  /*
>   *   T U N I N G
>   */
> diff --git a/include/media/v4l2-chip-ident.h b/include/media/v4l2-chip-ident.h
> index 94e908c..b8c86d9 100644
> --- a/include/media/v4l2-chip-ident.h
> +++ b/include/media/v4l2-chip-ident.h
> @@ -129,6 +129,9 @@ enum {
>       V4L2_IDENT_SAA6752HS = 6752,
>       V4L2_IDENT_SAA6752HS_AC3 = 6753,
>  
> +     /* module tvp7002: just ident 7002 */
> +     V4L2_IDENT_TVP7002 = 7002,
> +
>       /* module adv7170: just ident 7170 */
>       V4L2_IDENT_ADV7170 = 7170,
>  



-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to