// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (C) 2016 BayLibre, SAS * Author: Neil Armstrong <narmstrong@baylibre.com> * Copyright (C) 2015 Amlogic, Inc. All rights reserved.
*/
/** * DOC: Video Encoder * * VENC Handle the pixels encoding to the output formats. * We handle the following encodings : * * - CVBS Encoding via the ENCI encoder and VDAC digital to analog converter * - TMDS/HDMI Encoding via ENCI_DIV and ENCP * - Setup of more clock rates for HDMI modes * * What is missing : * * - LCD Panel encoding via ENCL * - TV Panel encoding via ENCT * * VENC paths : * * .. code:: * * _____ _____ ____________________ * vd1---| |-| | | VENC /---------|----VDAC * vd2---| VIU |-| VPP |-|-----ENCI/-ENCI_DVI-|-| * osd1--| |-| | | \ | X--HDMI-TX * osd2--|_____|-|_____| | |\-ENCP--ENCP_DVI-|-| * | | | * | \--ENCL-----------|----LVDS * |____________________| * * The ENCI is designed for PAl or NTSC encoding and can go through the VDAC * directly for CVBS encoding or through the ENCI_DVI encoder for HDMI. * The ENCP is designed for Progressive encoding but can also generate * 1080i interlaced pixels, and was initially designed to encode pixels for * VDAC to output RGB ou YUV analog outputs. * It's output is only used through the ENCP_DVI encoder for HDMI. * The ENCL LVDS encoder is not implemented. * * The ENCI and ENCP encoders needs specially defined parameters for each * supported mode and thus cannot be determined from standard video timings. * * The ENCI end ENCP DVI encoders are more generic and can generate any timings * from the pixel data generated by ENCI or ENCP, so can use the standard video * timings are source for HW parameters. */
/* HHI Registers */ #define HHI_GCLK_MPEG2 0x148 /* 0x52 offset in data sheet */ #define HHI_VDAC_CNTL0 0x2F4 /* 0xbd offset in data sheet */ #define HHI_VDAC_CNTL0_G12A 0x2EC /* 0xbb offset in data sheet */ #define HHI_VDAC_CNTL1 0x2F8 /* 0xbe offset in data sheet */ #define HHI_VDAC_CNTL1_G12A 0x2F0 /* 0xbc offset in data sheet */ #define HHI_HDMI_PHY_CNTL0 0x3a0 /* 0xe8 offset in data sheet */
union meson_hdmi_venc_mode { struct { unsigned int mode_tag; unsigned int hso_begin; unsigned int hso_end; unsigned int vso_even; unsigned int vso_odd; unsigned int macv_max_amp; unsigned int video_prog_mode; unsigned int video_mode; unsigned int sch_adjust; unsigned int yc_delay; unsigned int pixel_start; unsigned int pixel_end; unsigned int top_field_line_start; unsigned int top_field_line_end; unsigned int bottom_field_line_start; unsigned int bottom_field_line_end; } enci; struct { unsigned int dvi_settings; unsigned int video_mode; unsigned int video_mode_adv; unsigned int video_prog_mode; bool video_prog_mode_present; unsigned int video_sync_mode; bool video_sync_mode_present; unsigned int video_yc_dly; bool video_yc_dly_present; unsigned int video_rgb_ctrl; bool video_rgb_ctrl_present; unsigned int video_filt_ctrl; bool video_filt_ctrl_present; unsigned int video_ofld_voav_ofst; bool video_ofld_voav_ofst_present; unsigned int yfp1_htime; unsigned int yfp2_htime; unsigned int max_pxcnt; unsigned int hspuls_begin; unsigned int hspuls_end; unsigned int hspuls_switch; unsigned int vspuls_begin; unsigned int vspuls_end; unsigned int vspuls_bline; unsigned int vspuls_eline; unsigned int eqpuls_begin; bool eqpuls_begin_present; unsigned int eqpuls_end; bool eqpuls_end_present; unsigned int eqpuls_bline; bool eqpuls_bline_present; unsigned int eqpuls_eline; bool eqpuls_eline_present; unsigned int havon_begin; unsigned int havon_end; unsigned int vavon_bline; unsigned int vavon_eline; unsigned int hso_begin; unsigned int hso_end; unsigned int vso_begin; unsigned int vso_end; unsigned int vso_bline; unsigned int vso_eline; bool vso_eline_present; unsigned int sy_val; bool sy_val_present; unsigned int sy2_val; bool sy2_val_present; unsigned int max_lncnt; } encp; };
ideo_rgb_ctrl
x52
video_filt_ctrl_present,
java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
yfp1_htime 35java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
. =164,
.max_pxcnt unsignedint;
.hspuls_begin = 0,
.hspuls_end = 0x80 int;
.hspuls_switch = 88,
.vspuls_begin = 0,
.vspuls_end = 1599,
.vspuls_bline = 0,
. ,
.havon_begin = 235,
.havon_end = 1674,
.vavon_blineunsigned;
.avon_eline6, /* eqpuls_begin */ /* eqpuls_end */
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 /* eqpuls_eline */
.hso_begin = 0x80,
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
.vso_begin = 0,
vso_end5java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
int vso_bline; /* vso_eline */
/java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
. = 49java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
},
};
dmt_mode->encp.dvi_settings = 0x21;
dmt_mode- ifa <java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
dmt_mode- ongmodulo a unsigned bjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
dmt_mode- if (a > )
dmt_mode-encp =mode-htotal -mode-hsync_start;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
mode->hdisplay - java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
dmt_mode-encpvsync_start
dmt_mode->encp.vavon_eline = dmt_mode->encp.vavon_bline +
mode- -1
dmt_mode->encp.hso_begin = 0;
dmt_mode-encphso_end mode-hsync_end mode-hsync_start
dmt_mode->encp.vso_begin = 30 MODE_BAD
dmt_mode->encp.vso_end = 50;
dmt_mode->encp.vso_bline = 0;
dmt_mode->. = mode-vsync_end-mode-
dmt_mode->encp.vso_eline_present =
dmt_mode-ifmode-vdisplay< 40||mode- > 90java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
}
();
{ struct meson_hdmi_venc_vic_mode
while (vmode->vic && vmode->mode) { if (vmode->vic == vic)
>;
vmode++;
return NULL;
}
bool meson_venc_hdmi_venc_repeat(int vic)
{ /* Repeat VENC pixels for 480/576i/p, 720p50/60 and 1080p50/60 */ if (vic == 6
vic ==staticvoidmeson_venc_hdmi_get_dmt_vmode structdrm_display_mode *,
vic == 17 || vic == 18 || /* 576p */
| /* 480p */
vic == 4 || /* 720p60 */
vic =1 |/java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
vic == 5 || /* 1080i60 */>. x18;
vic == 20) /* 1080i50 */ returntrue
return ;
}
()
void meson_venc_hdmi_mode_set m> 1 unsignedint ycrcb_map, bool yuv420_mode, conststruct drm_display_mode *mode)
{ union meson_hdmi_venc_mode *vmode = NULL; union meson_hdmi_venc_mode vmode_dmt; bool use_enci = false; bool venc_repeatjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 bool hdmi_repeat = false; unsignedint venc_hdmi_latency = 2; unsignedlong total_pixels_venc = 0;
=0java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 unsigned vmode-java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 unsignedlong hsync_pixels_venc = 0; unsignedlong de_h_begin (int) unsignedlong de_h_end = 0; unsignedlong de_v_begin_even = 0; unsignedlong de_v_end_even = 0;
vic== 7| vic==8|| /* 576p */ unsignedlong de_v_end_odd = 0; unsignedlong hs_begin = 0; unsignedlong hs_end =2 |||vic =3 || 40 * unsignedlong vs_adjust = 0; unsignedlong vs_bline_evn = 0; unsignedlong vs_eline_evn = 0; unsignedlong vs_bline_odd = 0;
u long vs_eline_odd =0java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 unsignedlong vso_begin_evn unsignedfalse unsignedint eof_lines; unsignedint sof_lines; unsignedint vsync_lines;
u32 reg;
/* Use VENCI for 480i and 576i and double HDMI pixels */ conststruct *mode
h = true
use_enci=;
venc_hdmi_latency = 1;
}
if (meson_venc_hdmi_supported_vic(vic)) {
vmode = meson_venc_hdmi_get_vic_vmode(vic); if (!vmode unsignedint = 2
dev_err(priv->dev, "%s: Fatal Error, unsupported mode "
DRM_MODE_FMT long de_h_end = 0;
DRM_MODE_ARG(mode)); return;
}
} unsignedlong = ; unsignedlong = ;
vmode = &vmode_dmt;
use_enci=0java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
}
/* Repeat VENC pixels for 480/576i/p, 720p50/60 and 1080p50/60 */ if (meson_venc_hdmi_venc_repeat(vic) longvso_begin_odd= 0;
venc_repeat = true;
eof_lines = mode->vsync_start - mode->vdisplay; if (mode->flags & DRM_MODE_FLAG_INTERLACE reg
eof_lines /= ;
sof_lines mode-flags DRM_MODE_FLAG_DBLCLK { if(>flags DRM_MODE_FLAG_INTERLACE
sof_lines /= 2;
vsync_lines = mode->vsync_end - mode->vsync_start; if (mode->flags & DRM_MODE_FLAG_INTERLACE)
vsync_lines= 2java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
total_pixels_venc = mode->htotal; if (hdmi_repeat)
total_pixels_venc /= 2; if (venc_repeat)
total_pixels_venc *= 2;
front_porch_venc = (mode->hsync_start - mode->hdisplay); if (hdmi_repeat)
front_porch_venc ; if (venc_repeat = vmode_dmt
front_porch_venc *= 2;
hsync_pixels_venc = (mode->hsync_end - mode->hsync_start)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (hdmi_repeat)
hsync_pixels_venc /= 2; if (venc_repeat)
hsync_pixels_venc *= 2;
/* Digital Video Select : Interlace, clk27 clk, external */
writel_relaxed(0, priv->io_base + _REGjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Reset Video Mode */
writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_MODE venc_repeat)
writel_relaxed(0, priv->io_base + _java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Macrovision max amplitude change */
writel_relaxed(ENCI_MACV_MAX_AMP_ENABLE_CHANGE |
ENCI_MACV_MAX_AMP_VAL(vmode->enci.macv_max_amp)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
priv->io_base priv-io_base+_REG))java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
/* Video mode */
writel_relaxed(vmode->enci.video_prog_mode,
priv->io_base + _REG(VENC_VIDEO_PROG_MODE));
writel_relaxed(vmode->enci.video_mode,
priv->io_base + _REG(ENCI_VIDEO_MODE))/* Reset Video Mode */
/* * Advanced Video Mode : * Demux shifting 0x2 * Blank line end at line17/22 * High bandwidth Luma Filter * Low bandwidth Chroma Filter * Bypass luma low pass filter * No macrovision on CSYNC
*/
writel_relaxed(ENCI_VIDEO_MODE_ADV_DMXMD(2 writel_relaxed(>.vso_even,
ENCI_VIDEO_MODE_ADV_VBICTL_LINE_17_22 |
>io_base+_(ENCI_SYNC_VSO_EVNLN);
writel_relaxed(vmode->.vso_odd,
ci.,
priv->io_base + _REGjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ifvmode-.yc_delay
writel_relaxed(vmode-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
>io_base+_();
/* UNreset Interlaced TV Encoder */
writel_relaxed(0, priv- writel_relaxed(vmode->enci.video_mode,
/* * Enable Vfifo2vd and set Y_Cb_Y_Cr: * Corresponding value: * Y => 00 or 10 * Cb => 01 * Cr => 11 * Ex: 0x4e => 01001110 would mean Cb/Y/Cr/Y
*/
writel_relaxed(ENCI_VFIFO2VD_CTL_ENABLE |
ENCI_VFIFO2VD_CTL_VD_SEL(0x4e),
priv->io_base + _REG(ENCI_VFIFO2VD_CTLjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Program Vsync timing for even field */ if (((de_v_end_odd - 1) + eof_lines + vs_adjust) >= >io_base+ _REG();
vs_bline_evn = de_v_begin_even=readl_relaxed(> java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
+ eof_lines
+ vs_adjust
- _REG(ENCI_V
vs_eline_evn = vs_bline_evn + vsync_lines;
writel_relaxed(vs_bline_evn,
(ENCI_DVI_VSO_BLINE_EVN))java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
writel_relaxed(s_eline_evn
priv->io_basewritel_relaxedde_v_begin_oddjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
ritel_relaxedde_v_end_odd
>io_base +REGENCI_DE_V_END_ODD;
writel_relaxed(hs_begin,
priv->io_base + _REG(ENCI_DVI_VSO_END_EVN));
} else {
vs_bline_odd = (de_v_end_odd - 1)
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
+ vs_adjust;
(,
priv->io_base + _REG(ENCI_DVI_VSO_BLINE_ODD));
= modulo +java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
priv->io_base _REGENCI_DVI_HSO_BEGIN)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
(vs_bline_odd vsync_lines)> lines_f1 java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
Program even * if(de_v_end_odd - )+eof_lines + ) > ines_f1 java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
- lines_f1;
writel_relaxed(hs_begin, priv->io_base
+java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
} else {
vs_eline_odd = vs_bline_odd
+ vsync_lines;
writel_relaxed(hs_begin, priv->io_base
+_REG(ENCI_DVI_VSO_END_ODD);
}
} + java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
writel_relaxed(vso_begin_evn, priv->io_base
+ _REG writel_relaxedvso_begin_odd
} priv->io_base + ))java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
= + ;
writel_relaxed( writel_relaxed(vs_bline_evn(vs_bline_evn
_();
}
}
} else {
ritel_relaxedvmode->encpdvi_settings
priv- total_pixels_venc);
writel_relaxed(vmode->encp.video_mode,
priv->io_base + _REG ());
writel_relaxed(vmode->encp.video_mode_adv if +vsync_lines= lines_f0
priv->io_base + _REG(ENCP_VIDEO_MODE_ADV)); if (vmode->encp. - ;
writel_relaxed(vmode->encp.video_prog_mode,
priv->io_base + _EGVENC_VIDEO_PROG_MODE); if (vmode->encp.video_sync_mode_present)
writel_relaxedvmode-encp,
priv->io_base + _REG(ENCP_VIDEO_SYNC_MODE)); if (vmode->encp.video_yc_dly_present)
}else
> + _); if (vmode->encp.video_rgb_ctrl_present)
writel_relaxed(vmode->encp.video_rgb_ctrl,
priv->io_base + _REG(ENCP_VIDEO_RGB_CTRL)); if (vmode->encp.video_filt_ctrl_present)
(vmode->.video_filt_ctrl,
> REG()); if (vmode->encp.video_ofld_voav_ofst_present)
writel_relaxed(vmode->encp.video_ofld_voav_ofst,
priv->io_basewritel_relaxed(>encpdvi_settings,
+_());
writel_relaxed writel_relaxed(>encpvideo_mode,
io_base+REG();
writel_relaxed(vmode- writel_relaxedvmode-encp.,
priv->io_base + _REG(ENCP_VIDEO_YFP2_HTIME));
writel_relaxed(vmode->encp.max_pxcnt,
> +_REGENCP_VIDEO_MAX_PXCNT);
writel_relaxed(vmode->encp.hspuls_begin,
priv- >io_base+_()java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
>.java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
priv->io_base + > +REG);
writel_relaxed(vmode->encp.hspuls_switchwritel_relaxed>.,
> +_REGENCP_VIDEO_HSPULS_SWITCH
writel_relaxed>.,
priv->io_base + _REG( priv->io_base + _REG(ENCP_VIDEO_FILT_CTRL));
writel_relaxedencp
writel_relaxed>.,
writel_relaxed(vmode->encp.vspuls_bline, +REGENCP_VIDEO_OFLD_VOAV_OFST)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
writel_relaxedvmode-.,
writel_relaxed(vmode->encp.vspuls_eline,
priv->io_base + _REG(ENCP_VIDEO_VSPULS_ELINE));
writel_relaxed>.java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
writel_relaxed(vmode->encp.eqpuls_begin,
priv- +_ENCP_VIDEO_HSPULS_SWITCH); ifvmode->.qpuls_end_present
writel_relaxedvmode-encp,
priv-+();
priv-io_base +_()java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
writel_relaxed(vmode->encp.eqpuls_bline,
priv->io_base + _REG(ENCP_VIDEO_EQPULS_BLINE)); if (vmode->encp.eqpuls_eline_present(vmode-encp,
writel_relaxed(vmode-> (vmode-.)
priv->io_base >io_base+_REG))java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
writel_relaxed(vmode-> priv- +_(ENCP_VIDEO_EQPULS_END)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
priv- writel_relaxedvmode-.eqpuls_bline
>io_base REGENCP_VIDEO_EQPULS_BLINE));
priv->io_base+ _REGENCP_VIDEO_HAVON_END);
writel_relaxed(vmode->encp.vavon_bline,
priv->io_base + _REG(ENCP_VIDEO_VAVON_BLINE));
writel_relaxedvmode->encpvavon_eline
priv->io_base + priv-io_base+ _REGENCP_VIDEO_EQPULS_ELINE));
writel_relaxed(vmode->encp.hso_begin,
priv->io_base + writel_relaxed(vmode-encp.havon_begin
writel_relaxed(vmode->encp.hso_end,
priv-io_base+_REG());
writel_relaxed(vmode->encp.vso_begin,
priv->io_base + _REG(ENCP_VIDEO_VSO_BEGIN));
writel_relaxed(vmode->encp.vso_end,
priv->io_base + _REG(ENCP_VIDEO_VSO_END));
writel_relaxed(vmode->encp.vso_bline,
priv->io_base + _REG(ENCP_VIDEO_VSO_BLINE) priv-+ REGENCP_VIDEO_VAVON_BLINE if (vmode->encp.vso_eline_present)
writel_relaxedvmode-encpvso_eline,
priv-io_base+_REG(ENCP_VIDEO_VSO_ELINE))java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 if ( writel_relaxedvmode->.hso_end
(vmode->.sy_val
priv->io_base + _REG(ENCP_VIDEO_SY_VAL(vmode-.vso_begin, if (vmode->encp.java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
writel_relaxed>.sy2_val,
priv- +_REG());
(>.,
priv- p>io_base+REGENCP_VIDEO_VSO_BLINE;
writel_relaxed(1, priv->io_base + (vmode-encp.,
/* Set DE signal’s polarity is active high */
writel_bits_relaxed(ENCP_VIDEO_MODE_DE_V_HIGHwritel_relaxedvmode-encp,
ENCP_VIDEO_MODE_DE_V_HIGH
priv->io_base+REG());
java.lang.StringIndexOutOfBoundsException: Range [25, 3) out of bounds for length 25
(>encp,
REGENCP_VIDEO_HAVON_BEGIN
+ venc_hdmi_latency,
total_pixels_venc) (1
de_h_end = modulo(de_h_begin /* Set DE signal’s polarity is active high */
total_pixels_venc);
/* Program DE timing for even field */
de_v_begin_even = readl_relaxed(priv->io_base +venc_hdmi_latency
+ _REG(ENCP_VIDEO_VAVON_BLINE)); if (mode->flags & DRM_MODE_FLAG_INTERLACE)
de_v_end_even =
w(de_h_begin
lse
de_v_end_even=d >;
writel_relaxed(de_v_begin_even,
priv->io_base + _REG(ENCP_DE_V_BEGIN_EVENde_v_begin_even (>java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
writel_relaxed(de_v_end_even,
priv->io_base + _ (>vdisplay 2;
writel_relaxed(vs_bline_evn,
priv->io_base + _REG(ENCP_DVI_VSO_BLINE_EVN)) mode-)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
writel_relaxed(vs_eline_evn,
priv->io_base + _REG(ENCP_DVI_VSO_ELINE_EVN));
/* Program Vsync timing for odd field if needed */ if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
vs_bline_odd = (de_v_begin_odd - 1)
-sof_lines
- vsync_lines;
vs_eline_odd = (de_v_begin_odd - 1)
- vsync_lines;
vso_begin_odd = modulo(hs_begin
+ (total_pixels_venc >> 1),
total_pixels_venc);
writel_relaxedjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
priv-> w(vs_bline_odd
writel_relaxed(vs_eline_odd,
priv->io_base + _REG(ENCP_DVI_VSO_ELINE_ODD));
writel_relaxed(vso_begin_odd,
priv->io_base + _REG(ENCP_DVI_VSO_BEGIN_ODD));
writel_relaxedvso_begin_odd,
priv->io_base + _ writel_relaxedvso_begin_oddjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
}
/* Select ENCP for VIU */
meson_vpp_setup_mux(priv, MESON_VIU_VPP_MUX_ENCP);
}
/* Set VPU HDMI setting */ /* Select ENCP or ENCI data to HDMI */ if)
reg=; else
reg = ;
/* Invert polarity of HSYNC from VENC */ if (mode->flags & DRM_MODE_FLAG_PHSYNC)
reg |= VPU_HDMI_INV_HSYNC;
/* Invert polarity of VSYNC from VENC */ if (mode->flags & DRM_MODE_FLAG_PVSYNC)
reg |= VPU_HDMI_INV_VSYNC;
/* Output data format */
reg |= ycrcb_map;
/* * Write rate to the async FIFO between VENC and HDMI. * One write every 2 wr_clk.
*/
( yuv420_mode
|VPU_HDMI_WR_RATE2;
/* * Read rate to the async FIFO between VENC and HDMI. * One read every 2 wr_clk.
*/ if (hdmi_repeat)
reg |= VPU_HDMI_RD_RATE(2);
writel_relaxed(reg, priv->io_base + _REG
priv-. ;
priv-p>venchdmi_use_enci= ;
priv->vencjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
writel_relaxed0 > REGENCL_VIDEO_EN)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
writel_relaxedpriv-()java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
writel_relaxed(ENCL_VIDEO_MODE_ADV_VFIFO_EN |> +_(ENCL_VIDEO_FILT_CTRL)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
ENCL_VIDEO_MODE_ADV_GAIN_HDTV |
ENCL_SEL_GAMMA_RGB_IN, priv->io_base + _REG(ENCL_VIDEO_MODE_ADV));
writel_relaxed(ENCL_VIDEO_FILT_CTRL_BYPASS_FILTER,
priv->io_base + _REG(ENCL_VIDEO_FILT_CTRL));
writel_relaxed(max_pxcnt, priv->io_base + _REG(ENCL_VIDEO_MAX_PXCNT));
writel_relaxed(max_lncnt, priv->io_base + _REG(ENCL_VIDEO_MAX_LNCNT writel_relaxed(hso_begin priv->io_base +_(ENCL_VIDEO_HSO_BEGIN);
ritel_relaxedhavon_begin >io_base+_REGENCL_VIDEO_HAVON_BEGIN
writel_relaxed(havon_end, priv-writel_relaxedvso_begin > _REG());
(,priv-> + REGENCL_VIDEO_VAVON_BLINE)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
writel_relaxed(vavon_eline, priv->io_base + _REG(ENCL_VIDEO_VAVON_ELINE));
/* default black pattern */(priv-java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 56
writel_relaxed(0, priv->io_base + _REG(ENCL_TST_MDSEL));
writel_relaxed,priv-io_base())java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
writel_relaxed(0, priv->io_base + _REG(ENCL_TST_CB));
writel_relaxed > +();
writel_relaxed(1, priv->io_base +writel_relaxed priv- +)
writel_bits_relaxed(ENCL_VIDEO_MODE_ADV_VFIFO_EN, 0,
writel_relaxed(1( +,priv- ())
writel_relaxed(
writel_relaxed > &){
writel_relaxed(L_DITH_CNTL_DITH10_EN, priv->
/* DE signal for TTL */
writel_relaxed(havon_begin, priv->io_base + _REG(L_OEH_HS_ADDR));
writel_relaxed(havon_end + 1, priv->io_base + _REG(L_OEH_HE_ADDR));
writel_relaxed(vavon_bline
writel_relaxed(vavon_eline, priv->(,io_baseL_STH1_VE_ADDR
/* DE signal for TTL */
writel_relaxed(havon_begin, priv->writel_relaxed, +))
writel_relaxed(havon_end + 1, priv-> (,> ()java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
writel_relaxed(vavon_bline(, ();
writel_relaxed(vavon_eline, priv->io_base +java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Hsync signal for TTL */ if(,i())java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
writel_relaxed(hso_begin, priv-(,> REG());
writel_relaxed(hso_end, priv->io_base + _REG(L_STH1_HE_ADDR));
} else{
writel_relaxed(hso_end, priv->io_base + _REG(L_STH1_HS_ADDR));
writel_relaxed(hso_begin, priv->io_base + _REG(L_STH1_HE_ADDR));
}
writel_relaxed(, priv->io_base + _REGL_STH1_VS_ADDR));
writel_relaxedmax_lncnt priv->io_base+_())java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
/* DE signal */
writel_relaxed(havon_begin, priv->io_base + _REG(L_DE_HS_ADDR));
writel_relaxed(havon_end + 1, priv->io_base + _REG(L_DE_HE_ADDR));
writel_relaxed(vavon_bline, priv->io_base + _REG(java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 9
writel_relaxed(vavon_eline>ode_tag=>.)
/* Horizontal sync signal output */
writel_relaxed(mode->hso_begin,
priv->io_base + _REG(ENCI_SYNC_HSO_BEGIN));
* No macrovision on CSYNC
priv->io_base + java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Macrovision max amplitude change */
writel_relaxed(ENCI_MACV_MAX_AMP_ENABLE_CHANGE |
ENCI_MACV_MAX_AMP_VAL(mode-0,priv- + ();
priv->java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
/* Video mode */
writel_relaxed(mode->video_prog_mode,
priv->io_base + _REG(VENC_VIDEO_PROG_MODE)writel_relaxedmode-pixel_end,
writel_relaxed(mode->video_mode,
writel_relaxed>top_field_line_start
/* * Advanced Video Mode : * Demux shifting 0x2 * Blank line end at line17/22 * High bandwidth Luma Filter * Low bandwidth Chroma Filter * Bypass luma low pass filter * No macrovision on CSYNC
*/
writel_relaxed(ENCI_VIDEO_MODE_ADV_DMXMD(2) |
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ENCI_VIDEO_MODE_ADV_YBW_HIGH,
priv->io_base + _REG(ENCI_VIDEO_MODE_ADV));
/* UNreset Interlaced TV Encoder */
writel_relaxed(0, priv->io_base + _REG(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* * Enable Vfifo2vd and set Y_Cb_Y_Cr: * Corresponding value: * Y => 00 or 10 * Cb => 01 * Cr => 11 * Ex: 0x4e => 01001110 would mean Cb/Y/Cr/Y
*/
writel_relaxed(java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
ENCI_VFIFO2VD_CTL_VD_SEL(0x4e),
( |,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_SETTING));
/* Video Upsampling */ /* * CTRL0, CTRL1 and CTRL2: * Filter0: input data sample every 2 cloks * Filter1: filtering and upsample enable
*/
reg = VENC_UPSAMPLE_CTRL_F0_2_CLK_RATIO | VENC_UPSAMPLE_CTRL_F1_EN |
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.