| Index: drivers/media/video/samsung/tv20/s5p_tv.h
|
| diff --git a/drivers/media/video/samsung/tv20/s5p_tv.h b/drivers/media/video/samsung/tv20/s5p_tv.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..feeb01aa87ee8ec208a6fd3beb85c684065c6e89
|
| --- /dev/null
|
| +++ b/drivers/media/video/samsung/tv20/s5p_tv.h
|
| @@ -0,0 +1,1024 @@
|
| +/* linux/drivers/media/video/samsung/tv20/s5p_tv.h
|
| +*
|
| +* Copyright (c) 2010 Samsung Electronics Co., Ltd.
|
| +* http://www.samsung.com/
|
| +*
|
| +* S5PV210 - TV out driver header file for Samsung TVOut driver
|
| +*
|
| +* This program is free software; you can redistribute it and/or modify
|
| +* it under the terms of the GNU General Public License version 2 as
|
| +* published by the Free Software Foundation.
|
| +*/
|
| +
|
| +#include <linux/fs.h>
|
| +#include <linux/interrupt.h>
|
| +#include <linux/videodev2.h>
|
| +#include <linux/platform_device.h>
|
| +#include <linux/fb.h>
|
| +
|
| +#include "tv_out_s5pv210.h"
|
| +
|
| +/* #define CONFIG_TVOUT_DBG */
|
| +
|
| +#define V4L2_STD_ALL_HD ((v4l2_std_id)0xffffffff)
|
| +
|
| +#define TVOUT_MINOR_TVOUT 14 /* TVOUT VIDEO OUT */
|
| +#define TVOUT_MINOR_VID 21 /* VIDEO OVERLAY */
|
| +
|
| +#define USE_VMIXER_INTERRUPT 1
|
| +
|
| +#define AVI_RGB_IF (0x0<<5)
|
| +#define AVI_YCBCR444_IF (0x2<<5)
|
| +
|
| +#define AVI_ITU601 (0x1<<6)
|
| +#define AVI_ITU709 (0x2<<6)
|
| +
|
| +#define AVI_PAR_4_3 (0x1<<4)
|
| +#define AVI_PAR_16_9 (0x2<<4)
|
| +
|
| +#define AVI_NO_PIXEL_REPEAT (0x0<<0)
|
| +
|
| +/* The below definition is for V4L2 Tile NV12 color format */
|
| +#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2')
|
| +
|
| +#define AVI_VIC_2 (2<<0) /* 720x480p@59.94/60Hz 4:3 */
|
| +#define AVI_VIC_3 (3<<0) /* 720x480p@59.94/60Hz 16:9 */
|
| +#define AVI_VIC_4 (4<<0) /* 1280x720p@59.94/60Hz 16:9 */
|
| +#define AVI_VIC_5 (5<<0) /* 1920x1080i@59.94/60Hz 16:9 */
|
| +#define AVI_VIC_16 (16<<0) /* 1920x1080p@60Hz 16:9 */
|
| +#define AVI_VIC_17 (17<<0) /* 720x576p@50Hz 4:3 */
|
| +#define AVI_VIC_18 (18<<0) /* 720x576p@50Hz 16:9 */
|
| +#define AVI_VIC_19 (19<<0) /* 1280x720p@50Hz 16:9 */
|
| +#define AVI_VIC_20 (20<<0) /* 1920x1080i@50Hz 16:9 */
|
| +#define AVI_VIC_31 (31<<0) /* 1920x1080p@50Hz */
|
| +#define AVI_VIC_34 (34<<0) /* 1920x1080p@30Hz */
|
| +
|
| +#define VP_UPDATE_RETRY_MAXIMUM 30
|
| +#define VP_WAIT_UPDATE_SLEEP 3
|
| +
|
| +struct tvout_output_if {
|
| + enum s5p_tv_disp_mode disp_mode;
|
| + enum s5p_tv_o_mode out_mode;
|
| +};
|
| +
|
| +struct s5p_img_size {
|
| + u32 img_width;
|
| + u32 img_height;
|
| +};
|
| +
|
| +struct s5p_img_offset {
|
| + u32 offset_x;
|
| + u32 offset_y;
|
| +};
|
| +
|
| +/*
|
| +* Video Layer Data
|
| +*/
|
| +struct s5p_video_img_address {
|
| + u32 y_address;
|
| + u32 c_address;
|
| +};
|
| +
|
| +struct s5p_vl_mode {
|
| + bool line_skip;
|
| + enum s5p_vp_mem_mode mem_mode;
|
| + enum s5p_vp_chroma_expansion chroma_exp;
|
| + enum s5p_vp_filed_id_toggle toggle_id;
|
| +};
|
| +
|
| +struct s5p_vl_sharpness {
|
| + u32 th_noise;
|
| + enum s5p_vp_sharpness_control sharpness;
|
| +};
|
| +
|
| +struct s5p_vl_csc_ctrl {
|
| + bool sub_y_offset_en;
|
| + bool csc_en;
|
| +};
|
| +
|
| +struct s5p_video_poly_filter_coef {
|
| + enum s5p_vp_poly_coeff poly_coeff;
|
| + signed char ch0;
|
| + signed char ch1;
|
| + signed char ch2;
|
| + signed char ch3;
|
| +};
|
| +
|
| +struct s5p_vl_bright_contrast_ctrl {
|
| + enum s5p_vp_line_eq eq_num;
|
| + u32 intc;
|
| + u32 slope;
|
| +};
|
| +
|
| +struct s5p_video_csc_coef {
|
| + enum s5p_vp_csc_coeff csc_coeff;
|
| + u32 coeff;
|
| +};
|
| +
|
| +struct s5p_vl_param {
|
| + bool win_blending;
|
| + u32 alpha;
|
| + u32 priority;
|
| + u32 top_y_address;
|
| + u32 top_c_address;
|
| + enum s5p_endian_type src_img_endian;
|
| + u32 img_width;
|
| + u32 img_height;
|
| + u32 src_offset_x;
|
| + u32 src_offset_y;
|
| + u32 src_width;
|
| + u32 src_height;
|
| + u32 dest_offset_x;
|
| + u32 dest_offset_y;
|
| + u32 dest_width;
|
| + u32 dest_height;
|
| +};
|
| +
|
| +/*
|
| +* GRP Layer Data
|
| +*/
|
| +struct s5p_tv_vo {
|
| + u32 index;
|
| + struct v4l2_framebuffer fb;
|
| + struct v4l2_window win;
|
| + struct v4l2_rect dst_rect;
|
| + bool win_blending;
|
| + bool blank_change;
|
| + bool pixel_blending;
|
| + bool pre_mul;
|
| + u32 blank_color;
|
| + u32 priority;
|
| + u32 base_addr;
|
| +};
|
| +
|
| +/*
|
| +*BG Layer Data
|
| +*/
|
| +struct s5p_bg_dither {
|
| + bool cr_dither_en;
|
| + bool cb_dither_en;
|
| + bool y_dither_en;
|
| +};
|
| +
|
| +struct s5p_bg_color {
|
| + u32 color_y;
|
| + u32 color_cb;
|
| + u32 color_cr;
|
| +};
|
| +
|
| +/*
|
| +* Video Mixer Data
|
| +*/
|
| +struct s5p_vm_csc_coef {
|
| + enum s5p_yuv_fmt_component component;
|
| + enum s5p_tv_coef_y_mode mode;
|
| + u32 coeff_0;
|
| + u32 coeff_1;
|
| + u32 coeff_2;
|
| +};
|
| +
|
| +/*
|
| +* SDout Data
|
| +*/
|
| +struct s5p_sdout_order {
|
| + enum s5p_sd_order order;
|
| + bool dac[3];
|
| +};
|
| +
|
| +struct s5p_sd_vscale_cfg {
|
| + enum s5p_sd_level component_level;
|
| + enum s5p_sd_vsync_ratio component_ratio;
|
| + enum s5p_sd_level composite_level;
|
| + enum s5p_sd_vsync_ratio composite_ratio;
|
| +};
|
| +
|
| +struct s5p_sd_vbi {
|
| + bool wss_cvbs;
|
| + enum s5p_sd_closed_caption_type caption_cvbs;
|
| + bool wss_y_svideo;
|
| + enum s5p_sd_closed_caption_type caption_y_svideo;
|
| + bool cgmsa_rgb;
|
| + bool wss_rgb;
|
| + enum s5p_sd_closed_caption_type caption_rgb;
|
| + bool cgmsa_y_pb_pr;
|
| + bool wss_y_pb_pr;
|
| + enum s5p_sd_closed_caption_type caption_y_pb_pr;
|
| +};
|
| +
|
| +struct s5p_sd_offset_gain {
|
| + enum s5p_sd_channel_sel channel;
|
| + u32 offset;
|
| + u32 gain;
|
| +};
|
| +
|
| +struct s5p_sd_delay {
|
| + u32 delay_y;
|
| + u32 offset_video_start;
|
| + u32 offset_video_end;
|
| +};
|
| +
|
| +struct s5p_sd_bright_hue_saturat {
|
| + bool bright_hue_sat_adj;
|
| + u32 gain_brightness;
|
| + u32 offset_brightness;
|
| + u32 gain0_cb_hue_saturation;
|
| + u32 gain1_cb_hue_saturation;
|
| + u32 gain0_cr_hue_saturation;
|
| + u32 gain1_cr_hue_saturation;
|
| + u32 offset_cb_hue_saturation;
|
| + u32 offset_cr_hue_saturation;
|
| +};
|
| +
|
| +struct s5p_sd_rgb_compensat {
|
| + bool rgb_color_compensation;
|
| + u32 max_rgb_cube;
|
| + u32 min_rgb_cube;
|
| +};
|
| +
|
| +struct s5p_sd_cvbs_compensat {
|
| + bool cvbs_color_compensation;
|
| + u32 y_lower_mid;
|
| + u32 y_bottom;
|
| + u32 y_top;
|
| + u32 y_upper_mid;
|
| + u32 radius;
|
| +};
|
| +
|
| +struct s5p_sd_svideo_compensat {
|
| + bool y_color_compensation;
|
| + u32 y_top;
|
| + u32 y_bottom;
|
| + u32 yc_cylinder;
|
| +};
|
| +
|
| +struct s5p_sd_component_porch {
|
| + u32 back_525;
|
| + u32 front_525;
|
| + u32 back_625;
|
| + u32 front_625;
|
| +};
|
| +
|
| +struct s5p_sd_vesa_rgb_sync {
|
| + enum s5p_sd_vesa_rgb_sync_type sync_type;
|
| + enum s5p_tv_active_polarity vsync_active;
|
| + enum s5p_tv_active_polarity hsync_active;
|
| +};
|
| +
|
| +struct s5p_sd_ch_xtalk_cancellat_coeff {
|
| + enum s5p_sd_channel_sel channel;
|
| + u32 coeff1;
|
| + u32 coeff2;
|
| +};
|
| +
|
| +struct s5p_sd_closed_caption {
|
| + u32 display_cc;
|
| + u32 nondisplay_cc;
|
| +};
|
| +
|
| +struct s5p_sd_525_data {
|
| + bool analog_on;
|
| + enum s5p_sd_525_copy_permit copy_permit;
|
| + enum s5p_sd_525_mv_psp mv_psp;
|
| + enum s5p_sd_525_copy_info copy_info;
|
| + enum s5p_sd_525_aspect_ratio display_ratio;
|
| +};
|
| +
|
| +struct s5p_sd_625_data {
|
| + bool surroun_f_sound;
|
| + bool copyright;
|
| + bool copy_protection;
|
| + bool text_subtitles;
|
| + enum s5p_sd_625_subtitles open_subtitles;
|
| + enum s5p_sd_625_camera_film camera_film;
|
| + enum s5p_sd_625_color_encoding color_encoding;
|
| + bool helper_signal;
|
| + enum s5p_sd_625_aspect_ratio display_ratio;
|
| +};
|
| +
|
| +/*
|
| +* HDMI video Data
|
| +*/
|
| +struct s5p_hdmi_bluescreen {
|
| + bool enable;
|
| + u8 cb_b;
|
| + u8 y_g;
|
| + u8 cr_r;
|
| +};
|
| +
|
| +struct s5p_hdmi_color_range {
|
| + u8 y_min;
|
| + u8 y_max;
|
| + u8 c_min;
|
| + u8 c_max;
|
| +};
|
| +
|
| +struct s5p_hdmi_video_infoframe {
|
| + enum s5p_hdmi_transmit trans_type;
|
| + u8 check_sum;
|
| + u8 *data;
|
| +};
|
| +
|
| +struct s5p_hdmi_tg_cmd {
|
| + bool timing_correction_en;
|
| + bool bt656_sync_en;
|
| + bool tg_en;
|
| +};
|
| +
|
| +struct s5p_hdmi_spd_infoframe {
|
| + enum s5p_hdmi_transmit trans_type;
|
| + u8 *spd_header;
|
| + u8 *spd_data;
|
| +};
|
| +
|
| +/*
|
| +* TVout API Data
|
| +*/
|
| +struct s5p_tv_v4l2 {
|
| + struct v4l2_output *output;
|
| + struct v4l2_standard *std;
|
| + struct v4l2_format *fmt_v;
|
| + struct v4l2_format *fmt_vo_0;
|
| + struct v4l2_format *fmt_vo_1;
|
| +};
|
| +
|
| +#define S5PTVFB_AVALUE(r, g, b) \
|
| + (((r & 0xf) << 8) | ((g & 0xf) << 4) | ((b & 0xf) << 0))
|
| +#define S5PTVFB_CHROMA(r, g, b) \
|
| + (((r & 0xff) << 16) | ((g & 0xff) << 8) | ((b & 0xff) << 0))
|
| +
|
| +#define S5PTVFB_WIN_POSITION \
|
| + _IOW('F', 213, struct s5ptvfb_user_window)
|
| +#define S5PTVFB_WIN_SET_PLANE_ALPHA \
|
| + _IOW('F', 214, struct s5ptvfb_user_plane_alpha)
|
| +#define S5PTVFB_WIN_SET_CHROMA \
|
| + _IOW('F', 215, struct s5ptvfb_user_chroma)
|
| +#define S5PTVFB_WAITFORVSYNC \
|
| + _IO('F', 32)
|
| +#define S5PTVFB_SET_VSYNC_INT \
|
| + _IOW('F', 216, u32)
|
| +#define S5PTVFB_POWER_OFF \
|
| + _IOW('F', 217, u32)
|
| +#define S5PTVFB_POWER_ON \
|
| + _IOW('F', 218, u32)
|
| +#define S5PTVFB_WIN_SET_ADDR \
|
| + _IOW('F', 219, u32)
|
| +#define S5PTVFB_SET_WIN_ON \
|
| + _IOW('F', 220, u32)
|
| +#define S5PTVFB_SET_WIN_OFF \
|
| + _IOW('F', 221, u32)
|
| +
|
| +enum s5ptvfb_data_path_t {
|
| + DATA_PATH_FIFO = 0,
|
| + DATA_PATH_DMA = 1,
|
| +};
|
| +
|
| +enum s5ptvfb_alpha_t {
|
| + PLANE_BLENDING,
|
| + PIXEL_BLENDING,
|
| +};
|
| +
|
| +enum s5ptvfb_chroma_dir_t {
|
| + CHROMA_FG,
|
| + CHROMA_BG,
|
| +};
|
| +
|
| +struct s5ptvfb_alpha {
|
| + enum s5ptvfb_alpha_t mode;
|
| + int channel;
|
| + unsigned int value;
|
| +};
|
| +
|
| +struct s5ptvfb_chroma {
|
| + int enabled;
|
| + int blended;
|
| + unsigned int key;
|
| + unsigned int comp_key;
|
| + unsigned int alpha;
|
| + enum s5ptvfb_chroma_dir_t dir;
|
| +};
|
| +
|
| +struct s5ptvfb_user_window {
|
| + int x;
|
| + int y;
|
| +};
|
| +
|
| +struct s5ptvfb_user_plane_alpha {
|
| + int channel;
|
| + unsigned char red;
|
| + unsigned char green;
|
| + unsigned char blue;
|
| +};
|
| +
|
| +struct s5ptvfb_user_chroma {
|
| + int enabled;
|
| + unsigned char red;
|
| + unsigned char green;
|
| + unsigned char blue;
|
| +};
|
| +
|
| +struct s5ptvfb_window {
|
| + int id;
|
| + int enabled;
|
| + atomic_t in_use;
|
| + int x;
|
| + int y;
|
| + enum s5ptvfb_data_path_t path;
|
| + int local_channel;
|
| + int dma_burst;
|
| + unsigned int pseudo_pal[16];
|
| + struct s5ptvfb_alpha alpha;
|
| + struct s5ptvfb_chroma chroma;
|
| + int (*suspend_fifo)(void);
|
| + int (*resume_fifo)(void);
|
| +};
|
| +
|
| +struct s5ptvfb_lcd_timing {
|
| + int h_fp;
|
| + int h_bp;
|
| + int h_sw;
|
| + int v_fp;
|
| + int v_fpe;
|
| + int v_bp;
|
| + int v_bpe;
|
| + int v_sw;
|
| +};
|
| +
|
| +struct s5ptvfb_lcd_polarity {
|
| + int rise_vclk;
|
| + int inv_hsync;
|
| + int inv_vsync;
|
| + int inv_vden;
|
| +};
|
| +
|
| +struct s5ptvfb_lcd {
|
| + int width;
|
| + int height;
|
| + int bpp;
|
| + int freq;
|
| + struct s5ptvfb_lcd_timing timing;
|
| + struct s5ptvfb_lcd_polarity polarity;
|
| +
|
| + void (*init_ldi)(void);
|
| +};
|
| +
|
| +struct s5p_tv_status {
|
| + /* TVOUT_SET_INTERFACE_PARAM */
|
| + bool tvout_param_available;
|
| + struct tvout_output_if tvout_param;
|
| +
|
| + /* TVOUT_SET_OUTPUT_ENABLE/DISABLE */
|
| + bool tvout_output_enable;
|
| +
|
| + /* TVOUT_SET_LAYER_MODE/POSITION */
|
| + bool vl_mode;
|
| + bool grp_mode[2];
|
| +
|
| + /* Video Layer Parameters */
|
| + struct s5p_vl_param vl_basic_param;
|
| + struct s5p_vl_mode vl_op_mode;
|
| + struct s5p_vl_sharpness vl_sharpness;
|
| + struct s5p_vl_csc_ctrl vl_csc_control;
|
| + struct s5p_vl_bright_contrast_ctrl vl_bc_control[8];
|
| +
|
| + enum s5p_vp_src_color src_color;
|
| + enum s5p_vp_field field_id;
|
| + enum s5p_vp_pxl_rate vl_rate;
|
| + enum s5p_vp_csc_type vl_csc_type;
|
| +
|
| + u32 vl_top_y_address;
|
| + u32 vl_top_c_address;
|
| + u32 vl_bottom_y_address;
|
| + u32 vl_bottom_c_address;
|
| + u32 vl_src_offset_x;
|
| + u32 vl_src_x_fact_step;
|
| + u32 vl_src_offset_y;
|
| + u32 vl_src_width;
|
| + u32 vl_src_height;
|
| + u32 vl_dest_offset_x;
|
| + u32 vl_dest_offset_y;
|
| + u32 vl_dest_width;
|
| + u32 vl_dest_height;
|
| + bool vl2d_ipc;
|
| +
|
| + bool vl_poly_filter_default;
|
| + bool vl_bypass_post_process;
|
| + u32 vl_saturation;
|
| + bool us_vl_brightness;
|
| + u8 vl_contrast;
|
| + u32 vl_bright_offset;
|
| + bool vl_csc_coef_default;
|
| +
|
| + /* GRP Layer Common Parameters */
|
| + enum s5p_vmx_burst_mode grp_burst;
|
| + enum s5p_endian_type grp_endian;
|
| +
|
| + /* BackGroung Layer Parameters */
|
| + struct s5p_bg_dither bg_dither;
|
| + struct s5p_bg_color bg_color[3];
|
| +
|
| + /* Video Mixer Parameters */
|
| + bool vm_csc_coeff_default;
|
| +
|
| + /* SDout Parameters */
|
| + struct s5p_sd_vscale_cfg sdout_video_scale_cfg;
|
| + struct s5p_sd_vbi sdout_vbi;
|
| + struct s5p_sd_offset_gain sdout_offset_gain[3];
|
| + struct s5p_sd_delay sdout_delay;
|
| + struct s5p_sd_bright_hue_saturat sdout_bri_hue_set;
|
| + struct s5p_sd_rgb_compensat sdout_rgb_compen;
|
| + struct s5p_sd_cvbs_compensat sdout_cvbs_compen;
|
| + struct s5p_sd_svideo_compensat sdout_svideo_compen;
|
| + struct s5p_sd_component_porch sdout_comp_porch;
|
| + struct s5p_sd_vesa_rgb_sync sdout_rgb_sync;
|
| + struct s5p_sd_ch_xtalk_cancellat_coeff sdout_xtalk_cc[3];
|
| + struct s5p_sd_closed_caption sdout_closed_capt;
|
| + struct s5p_sd_525_data sdout_wss_525;
|
| + struct s5p_sd_625_data sdout_wss_625;
|
| + struct s5p_sd_525_data sdout_cgms_525;
|
| + struct s5p_sd_625_data sdout_cgms_625;
|
| +
|
| + enum s5p_sd_order sdout_order;
|
| + enum s5p_sd_sync_sig_pin sdout_sync_pin;
|
| +
|
| + bool sdout_color_sub_carrier_phase_adj;
|
| + bool sdout_dac_on[3];
|
| + bool sdout_y_pb_pr_comp;
|
| +
|
| + /* HDMI video parameters */
|
| + struct s5p_hdmi_bluescreen hdmi_video_blue_screen;
|
| + struct s5p_hdmi_color_range hdmi_color_range;
|
| + struct s5p_hdmi_video_infoframe hdmi_av_info_frame;
|
| + struct s5p_hdmi_video_infoframe hdmi_mpg_info_frame;
|
| + struct s5p_hdmi_tg_cmd hdmi_tg_cmd;
|
| + u8 avi_byte[13];
|
| + u8 mpg_byte[5];
|
| +
|
| + /* HDMI parameters */
|
| + struct s5p_hdmi_spd_infoframe hdmi_spd_info_frame;
|
| + u8 spd_header[3];
|
| + u8 spd_data[28];
|
| + bool hdcp_en;
|
| + enum s5p_hdmi_audio_type hdmi_audio_type;
|
| + bool hpd_status;
|
| +
|
| + /* TVOUT_SET_LAYER_ENABLE/DISABLE */
|
| + bool vp_layer_enable;
|
| + bool grp_layer_enable[2];
|
| +
|
| + /* i2c for hdcp port */
|
| +
|
| + struct i2c_client *hdcp_i2c_client;
|
| +
|
| + struct s5p_tv_vo overlay[2];
|
| +
|
| + struct video_device *video_dev[3];
|
| +
|
| + struct clk *tvenc_clk;
|
| + struct clk *vp_clk;
|
| + struct clk *mixer_clk;
|
| + struct clk *hdmi_clk;
|
| + struct clk *i2c_phy_clk;
|
| + struct clk *sclk_tv;
|
| + struct clk *sclk_hdmi;
|
| + struct clk *sclk_mixer;
|
| +
|
| + struct s5p_tv_v4l2 v4l2;
|
| +
|
| + struct s5ptvfb_window win;
|
| + struct fb_info *fb;
|
| + struct device *dev_fb;
|
| +
|
| + struct s5ptvfb_lcd *lcd;
|
| + struct mutex fb_lock;
|
| +};
|
| +
|
| +/* Interrupt for Vsync */
|
| +extern wait_queue_head_t s5ptv_wq;
|
| +
|
| +/* F R A M E B U F F E R */
|
| +#define S5PTVFB_NAME "s5ptvfb"
|
| +
|
| +/*
|
| +* V4L2 TVOUT EXTENSIONS
|
| +*
|
| +*/
|
| +/* Input */
|
| +#define V4L2_INPUT_TYPE_MSDMA 3
|
| +#define V4L2_INPUT_TYPE_FIFO 4
|
| +
|
| +/* Output */
|
| +#define V4L2_OUTPUT_TYPE_MSDMA 4
|
| +#define V4L2_OUTPUT_TYPE_COMPOSITE 5
|
| +#define V4L2_OUTPUT_TYPE_SVIDEO 6
|
| +#define V4L2_OUTPUT_TYPE_YPBPR_INERLACED 7
|
| +#define V4L2_OUTPUT_TYPE_YPBPR_PROGRESSIVE 8
|
| +#define V4L2_OUTPUT_TYPE_RGB_PROGRESSIVE 9
|
| +#define V4L2_OUTPUT_TYPE_DIGITAL 10
|
| +#define V4L2_OUTPUT_TYPE_HDMI V4L2_OUTPUT_TYPE_DIGITAL
|
| +#define V4L2_OUTPUT_TYPE_HDMI_RGB 11
|
| +#define V4L2_OUTPUT_TYPE_DVI 12
|
| +
|
| +/* STD */
|
| +#define V4L2_STD_PAL_BDGHI (V4L2_STD_PAL_B| \
|
| + V4L2_STD_PAL_D| \
|
| + V4L2_STD_PAL_G| \
|
| + V4L2_STD_PAL_H| \
|
| + V4L2_STD_PAL_I)
|
| +
|
| +#define V4L2_STD_480P_60_16_9 ((v4l2_std_id)0x04000000)
|
| +#define V4L2_STD_480P_60_4_3 ((v4l2_std_id)0x05000000)
|
| +#define V4L2_STD_576P_50_16_9 ((v4l2_std_id)0x06000000)
|
| +#define V4L2_STD_576P_50_4_3 ((v4l2_std_id)0x07000000)
|
| +#define V4L2_STD_720P_60 ((v4l2_std_id)0x08000000)
|
| +#define V4L2_STD_720P_50 ((v4l2_std_id)0x09000000)
|
| +#define V4L2_STD_1080P_60 ((v4l2_std_id)0x0a000000)
|
| +#define V4L2_STD_1080P_50 ((v4l2_std_id)0x0b000000)
|
| +#define V4L2_STD_1080I_60 ((v4l2_std_id)0x0c000000)
|
| +#define V4L2_STD_1080I_50 ((v4l2_std_id)0x0d000000)
|
| +#define V4L2_STD_480P_59 ((v4l2_std_id)0x0e000000)
|
| +#define V4L2_STD_720P_59 ((v4l2_std_id)0x0f000000)
|
| +#define V4L2_STD_1080I_59 ((v4l2_std_id)0x10000000)
|
| +#define V4L2_STD_1080P_59 ((v4l2_std_id)0x11000000)
|
| +#define V4L2_STD_1080P_30 ((v4l2_std_id)0x12000000)
|
| +
|
| +#define FORMAT_FLAGS_DITHER 0x01
|
| +#define FORMAT_FLAGS_PACKED 0x02
|
| +#define FORMAT_FLAGS_PLANAR 0x04
|
| +#define FORMAT_FLAGS_RAW 0x08
|
| +#define FORMAT_FLAGS_CrCb 0x10
|
| +
|
| +/* ext. param */
|
| +#define V4L2_FBUF_FLAG_PRE_MULTIPLY 0x0040
|
| +#define V4L2_FBUF_CAP_PRE_MULTIPLY 0x0080
|
| +
|
| +struct v4l2_window_s5p_tvout {
|
| + u32 capability;
|
| + u32 flags;
|
| + u32 priority;
|
| +
|
| + struct v4l2_window win;
|
| +};
|
| +
|
| +struct v4l2_pix_format_s5p_tvout {
|
| + void *base_y;
|
| + void *base_c;
|
| + bool src_img_endian;
|
| +
|
| + struct v4l2_pix_format pix_fmt;
|
| +};
|
| +
|
| +extern const struct v4l2_ioctl_ops s5p_tv_v4l2_v_ops;
|
| +extern const struct v4l2_ioctl_ops s5p_tv_v4l2_vo_ops;
|
| +extern const struct v4l2_ioctl_ops s5p_tv_v4l2_ops;
|
| +extern const struct v4l2_ioctl_ops s5p_tv_v4l2_vid_ops;
|
| +
|
| +extern struct s5p_tv_status s5ptv_status;
|
| +
|
| +extern void s5p_tv_v4l2_init_param(void);
|
| +
|
| +extern long s5p_tv_ioctl(struct file *file, u32 cmd, unsigned long arg);
|
| +extern long s5p_tv_vid_ioctl(struct file *file, u32 cmd, unsigned long arg);
|
| +extern long s5p_tv_v_ioctl(struct file *file, u32 cmd, unsigned long arg);
|
| +extern long s5p_tv_vo_ioctl(struct file *file, u32 cmd, unsigned long arg);
|
| +
|
| +/*
|
| + * STDA layer api - must be refine!!
|
| + *
|
| +*/
|
| +
|
| +int __init tv_hdmi_probe(
|
| + struct platform_device *pdev, u32 res_num, u32 res_num2);
|
| +int tv_hdmi_phy_power(bool on);
|
| +
|
| +int __init tv_sdout_probe(struct platform_device *pdev, u32 res_num);
|
| +int __init tv_mixer_probe(struct platform_device *pdev, u32 res_num);
|
| +int __init tv_vp_probe(struct platform_device *pdev, u32 res_num);
|
| +
|
| +int __init tv_hdmi_release(struct platform_device *pdev);
|
| +int __init tv_sdout_release(struct platform_device *pdev);
|
| +int __init tv_mixer_release(struct platform_device *pdev);
|
| +int __init tv_vp_release(struct platform_device *pdev);
|
| +
|
| +/* GRP */
|
| +extern bool tv_grp_api_proc(unsigned long arg, u32 cmd);
|
| +extern bool tv_grp_init_param(
|
| + enum s5p_tv_vmx_layer vm_layer, unsigned long p_buf_in);
|
| +extern bool tv_grp_start(enum s5p_tv_vmx_layer vmLayer);
|
| +extern bool tv_grp_stop(enum s5p_tv_vmx_layer vmLayer);
|
| +
|
| +/* TVOUT_IF */
|
| +extern bool tv_if_api_proc(unsigned long arg, u32 cmd);
|
| +extern bool tv_if_init_param(void);
|
| +extern bool tv_if_start(void);
|
| +extern bool tv_if_stop(void);
|
| +extern bool tv_if_set_disp(void);
|
| +
|
| +/* Video Layer */
|
| +extern bool tv_vlayer_set_blending(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_alpha(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_api_proc(unsigned long arg, u32 cmd);
|
| +extern bool tv_vlayer_init_param(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_priority(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_field_id(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_top_address(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_bottom_address(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_img_size(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_src_position(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_dest_position(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_src_size(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_dest_size(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_brightness(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_contrast(unsigned long p_buf_in);
|
| +extern void tv_vlayer_get_priority(unsigned long p_buf_out);
|
| +extern bool tv_vlayer_set_brightness_contrast_control(
|
| + unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_poly_filter_coef(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_set_csc_coef(unsigned long p_buf_in);
|
| +extern bool tv_vlayer_start(void);
|
| +extern bool tv_vlayer_stop(void);
|
| +
|
| +/*
|
| + * raw i/o ftn!!
|
| + *
|
| +*/
|
| +/* HDCP */
|
| +irqreturn_t tv_hdmi_irq(int irq, void *dev_id);
|
| +void tv_set_hpd_detection(u32 detection_type, bool hdcp_enabled,
|
| + struct i2c_client *client);
|
| +bool tv_start_hdcp(void);
|
| +bool tv_stop_hdcp(void);
|
| +void tv_hdcp_reset(void);
|
| +
|
| +/* HDMI */
|
| +void tv_hdmi_set_hpd_onoff(bool on_off);
|
| +void tv_hdmi_audio_set_config(enum s5p_tv_audio_codec_type audio_codec);
|
| +void tv_hdmi_audio_set_acr(u32 sample_rate);
|
| +void tv_hdmi_audio_set_asp(void);
|
| +void tv_hdmi_audio_clock_enable(void);
|
| +void tv_hdmi_audio_set_repetition_time(
|
| + enum s5p_tv_audio_codec_type audio_codec,
|
| + u32 bits, u32 frame_size_code);
|
| +void tv_hdmi_audio_irq_enable(u32 irq_en);
|
| +void tv_hdmi_audio_set_aui(enum s5p_tv_audio_codec_type audio_codec,
|
| + u32 sample_rate, u32 bits);
|
| +void tv_hdmi_video_set_bluescreen(bool en, u8 cb, u8 y_g, u8 cr_r);
|
| +enum s5p_tv_hdmi_err tv_hdmi_init_spd_infoframe(
|
| + enum s5p_hdmi_transmit trans_type,
|
| + u8 *spd_header, u8 *spd_data);
|
| +void tv_hdmi_init_hpd_onoff(bool on_off);
|
| +enum s5p_tv_hdmi_err tv_hdmi_audio_init(
|
| + enum s5p_tv_audio_codec_type audio_codec,
|
| + u32 sample_rate, u32 bits, u32 frame_size_code);
|
| +enum s5p_tv_hdmi_err tv_hdmi_video_init_display_mode(
|
| + enum s5p_tv_disp_mode disp_mode, enum s5p_tv_o_mode out_mode);
|
| +void tv_hdmi_video_init_bluescreen(bool en, u8 cb, u8 y_g, u8 cr_r);
|
| +void tv_hdmi_video_init_color_range(u8 y_min, u8 y_max,
|
| + u8 c_min, u8 c_max);
|
| +enum s5p_tv_hdmi_err tv_hdmi_video_init_csc(enum s5p_tv_hdmi_csc_type csc_type);
|
| +enum s5p_tv_hdmi_err tv_hdmi_video_init_avi_infoframe(
|
| + enum s5p_hdmi_transmit trans_type, u8 check_sum, u8 *pavi_data);
|
| +enum s5p_tv_hdmi_err tv_hdmi_video_init_mpg_infoframe(
|
| + enum s5p_hdmi_transmit trans_type, u8 check_sum, u8 *pmpg_data);
|
| +void tv_hdmi_video_init_tg_cmd(bool t_correction_en,
|
| + bool BT656_sync_en, bool tg_en);
|
| +bool tv_hdmi_start(enum s5p_hdmi_audio_type hdmi_audio_type,
|
| + bool HDCP_en, struct i2c_client *ddc_port);
|
| +void tv_hdmi_stop(void);
|
| +
|
| +/* SDOUT */
|
| +enum s5p_tv_sd_err tv_sdout_init_video_scale_cfg(
|
| + enum s5p_sd_level component_level,
|
| + enum s5p_sd_vsync_ratio component_ratio,
|
| + enum s5p_sd_level composite_level,
|
| + enum s5p_sd_vsync_ratio composite_ratio);
|
| +enum s5p_tv_sd_err tv_sdout_init_sync_signal_pin(enum s5p_sd_sync_sig_pin pin);
|
| +enum s5p_tv_sd_err tv_sdout_init_vbi(bool wss_cvbs,
|
| + enum s5p_sd_closed_caption_type caption_cvbs, bool wss_y_sideo,
|
| + enum s5p_sd_closed_caption_type caption_y_sideo, bool cgmsa_rgb,
|
| + bool wss_rgb, enum s5p_sd_closed_caption_type caption_rgb,
|
| + bool cgmsa_y_ppr, bool wss_y_ppr,
|
| + enum s5p_sd_closed_caption_type caption_y_ppr);
|
| +enum s5p_tv_sd_err tv_sdout_init_offset_gain(
|
| + enum s5p_sd_channel_sel channel, u32 offset, u32 gain);
|
| +void tv_sdout_init_delay(
|
| + u32 delay_y, u32 offset_video_start, u32 offset_video_end);
|
| +void tv_sdout_init_schlock(bool color_sucarrier_pha_adj);
|
| +enum s5p_tv_sd_err tv_sdout_init_dac_power_onoff(
|
| + enum s5p_sd_channel_sel channel, bool dac_on);
|
| +void tv_sdout_init_color_compensaton_onoff(bool bright_hue_saturation_adj,
|
| + bool y_ppr_color_compensation, bool rgb_color_compensation,
|
| + bool y_c_color_compensation, bool y_cvbs_color_compensation);
|
| +void tv_sdout_init_brightness_hue_saturation(u32 gain_brightness,
|
| + u32 offset_brightness, u32 gain0_cb_hue_saturation,
|
| + u32 gain1_cb_hue_saturation, u32 gain0_cr_hue_saturation,
|
| + u32 gain1_cr_hue_saturation, u32 offset_cb_hue_saturation,
|
| + u32 offset_cr_hue_saturation);
|
| +void tv_sdout_init_rgb_color_compensation(
|
| + u32 max_rgb_cube, u32 min_rgb_cube);
|
| +void tv_sdout_init_cvbs_color_compensation(u32 y_lower_mid, u32 y_bottom,
|
| + u32 y_top, u32 y_upper_mid, u32 radius);
|
| +void tv_sdout_init_svideo_color_compensation(u32 y_top, u32 y_bottom,
|
| + u32 y_c_cylinder);
|
| +void tv_sdout_init_component_porch(u32 back_525, u32 front_525,
|
| + u32 back_625, u32 front_625);
|
| +enum s5p_tv_sd_err tv_sdout_init_vesa_rgb_sync(
|
| + enum s5p_sd_vesa_rgb_sync_type sync_type,
|
| + enum s5p_tv_active_polarity v_sync_active,
|
| + enum s5p_tv_active_polarity h_sync_active);
|
| +void tv_sdout_init_oversampling_filter_coeff(
|
| + u32 size, u32 *pcoeff0, u32 *pcoeff1, u32 *pcoeff2);
|
| +enum s5p_tv_sd_err tv_sdout_init_ch_xtalk_cancel_coef(
|
| + enum s5p_sd_channel_sel channel, u32 coeff2, u32 coeff1);
|
| +void tv_sdout_init_closed_caption(u32 display_cc, u32 non_display_cc);
|
| +enum s5p_tv_sd_err tv_sdout_init_wss525_data(
|
| + enum s5p_sd_525_copy_permit copy_permit, enum s5p_sd_525_mv_psp mv_psp,
|
| + enum s5p_sd_525_copy_info copy_info, bool analog_on,
|
| + enum s5p_sd_525_aspect_ratio display_ratio);
|
| +enum s5p_tv_sd_err tv_sdout_init_wss625_data(bool surround_sound,
|
| + bool copyright, bool copy_protection, bool text_subtitles,
|
| + enum s5p_sd_625_subtitles open_subtitles,
|
| + enum s5p_sd_625_camera_film camera_film,
|
| + enum s5p_sd_625_color_encoding color_encoding, bool helper_signal,
|
| + enum s5p_sd_625_aspect_ratio display_ratio);
|
| +enum s5p_tv_sd_err tv_sdout_init_cgmsa525_data(
|
| + enum s5p_sd_525_copy_permit copy_permit, enum s5p_sd_525_mv_psp mv_psp,
|
| + enum s5p_sd_525_copy_info copy_info, bool analog_on,
|
| + enum s5p_sd_525_aspect_ratio display_ratio);
|
| +enum s5p_tv_sd_err tv_sdout_init_cgmsa625_data(bool surround_sound,
|
| + bool copyright, bool copy_protection, bool text_subtitles,
|
| + enum s5p_sd_625_subtitles open_subtitles,
|
| + enum s5p_sd_625_camera_film camera_film,
|
| + enum s5p_sd_625_color_encoding color_encoding, bool helper_signal,
|
| + enum s5p_sd_625_aspect_ratio display_ratio);
|
| +enum s5p_tv_sd_err tv_sdout_init_display_mode(enum s5p_tv_disp_mode disp_mode,
|
| + enum s5p_tv_o_mode out_mode, enum s5p_sd_order order);
|
| +void tv_sdout_start(void);
|
| +void tv_sdout_stop(void);
|
| +void tv_sdout_sw_reset(bool active);
|
| +void tv_sdout_set_interrupt_enable(bool vsync_intr_en);
|
| +void tv_sdout_clear_interrupt_pending(void);
|
| +bool tv_sdout_get_interrupt_pending(void);
|
| +
|
| +/* VMIXER */
|
| +enum s5p_tv_vmx_err tv_vm_set_win_blend(
|
| + enum s5p_tv_vmx_layer layer, bool enable);
|
| +enum s5p_tv_vmx_err tv_vm_set_layer_alpha(
|
| + enum s5p_tv_vmx_layer layer, u32 alpha);
|
| +enum s5p_tv_vmx_err tv_vm_set_layer_show(
|
| + enum s5p_tv_vmx_layer layer, bool show);
|
| +enum s5p_tv_vmx_err tv_vm_set_layer_priority(
|
| + enum s5p_tv_vmx_layer layer, u32 priority);
|
| +enum s5p_tv_vmx_err tv_vm_set_grp_base_address(
|
| + enum s5p_tv_vmx_layer layer, u32 baseaddr);
|
| +enum s5p_tv_vmx_err tv_vm_set_grp_layer_position(enum s5p_tv_vmx_layer layer,
|
| + u32 dst_offs_x, u32 dst_offs_y);
|
| +enum s5p_tv_vmx_err tv_vm_set_grp_layer_size(enum s5p_tv_vmx_layer layer,
|
| + u32 span, u32 width, u32 height, u32 src_offs_x, u32 src_offs_y);
|
| +enum s5p_tv_vmx_err tv_vm_set_bg_color(enum s5p_tv_vmx_bg_color_num colornum,
|
| + u32 color_y, u32 color_cb, u32 color_cr);
|
| +enum s5p_tv_vmx_err tv_vm_init_status_reg(enum s5p_vmx_burst_mode burst,
|
| + enum s5p_endian_type endian);
|
| +enum s5p_tv_vmx_err tv_vm_init_display_mode(enum s5p_tv_disp_mode mode,
|
| + enum s5p_tv_o_mode output_mode);
|
| +
|
| +/* for grp layer scaling */
|
| +enum s5p_tv_vmx_err tv_vm_init_layer(enum s5p_tv_disp_mode mode,
|
| + enum s5p_tv_vmx_layer layer, bool show, bool winblending, u32 alpha,
|
| + u32 priority, enum s5p_tv_vmx_color_fmt color, bool blankchange,
|
| + bool pixelblending, bool premul, u32 blankcolor, u32 baseaddr,
|
| + u32 span, u32 width, u32 height, u32 src_offs_x, u32 src_offs_y,
|
| + u32 dst_offs_x, u32 dst_offs_y, u32 dst_x, u32 dst_y);
|
| +void tv_vm_set_ctrl(enum s5p_tv_vmx_layer layer, bool premul,
|
| + bool pixel_blending, bool blank_change, bool win_blending,
|
| + enum s5p_tv_vmx_color_fmt color, u32 alpha, u32 blank_color);
|
| +void tv_vm_init_bg_dither_enable(bool cr_dither_enable,
|
| + bool cdither_enable, bool y_dither_enable);
|
| +enum s5p_tv_vmx_err tv_vm_init_bg_color(enum s5p_tv_vmx_bg_color_num color_num,
|
| + u32 color_y, u32 color_cb, u32 color_cr);
|
| +enum s5p_tv_vmx_err tv_vm_init_csc_coef(enum s5p_yuv_fmt_component component,
|
| + enum s5p_tv_coef_y_mode mode, u32 coeff0, u32 coeff1, u32 coeff2);
|
| +void tv_vm_init_csc_coef_default(enum s5p_tv_vmx_csc_type csc_type);
|
| +enum s5p_tv_vmx_err tv_vm_get_layer_info(enum s5p_tv_vmx_layer layer,
|
| + bool *show, u32 *priority);
|
| +void tv_vm_start(void);
|
| +void tv_vm_stop(void);
|
| +enum s5p_tv_vmx_err tv_vm_set_underflow_interrupt_enable(
|
| + enum s5p_tv_vmx_layer layer, bool en);
|
| +enum s5p_tv_vmx_err tv_vm_set_vsync_interrupt(bool en);
|
| +void tv_vm_clear_pend_all(void);
|
| +irqreturn_t tv_mixer_irq(int irq, void *dev_id);
|
| +
|
| +/* VPROCESSOR */
|
| +void tv_vp_set_field_id(enum s5p_vp_field mode);
|
| +enum s5p_tv_vp_err tv_vp_set_top_field_address(u32 top_y_addr,
|
| + u32 top_c_addr);
|
| +enum s5p_tv_vp_err tv_vp_set_bottom_field_address(u32 bottom_y_addr,
|
| + u32 bottom_c_addr);
|
| +enum s5p_tv_vp_err tv_vp_set_img_size(u32 img_width, u32 img_height);
|
| +void tv_vp_set_src_position(u32 src_off_x, u32 src_x_fract_step,
|
| + u32 src_off_y);
|
| +void tv_vp_set_dest_position(u32 dst_off_x, u32 dst_off_y);
|
| +void tv_vp_set_src_dest_size(u32 src_width, u32 src_height, u32 dst_width,
|
| + u32 dst_height, bool ipc_2d);
|
| +enum s5p_tv_vp_err tv_vp_set_poly_filter_coef(enum s5p_vp_poly_coeff poly_coeff,
|
| + signed char ch0, signed char ch1, signed char ch2, signed char ch3);
|
| +void tv_vp_set_poly_filter_coef_default(u32 h_ratio, u32 v_ratio);
|
| +void tv_vp_set_src_dest_size_with_default_poly_filter_coef(u32 src_width,
|
| + u32 src_height, u32 dst_width, u32 dst_height, bool ipc_2d);
|
| +enum s5p_tv_vp_err tv_vp_set_brightness_contrast_control(
|
| + enum s5p_vp_line_eq eq_num, u32 intc, u32 slope);
|
| +void tv_vp_set_brightness(bool brightness);
|
| +void tv_vp_set_contrast(u8 contrast);
|
| +enum s5p_tv_vp_err tv_vp_update(void);
|
| +enum s5p_vp_field tv_vp_get_field_id(void);
|
| +bool tv_vp_get_update_status(void);
|
| +void tv_vp_init_field_id(enum s5p_vp_field mode);
|
| +void tv_vp_init_op_mode(bool line_skip, enum s5p_vp_mem_mode mem_mode,
|
| + enum s5p_vp_chroma_expansion chroma_exp,
|
| + enum s5p_vp_filed_id_toggle toggle_id);
|
| +void tv_vp_init_pixel_rate_control(enum s5p_vp_pxl_rate rate);
|
| +enum s5p_tv_vp_err tv_vp_init_layer(u32 top_y_addr, u32 top_c_addr,
|
| + u32 bottom_y_addr, u32 bottom_c_addr,
|
| + enum s5p_endian_type src_img_endian, u32 img_width, u32 img_height,
|
| + u32 src_off_x, u32 src_x_fract_step, u32 src_off_y, u32 src_width,
|
| + u32 src_height, u32 dst_off_x, u32 dst_off_y, u32 dst_width,
|
| + u32 dst_height, bool ipc_2d);
|
| +enum s5p_tv_vp_err tv_vp_init_layer_def_poly_filter_coef(u32 top_y_addr,
|
| + u32 top_c_addr, u32 bottom_y_addr, u32 bottom_c_addr,
|
| + enum s5p_endian_type src_img_endian, u32 img_width, u32 img_height,
|
| + u32 src_off_x, u32 src_x_fract_step, u32 src_off_y, u32 src_width,
|
| + u32 src_height, u32 dst_off_x, u32 dst_off_y, u32 dst_width,
|
| + u32 dst_height, bool ipc_2d);
|
| +enum s5p_tv_vp_err tv_vp_init_poly_filter_coef(
|
| + enum s5p_vp_poly_coeff poly_coeff, signed char ch0, signed char ch1,
|
| + signed char ch2, signed char ch3);
|
| +void tv_vp_init_bypass_post_process(bool bypass);
|
| +enum s5p_tv_vp_err tv_vp_init_csc_coef(enum s5p_vp_csc_coeff csc_coeff,
|
| + u32 coeff);
|
| +void tv_vp_init_saturation(u32 sat);
|
| +void tv_vp_init_sharpness(u32 th_h_noise,
|
| + enum s5p_vp_sharpness_control sharpness);
|
| +enum s5p_tv_vp_err tv_vp_init_brightness_contrast_control(
|
| + enum s5p_vp_line_eq eq_num, u32 intc, u32 slope);
|
| +void tv_vp_init_brightness(bool brightness);
|
| +void tv_vp_init_contrast(u8 contrast);
|
| +void tv_vp_init_brightness_offset(u32 offset);
|
| +void tv_vp_init_csc_control(bool suy_offset_en, bool csc_en);
|
| +enum s5p_tv_vp_err tv_vp_init_csc_coef_default(enum s5p_vp_csc_type csc_type);
|
| +enum s5p_tv_vp_err tv_vp_start(void);
|
| +enum s5p_tv_vp_err tv_vp_stop(void);
|
| +void tv_vp_sw_reset(void);
|
| +
|
| +/* TV_CLOCK */
|
| +void tv_clk_init_hpll(u32 lock_time, bool vsel, u32 mdiv,
|
| + u32 pdiv, u32 sdiv);
|
| +int tv_clk_change_internal(void);
|
| +
|
| +enum s5p_tv_clk_err tv_clk_init_mout_hpll(
|
| + enum s5p_tv_clk_mout_hpll mout_hpll);
|
| +enum s5p_tv_clk_err tv_clk_init_video_mixer(
|
| + enum s5p_tv_clk_vmiexr_srcclk src_clk);
|
| +void tv_clk_init_hdmi_ratio(u32 clk_div);
|
| +void tv_clk_set_hdmi_i2c_clk_onoff(bool clk_on);
|
| +
|
| +/* TV_POWER */
|
| +void tv_power_init_mtc_stable_counter(u32 value);
|
| +void tv_powerinitialize_dac_onoff(bool on);
|
| +void tv_powerset_dac_onoff(bool on);
|
| +bool tv_power_get_power_status(void);
|
| +bool tv_power_get_dac_power_status(void);
|
| +void tv_poweron(void);
|
| +void tv_poweroff(void);
|
| +
|
| +extern struct s5p_tv_status s5ptv_status;
|
| +extern struct s5p_tv_vo s5ptv_overlay[2];
|
| +extern void s5p_hdmi_enable_interrupts(enum s5p_tv_hdmi_interrrupt intr);
|
| +extern void s5p_hdmi_disable_interrupts(enum s5p_tv_hdmi_interrrupt intr);
|
| +extern void s5p_hdmi_clear_pending(enum s5p_tv_hdmi_interrrupt intr);
|
| +extern u8 s5p_hdmi_get_interrupts(void);
|
| +extern int s5p_hdmi_register_isr(hdmi_isr isr, u8 irq_num);
|
| +extern int s5p_hpd_init(void);
|
| +extern u8 s5p_hdmi_get_swhpd_status(void);
|
| +extern u8 s5p_hdmi_get_hpd_status(void);
|
| +extern void s5p_hdmi_swhpd_disable(void);
|
| +extern void s5p_hdmi_hpd_gen(void);
|
| +extern int __init tv_hdcp_init(void);
|
| +extern int s5p_tv_clk_gate(bool on);
|
| +extern int s5ptvfb_init_fbinfo(int id);
|
| +extern int s5ptvfb_map_video_memory(struct fb_info *fb);
|
| +extern int s5ptvfb_check_var(struct fb_var_screeninfo *var,
|
| + struct fb_info *fb);
|
| +extern int s5ptvfb_set_par(struct fb_info *fb);
|
| +extern void s5ptvfb_set_lcd_info(struct s5p_tv_status *ctrl);
|
| +extern int s5ptvfb_display_on(struct s5p_tv_status *ctrl);
|
| +extern bool tv_if_set_disp(void);
|
| +extern int s5p_hpd_get_state(void);
|
| +extern void s5p_tv_kobject_uevent(struct work_struct *data);
|
| +extern int s5ptvfb_alloc_framebuffer(void);
|
| +extern int s5ptvfb_free_framebuffer(void);
|
| +extern int s5ptvfb_register_framebuffer(void);
|
| +extern int s5ptvfb_unregister_framebuffer(void);
|
| +extern int s5ptvfb_unmap_video_memory(struct fb_info *fb);
|
| +extern void s5p_tv_v4l2_init_param(void);
|
| +extern int s5p_tv_clk_gate(bool on);
|
| +extern int tv_phy_power(bool on);
|
|
|