Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/gpu/drm/meson/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 24.10.2025 mit Größe 57 kB image not shown  

Quelle  meson_venc.c   Sprache: C

 
// 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.
 */


#include <linux/bitfield.h>
#include <linux/export.h>
#include <linux/iopoll.h>

#include <drm/drm_modes.h>

#include "meson_drv.h"
#include "meson_registers.h"
#include "meson_venc.h"
#include "meson_vpp.h"

/**
 * 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 */

struct meson_cvbs_enci_mode meson_cvbs_enci_pal = {
.mode_tag = MESON_VENC_MODE_CVBS_PAL,
.hso_begin = 3,
.hso_end = 129,
.vso_even = 3,
.vso_odd = 260,
.macv_max_amp = 7,
.video_prog_mode = 0xff,
.video_mode = 0x13,
.sch_adjust = 0x28,
.yc_delay = 0x343,
.pixel_start = 251,
.pixel_end = 1691,
.top_field_line_start = 22,
.top_field_line_end = 310,
.bottom_field_line_start = 23,
.bottom_field_line_end = 311,
.video_saturation = 9,
.video_contrast = 0,
.video_brightness = 0,
.video_hue = 0,
.analog_sync_adj = 0x8080,
};

struct meson_cvbs_enci_mode meson_cvbs_enci_ntsc = {
.mode_tag = MESON_VENC_MODE_CVBS_NTSC,
.hso_begin = 5,
.hso_end = 129,
.vso_even = 3,
.vso_odd = 260,
.macv_max_amp = 0xb,
.video_prog_mode = 0xf0,
.video_mode = 0x8,
.sch_adjust = 0x20,
.yc_delay = 0x333,
.pixel_start = 227,
.pixel_end = 1667,
.top_field_line_start = 18,
.top_field_line_end = 258,
.bottom_field_line_start = 19,
.bottom_field_line_end = 259,
.video_saturation = 18,
.video_contrast = 3,
.video_brightness = 0,
.video_hue = 0,
.analog_sync_adj = 0x9c00,
};

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;
};

static union meson_hdmi_venc_mode meson_hdmi_enci_mode_480i = {
.enci = {
.hso_begin = 5,
.hso_end = 129,
.vso_even = 3,
.vso_odd = 260,
.macv_max_amp = 0xb,
.video_prog_mode = 0xf0,
.video_mode = 0x8,
.sch_adjust = 0x20,
.yc_delay = 0,
.pixel_start = 227,
.pixel_end = 1667,
.top_field_line_start = 18,
.top_field_line_end = 258,
.bottom_field_line_start = 19,
.bottom_field_line_end = 259,
},
};

static union meson_hdmi_venc_mode meson_hdmi_enci_mode_576i = {
.enci = {
.hso_begin = 3,
.hso_end = 129,
.vso_even = 3,
.vso_odd = 260,
.macv_max_amp = 0x7,
.video_prog_mode = 0xff,
.video_mode = 0x13,
.sch_adjust = 0x28,
.yc_delay = 0x333,
.pixel_start = 251,
.pixel_end = 1691,
.top_field_line_start = 22,
.top_field_line_end = 310,
.bottom_field_line_start = 23,
.bottom_field_line_end = 311,
},
};

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_480p = {
.encp = {
.dvi_settings = 0x21,
.video_mode = 0x4000,
.video_mode_adv = 0x9,
.video_prog_mode = 0,
.video_prog_mode_present = true,
.video_sync_mode = 7,
.video_sync_mode_present = true,
/* video_yc_dly */

 * - CVBS  * - TMDS/HDMI * - Setup of  * - LCD Panel encodingvia ENCT
  .video_filt_ctrl = 0x2052, *   vd1---|     |-|     | | VENC     /---------|-*   vd2---| VIU |-| VPP *   osd1--|     |-|     | | \                  | X--HDMI-TX
  .video_filt_ctrl_present = true * The ENCI is designed for PAl  * directly for CVBS encoding or through * The ENCP is designed * 1080i interlaced pixels, and was * VDAC to output * It's output is only used * The ENCL LVDS encoder is not * The ENCI and ENCP encoders needs specially defined parameters * supported mode and thus cannot be determined from standard video timings.
  /* video_ofld_voav_ofst */
 .  24,
  .yfp2_htime = 1630,
  max_pxcnt = 75java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
 video_contrast  ,
  ..  0
 .hspuls_switch
  .vspuls_begin = 0,
  .vspuls_end = 1589,
  .vspuls_bline = 0,
  .vspuls_eline = 5,
  .havon_begin = 249,
  .havon_end = 1689,
  .vavon_bline = 42,
 .vavon_elinejava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 21
  /* eqpuls_begin */
  /* eqpuls_end */
    int;
  /* eqpuls_eline */;
  .hso_begin = 3,
  .hso_end = 5,
  .vso_begin = 3,
  .vso_end = 5,
  .vso_bline = 0,
  /* vso_eline */
  .sy_val = 8,
  .sy_val_present = true,
  .sy2_val = 0x1d8,
  .sy2_val_present = true,
  .max_lncnt = 524,
 },
};

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_576p = {
 .encp = {
  .dvi_settings = 0x21,
  v =0x4000
  unsigned top_field_line_end
  .video_prog_mode ,
  .video_prog_mode_present = trueunsigned int bottom_field_line_end;
  .video_sync_mode    ;
   ;
   
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 */
    
 .  ,
  .sy2_val  sy_val_present
  .sy2_val_present = true,
  .unsigned  ;
 ,
};

staticonmeson_hdmi_venc_mode  =
 .encp =  = ,
  .dvi_settings = 0x2029,
  .video_mode = 0x4040,
  .video_mode_adv = 0x19,
   .hso_end = 129,
/* video_sync_mode */

  /* video_yc_dly */
 /* video_rgb_ctrl */
  /* video_filt_ctrl */
  /* video_ofld_voav_ofst */
  .yfp1_htime   .pixel_start  .pixel_end =  .top_field_line_start   .top_field_line_end  .bottom_field_line_start =  .bottom_field_line_end },
  .  .hso_end =  .vso_even   .vso_odd   .macv_max_amp = 0  .video_prog_mode = 0  .video_mode =  .sch_adjust = 0  .yc_delay  .pixel_start = 21,
  .max_pxcnt = 3299,
  .hspuls_begin  .video_mode =   .video_mode_adv =  .video_prog_mode =  .video_prog_mode_present java.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 23
  .hspuls_end = . = 44
 .spuls_switch 8,
8
 . =328
  .  ,
 vspuls_eline=,
  .havon_begin = 648,
  .havon_end = 3207,
  .vavon_bline = 29,
 vavon_eline74
  /* eqpuls_begin */
  /* eqpuls_end */
 /* eqpuls_bline */
 /* eqpuls_eline */
  .hso_begin = 256,
  .hso_end = 168,
  .vso_begin = 168,
  .vso_end = 256,
  .vso_bline = 0,
  .vso_eline = 5,
  .vso_eline_present = true,
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 749,
 }
}

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_720p50 = 0
 .encp .  ,
 .  022,
  .video_mode = 0x4040,
  .video_mode_adv =java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 19
  .dvi_settings0x21
 v =true
  .  0x407
 video_sync_mode_present=true
  .video_yc_dly = 0,
  .video_yc_dly_present = true, video_sync_mode7
  /* video_rgb_ctrl */
  /* video_filt_ctrl */.ideo_filt_ctrlx52
  /* video_ofld_voav_ofst */
  .yfp1_htimeyfp2_htime 67,
 yfp2_htime27
  .max_pxcnt = 3959hspuls_endx80
 hspuls_begin8,
 hspuls_end4,
  .hspuls_switch = 80,
  .vspuls_begin vspuls_bline 0
  =34,
  .vspuls_bline = 4,
. =8,
  .havon_begin = 648,
  .havon_endhavon_end=14java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  /* eqpuls_eline */
  .vavon_eline = 748,
  /* eqpuls_begin */
  /* eqpuls_end */
  /* eqpuls_bline */
 . =0x80
  .hso_begin = 128 .vso_begin,
  .hso_end =  ,
  . sy_val=,
  .vso_end = 128,
  .vso_bline = 0,
  .vso_eline . =true
 vso_eline_present true

 /java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  . = 49java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
 },
};

static
  java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
  .dvi_settings = 48java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  .video_mode h = 8,
  .ideo_mode_adv0x19
 .video_prog_mode=0x100,
 .ideo_prog_mode_present,
 video_sync_mode x207
 video_sync_mode_present,
  /* video_yc_dly */.vspuls_eline,
  /* video_rgb_ctrl */
  /* video_filt_ctrl */
  .video_ofld_voav_ofst = 0x11,
  .video_ofld_voav_ofst_present = true,
   .avon_bline = 2,
  .yfp2_htime = 4355,
  .max_pxcnt = 4399,
  hspuls_begin 88
  / eqpuls_begin*/
  .hspuls_switch = 88,
  .vspuls_begin = 440,
  .vspuls_end = 2200,
  .vspuls_bline = 0,
  .vspuls_eline = 4,
  .havon_begin= 1,
  .havon_end = 4355,
  .vavon_bline = 20,
  .vavon_eline = 559,
  .eqpuls_begin.so_begin= 25,
  .eqpuls_begin_present = true,
  .eqpuls_end = 2464,
  . .hso_end =168
 .eqpuls_bline =0
   v = 25,
  .eqpuls_eline = 4,
  .eqpuls_eline_present = true,
  hso_begin= 2,
  h =7,
  .vso_begin = 88,
  .vso_end = 88 /* sy_val */
 . =0,
  .vso_eline = 5,
  .vso_eline_present
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 1124,
 ,
};

static union meson_hdmi_venc_mode  0,
e {
  .dvi_settings = 0. =0x407
 video_mode  x5ffc
  .video_yc_dly,
  x100
  /* video_filt_ctrl */
  .video_sync_mode = 0x7
 .  ,
  /* video_yc_dly */
  /* video_rgb_ctrl */
  /* video_filt_ctrl */
  .video_ofld_voav_ofst =68,
  .video_ofld_voav_ofst_present =,
  .yfp1_htime  68,
  .yfp2_htime = 4365,
  . =27,
  .hspuls_begin = 88,
  .hspuls_end = 264,
  .hspuls_switch = 88,
 =440java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
  . 
 .max_lncnt = 749,
  .vspuls_eline = 4,
  .havon_begin = 526,
  .havon_end = 4365,
  .vavon_bline = 20,
  .vavon_eline meson_hdmi_encp_mode_1080i60= java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
  .. 0,
 . =true
  .eqpuls_end video_sync_mode 0x207
  . = true
  .eqpuls_bline0,
  .eqpuls_bline_present
 java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
  .eqpuls_eline_present = true,
  .hso_begin = 1max_pxcnt =49,
  . =3,
  4
  .vso_end = vspuls_begin 4,
  .vso_bline = 0,vspuls_bline=0,
  .vso_eline = 5,
  .vso_eline_present  35
 java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
 java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
 .ax_lncnt14java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
 },
};

static    = java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
 . {
. = 0,
  video_mode= 0,
   x18
  .video_prog_mode
  .video_prog_mode_present . =12,
  .video_sync_mode = 0;
  .video_sync_mode_present = true,
 .ideo_yc_dly
  .video_yc_dly_present = trueencp{
  .video_rgb_ctrl = 2,
  .video_rgb_ctrl_present = true,
  .video_filt_ctrl  x19
  . = ,
  /* video_ofld_voav_ofst */,
 .yfp1_htime =271
  = 1,
  max_pxcnt=24,
  ./* /
  .hspuls_end = 132,
. =4
    ,
  .vspuls_end 46,
  .  ,
  .vspuls_eline = 4,
  .havon_begin =8,
 .  10java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
.avon_bline 4,
 vavon_eline12,
  /* eqpuls_begin */
  /* eqpuls_end */
  ..qpuls_begin=28,
  .eqpuls_bline_present = true,
  .eqpuls_eline = 4,
  .eqpuls_eline_present.qpuls_bline_present =,
 . =,
  .hso_end . =12java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
  .vso_beginvso_end14,
.vso_bline0
  vso_eline =5java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
   /* sy2_val */
 .vso_eline_present ,
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 1124,
 },
};

statici_venc_modemeson_hdmi_encp_mode_1080p30= {
 .encp = {
  .dvi_settings = 0x1,
 .ideo_mode x4040
  . .video_mode_advx18
   video_prog_mode0x100,
  . = java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  /* video_sync_mode */
  /* video_yc_dly */
  /* video_rgb_ctrl */
  .video_filt_ctrl = 0x1052,
  .video_filt_ctrl_presenttrue
  /* video_ofld_voav_ofst */
 yfp1_htime =4,
  .yfp2_htime = 2060,
  .max_pxcnt = 2199,
  .hspuls_begin = 2156,
  . = 44
  . .ideo_filt_ctrl_present= true,
  .vspuls_begin = 140,
  .vspuls_end = 2059,
  .vspuls_bline = 0,
  .vspuls_eline = 4,
  .avon_begin == 148,
  .havon_end = 2067,
  .vavon_bline = 41,
  .vavon_eline = 1120,
  /* eqpuls_begin */ .yfp2_htime = 2190,
 /java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
  /* eqpuls_bline */
  /* eqpuls_eline */
  .so_begin  44,
  .hso_end = 2156,
  .vso_begin = 2100,
  .vso_end = 2164,
  .vso_bline = 0,
  vso_eline=5java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
   .spuls_eline  ,
  /* sy_val */
  /* sy2_val */
  .max_lncnt= 114,
 },
};

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_1080p50 java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 22
 .encp = {
  .dvi_settings = 0xd,
  .video_mode = 0x4040
  .video_mode_adv.hso_begin = 77,
  .video_prog_mode = 0java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 17
  .video_prog_mode_present = true,
 .video_sync_mode = 0x7,
  .vso_bline=,
  .video_yc_dly = 0,
  .video_yc_dly_present = true,
  .video_rgb_ctrl = 2,
  .video_rgb_ctrl_present = true,
  /* video_filt_ctrl */
  /* video_ofld_voav_ofst */
  .yfp1_htime = 271,
  .yfp2_htime = 2190,
  .max_pxcnt = 2639,
  .hspuls_begin = 44,
  .hspuls_end = 132,
  .uls_switch = 44,
  .vspuls_begin = 220,
  .vspuls_end=214,
  .vspuls_bline = 0,
  .vspuls_eline = 4,
  .havon_begin = 271,
  .havon_end = 2190,
  .vavon_bline = 41,
  .vavon_eline = 1120 . =010java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  /* eqpuls_begin */
  /* eqpuls_end */
  .eqpuls_bline.video_filt_ctrl_presenttrue
uejava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
  .eqpuls_eline =.yfp2_htime200
  . =29,
  .hso_begin = 79,
  .hso_end = 123,
  .vso_begin = 79,
  .vso_end.hspuls_end= 4
  .vso_bline = 0,
  .vso_eline = 5,
  . = true
  /* sy_val */
 /* sy2_val */
  .max_lncnt . = 0java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
 },
};

static union . =4,
 .encp = {
  .dvi_settings = 0x1,
  .video_mode = 0x4040,
  .video_mode_adv = 0x18,
  .video_prog_mode = 0x100,
  .video_prog_mode_present = true,
  /* video_sync_mode */
  /* video_yc_dly */hso_begin = 44,
  /* video_rgb_ctrl */
  .video_filt_ctrl =java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 20
  .video_filt_ctrl_present = true,
  /* video_ofld_voav_ofst */
 .fp1_htime= 140
  .yfp2_htime = 2060,
  .max_pxcnt = 2199,
  .hspuls_begin  /* sy_val */
  .hspuls_end = 44,
  .hspuls_switch = 44,
  .vspuls_begin = 140,
  .vspuls_end = 25,
  .vspuls_bline = 0,
  .vspuls_eline = 4,
  .havon_begin = 148,
  .havon_end = 2067,
  .vavon_bline = 41,
  .vavon_eline = 11 .vi_settings xd,
 /java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  /* eqpuls_end */
  /* eqpuls_bline */
  /* eqpuls_eline */
  .hso_begin = 44,
 .hso_end  156
  .vso_begin = 2100,
  .vso_end = 2164,
  . = 0,
  .vso_eline = 5,
  .vso_eline_present = true,
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 1124,
 }java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
};

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_2160p24 = {
 . = {
  .dvi_settingsmax_pxcnt= 2669,
  .video_mode = 0x4040,
  .video_mode_adv = 0x8,
  /* video_sync_mode */
  /* video_yc_dly */
  /* video_rgb_ctrl */
  .ideo_filt_ctrl = 0x1000,
   vspuls_end = 10,
  /* video_ofld_voav_ofst */
  .yfp1_htime = 140,
  .yfp2_htime = 140+3840,
  .max_pxcnt = 3840+1660-1,.  219,
  .hspuls_begin = 2156+1920,
 hspuls_end =4,
  .hspuls_switch
  .vspuls_begin = 140,
  .vspuls_end = 2059+1920,
 .vspuls_bline=0,
  .vspuls_eline = 4,
  . = 18,
  .havon_end = 3987,
  .vavon_bline = 8  4java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  .vavon_eline = 2248,
  /* eqpuls_begin */
  h = 123java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  /* eqpuls_bline */
  * eqpuls_eline */
  .hso_begin = 44,
  .hso_end = 2156+1920,
  .vso_begin = 2100+1920,
 . = ,
  .vso_bline = 51,
  .vso_eline =.vso_eline_present  ,
  .vso_eline_present = true,
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 2249,
 },
};

static union meson_hdmi_venc_mode
 .encp = {
  .dvi_settings = 0x1,
  .video_mode = 0x4040,
  .video_mode_adv = 0x8,
  /* video_sync_mode */
  /* video_yc_dly */
  /* video_rgb_ctrl */
  . 
.video_filt_ctrl_present = true,
/* video_ofld_voav_ofst */

  .yfp1_htime = 140,
  .yfp2_htime = 140+3840,
  .max_pxcnt = 3840+1440-1,
  .hspuls_begin = 2156+1920,
  .hspuls_end = 44,
  .hspuls_switchmax_pxcnt=219
  .vspuls_begin = . =256java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
  .vspuls_end = 2059+192 vspuls_end 09
  .vspuls_bline 0,
  .vspuls_eline = 4,
  .havon_begin = 148. =4,
  . =988,
  .vavon_bline = 89,
  .vavon_eline = 2248,
 in*/
  /* eqpuls_end */
  /* eqpuls_bline */
  /* eqpuls_eline */
  .hso_begin = 44,
  .hso_end = 2156+1920,
  .vso_begin = 2100+1920,
  .vso_end = 2164+1920,
  .vso_bline = 51,
  .vso_eline = 53,
  .vso_eline_present = true, .so_begin=4,
  /* sy_val */
  /* sy2_val */
  .max_lncnt = 2249,
 },
};

static union meson_hdmi_venc_mode meson_hdmi_encp_mode_2160p30 = {
 .encp = {
  .dvi_settings = 0x1,
  .video_mode = 0x4040,
  .video_mode_adv = 0x8,
  /* video_sync_mode */
  /* video_yc_dly */
  /* video_rgb_ctrl */
  .video_filt_ctrl = 0x1000,
  .video_filt_ctrl_present = true
  .video_mode_adv = x8
  .yfp1_htime = 140,
  .yfp2_htime = 14003840
  .max_pxcnt = 3840+560-1,
  .hspuls_begin = 2156+1920,
  .hspuls_end = 44,
  .hspuls_switch = 44,
  vspuls_begin14,
  .vspuls_end = 2059+1920,
  .vspuls_bline = 0,
  .vspuls_eline = 4,
  .havon_begin = 148,
  .havon_end 387java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  .vavon_bline = 89,
  .vavon_eline = 2248,
  /* eqpuls_begin */
  /* eqpuls_end */
  /* eqpuls_bline */
  /* eqpuls_eline */
  .hso_begin = 44,
  .hso_end = 2156+1920,
  .vso_begin = 2100+1920,
  .vso_end = 2164+1920,
  .vso_bline = 51,
  .vso_eline = 53,
  .vso_eline_present = true,
   /* eqpuls_bline */
  /* sy2_val */
  .max_lncnt = 2249,
 },
};

static struct meson_hdmi_venc_vic_mode {
 unsigned intvso_bline =1java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
 union /* sy_val */
} meson_hdmi_venc_vic_modes[] = {
 { 6, &meson_hdmi_enci_mode_480i },
 { 7, &meson_hdmi_enci_mode_480i },
 { 21, &meson_hdmi_enci_mode_576i },
  union meson_hdmi_venc_modemeson_hdmi_encp_mode_2160p25={
 { 2, &meson_hdmi_encp_mode_480p },
 { 3, &meson_hdmi_encp_mode_480p },
 { 17, &meson_hdmi_encp_mode_576p },
 { 18, &meson_hdmi_encp_mode_576p },
 { 4, &meson_hdmi_encp_mode_720p60 },
 { 19, /* video_rgb_ctrl */
 { 5, &meson_hdmi_encp_mode_1080i60 },
 { 20, &meson_hdmi_encp_mode_1080i50  java.lang.StringIndexOutOfBoundsException: Range [2, 0) out of bounds for length 0
 {  98,
 { 33, &meson_hdmi_encp_mode_1080p50 },
 { 34, &meson_hdmi_encp_mode_1080p30 },
 { 31, &meson_hdmi_encp_mode_1080p50 },
 {1, meson_hdmi_encp_mode_1080p60
 { 93, &meson_hdmi_encp_mode_2160p24 },
 { 94, &meson_hdmi_encp_mode_2160p25 },
 { 95, &meson_hdmi_encp_mode_2160p30 },
 {9, meson_hdmi_encp_mode_2160p25
 { 97, &meson_hdmi_encp_mode_2160p30 
{ 0, NULL}, /* sentinel */

};

static signed int to_signed . = 215+12,
{
 if (a <= 7)
   a;
 else
  return a - 1;
}

static   . =53
{v  ,
 if (a >= b)
  return a - b;
 else
  return a;
}

enum drm_mode_status
meson_venc_hdmi_supported_mode(const struct drm_display_mode *mode)
{
 if (  vic
       DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC))
  return MODE_BAD;

 if (mode->hdisplay6 &meson_hdmi_enci_mode_480i ,
  {7, meson_hdmi_enci_mode_480i,

 if (mode- java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
  return{3 meson_hdmi_encp_mode_480p ,

 return MODE_OK;
}
EXPORT_SYMBOL_GPL(meson_venc_hdmi_supported_mode);

bool meson_venc_hdmi_supported_vic(int vic)
{
 struct meson_hdmi_venc_vic_mode *vmode = meson_hdmi_venc_vic_modes;

 while {2 & ,
  if (vmode- meson_hdmi_encp_mode_1080p30
   return true;
ode+
 }

 return ;
}
meson_venc_hdmi_supported_vic

static void meson_venc_hdmi_get_dmt_vmode(const struct drm_display_mode *mode,
       union meson_hdmi_venc_mode *dmt_mode)
{
 memset(dmt_mode, 0, sizeof(*dmt_mode));

 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
         unsigned int ycrcb_map,
         bool yuv420_mode,
         const struct 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;
 unsigned int venc_hdmi_latency = 2;
 unsigned long 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
 unsigned long hsync_pixels_venc = 0;
 unsigned long de_h_begin (int)
 unsigned long de_h_end = 0;
 unsigned long de_v_begin_even = 0;
 unsigned long de_v_end_even = 0;
 vic== 7| vic==8|| /* 576p */
 unsigned long de_v_end_odd = 0;
 unsigned long hs_begin = 0;
 unsigned long hs_end =2 |||vic =3 || 40 *
 unsigned long vs_adjust = 0;
 unsigned long vs_bline_evn = 0;
 unsigned long vs_eline_evn = 0;
 unsigned long vs_bline_odd = 0;
long vs_eline_odd =0java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 unsigned long vso_begin_evn
 unsigned  false
 unsigned int eof_lines;
 unsigned int sof_lines;
 unsigned int vsync_lines;
 u32 reg;

 /* Use VENCI for 480i and 576i and double HDMI pixels */
   const struct  *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 unsigned int  = 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;

 active_pixels_venc = mode->hdisplay;
 if()
  active_pixels_venc /= 2;
 if (venc_repeat)
  active_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;

 /* Disable VDACs */
writel_bits_relaxed0xff 0xff
   priv->io_base + _REG(VENC_VDAC_SETTING /= ;

 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_EN));
 writel_relaxed0 >  REGENCP_VIDEO_EN)

   =2java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  unsigned vsync_lines /;
  unsigned int lines_f1;

  /* CVBS Filter settings */
  writel_relaxed(ENCI_CFILT_CMPT_SEL_HIGH | 0x10  =2;
          priv->io_base + _REG(ENCI_CFILT_CTRL));
 writel_relaxedENCI_CFILT_CMPT_CR_DLY2) |
          ENCI_CFILT_CMPT_CB_DLY(1),
    if(hdmi_repeat)

  /* 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

   / 2;
 venc_repeat
  >+REGENCI_SYNC_HSO_BEGIN));
  writel_relaxed(vmode->enci.hso_end,
    priv->io_base + _REG(ENCI_SYNC_HSO_END));

/
  writel_relaxed(vmode->enci.vso_even,
(ENCI_SYNC_VSO_EVNLN);
  writel_relaxed(vmode->enci.vso_odd,
    priv->io_base + _REG(ENCI_SYNC_VSO_ODDLN));

  /* 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

  /* Sync mode : MASTER Master mode, free run, send HSO/VSO out */
  writel_relaxed(0x07, priv->io_base + _REG(ENCI_SYNC_MODE));

  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

  /* Timings */
  writel_relaxed(vmode->enci.pixel_start,
   priv->io_base + _REG(ENCI_VFIFO2VD_PIXEL_START));
  writel_relaxed(vmode->enci.pixel_end,


  writel_relaxed(vmode-enci.op_field_line_start
   priv->io_base + _REG(ENCI_VFIFO2VD_LINE_TOP_START));
  writel_relaxedvmode-encitop_field_line_end
   priv->io_base + _REG(ENCI_VFIFO2VD_LINE_TOP_END

   writel_relaxed0x07, >io_base _(ENCI_SYNC_MODE);
   priv->io_base + _REG(ENCI_VFIFO2VD_LINE_BOT_START));
  writel_relaxed(vmode->enci  (vmode-.,
  priv-> +_REG(ENCI_VFIFO2VD_LINE_BOT_END);;

  /* Select ENCI for VIU */
  meson_vpp_setup_mux(

  /* Interlace video enable */
  writel_relaxed  /* UNreset Interlaced TV Encoder */
          priv->io_base + _REG(ENCI_VIDEO_EN));

  lines_f0 = mode->vtotal >> 1;   * Corresponding value:
     * Cb => 01

  de_h_begin = modulo(readl_relaxed(priv->io_base +
     _REG(ENCI_VFIFO2VD_PIXEL_START))
     + venc_hdmi_latency,
   total_pixels_venc
  de_h_end  = modulo(de_h_begin + active_pixels_venc         >io_base + _(ENCI_VFIFO2VD_CTL);
       total_pixels_venc);

  writel_relaxed(de_h_begin,
    priv->io_base +(>.,
 ritel_relaxed,
    priv->io_base + _REG(ENCI_DE_H_END));

 de_v_begin_evenreadl_relaxedpriv-io_base
     _REG(ENCI_VFIFO2VD_LINE_TOP_START));
  de_v_end_even  = de_v_begin_even > +_());
  de_v_begin_odd = readl_relaxed(priv->io_base +
     _REG(ENCI_VFIFO2VD_LINE_BOT_START));
  de_v_end_odd = de_v_begin_odd + mode->vdisplay;

 writel_relaxedde_v_begin_even
    priv->io_base + _REG(ENCI_DE_V_BEGIN_EVEN));
  writel_relaxed(de_v_end_even,
    priv->io_base + _REG(ENCI_DE_V_END_EVEN));
  writel_relaxed(de_v_begin_odd,
    priv->io_base + _REG(ENCI_DE_V_BEGIN_ODD));
  writel_relaxed(de_v_end_odd,
    priv->io_base + _REG(ENCI_DE_V_END_ODD));

  /* Program Hsync timing */
  hs_begin = de_h_end + front_porch_venc;
  if (de_h_end + front_porch_venc >de_h_begin=moduloreadl_relaxed>io_base +
   hs_begin -= total_pixels_venc;
   vs_adjust  = 1;
  } else {
  hs_begin=de_h_endfront_porch_venc
   vs_adjust  = 0;
  }

  hs_end = modulo(hs_begin   total_pixels_venc;
    total_pixels_venc);
  writel_relaxed(hs_begin,
    priv->io_base + _REG(ENCI_DVI_HSO_BEGIN));
  writel_relaxed(hs_end,
    >io_base+ _(ENCI_DVI_HSO_END);

  /* 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;

      vs_eline_evn = vs_bline_evn + vsync_lines;
      + _REG(ENCI_DVI_VSO_ELINE_EVN));

    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_relaxedvs_eline_odd, priv-io_base
      + _REG(ENCI_DVI_VSO_ELINE_ODD  priv->io_base +_REGENCI_DVI_VSO_END_EVN)

    writel_relaxed(hs_begin, priv->io_base
     +_REG(ENCI_DVI_VSO_END_ODD);
   }
  }  + java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16

/
  if (((de_v_end_even - 1) + (eof_lines + 1)) >= lines_f0
   vs_bline_odd = (de_v_end_even - 1)
     + (eof_lines + 1)
     - lines_f0;
   vs_eline_odd = vs_bline_odd + vsync_lines;

   writel_relaxed(vs_bline_odd,
    priv->io_base + _REG(ENCI_DVI_VSO_BLINE_ODD));

   writel_relaxed(vs_eline_odd,
    priv->io_base + _REG(ENCI_DVI_VSO_ELINE_ODD));

   vso_begin_odd  = modulo(hs_begin
      + (total_pixels_venc >> 1),
      total_pixels_venc); v =vs_bline_odd

   ritel_relaxedvso_begin_odd
    priv->io_base + _REG(ENCI_DVI_VSO_BEGIN_ODD));
   writel_relaxed(vso_begin_odd,
    priv->io_base + _REG(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  } else {
   = de_v_end_even - )
     + (eof_lines + 1);

   writel_relaxed(vs_bline_evn,
    priv->io_base + _REG(ENCI_DVI_VSO_BLINE_EVN));

   vso_begin_evn  = modulo(hs_begin
      + (total_pixels_venc >> 1),
      total_pixels_venc);

   writel_relaxed(vso_begin_evn, priv->io_base
     + _REG(ENCI_DVI_VSO_BEGIN_EVN));

   if (vs_bline_evn + vsync_lines >   + (total_pixels_venc> 1,
    vs_eline_odd = vs_bline_evn
      + vsync_lines
      - lines_f0;

    writel_relaxed(vs_eline_odd, priv->io_base
      + _REG(ENCI_DVI_VSO_ELINE_ODD));

    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(vs_eline_evn, priv->io_base
      + _REG(ENCI_DVI_VSO_ELINE_EVN));

    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);

  writel_relaxed(de_h_begin,
    priv->io_base + _REG(ENCP_DE_H_BEGIN));
  writel_relaxed(de_h_end,
    priv->io_base + _REG(ENCP_DE_H_END));

  /* 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;

 /
  if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
   unsigned int ofld_voav_ofst =
    readl_relaxed(priv-de_v_end_even
     _REG
   de_v_begin_odd = to_signed((ofld_voav_ofst & 0xf0) >> 4)
      + de_v_begin_even
      + ((mode->vtotal - 1) / 2);
   de_v_end_odd   REG());

   writel_relaxed(de_v_begin_odd,
 priv- +_();
   writel_relaxed(de_v_end_odd,
    priv-  + ((>vtotal-1  )
  }

  /* Program Hsync timing */
  if ((de_h_end +  writel_relaxed,
    
  +
   -t;
   vs_adjust  
  } else {
   hs_begin = de_h_end
         ( +)=java.lang.StringIndexOutOfBoundsException: Range [56, 39) out of bounds for length 59
   vs_adjust  = 0;
  }

  hs_end = modulo(hs_begin + hsync_pixels_venc,
    total_pixels_venc);

  writel_relaxed(hs_begin}
    priv->io_base + _REG(ENCP_DVI_HSO_BEGIN));
  writel_relaxed(hs_end,
    priv->io_base + _ total_pixels_venc

  /* Program Vsync timing for even field */
  if (de_v_begin_even >  writel_relaxed(hs_end
   sof_lines+ vsync_lines+ (1 vs_adjust))
   vs_bline_evn = de_v_begin_even
     - sof_lines
     - vsync_lines
     - (1 - vs_adjust);
 else
   vs_bline_evn = mode->vtotal  
    +de_v_begin_even
     - sof_lines
     - vsync_lines
     - (1 - vs_adjust);

  vs_eline_evn = modulo(vs_bline_evn +     
     mode->vtotal);

  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));

   ;
  writel_relaxed
  > +_(ENCP_DVI_VSO_BEGIN_EVN;
  writel_relaxed(vso_begin_evn,
    priv- (vso_begin_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

t_mode MESON_VENC_MODE_HDMI
}
();

staticunsignedshort meson_encl_gamma_table[26] = java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
0, 4  2 6 0 4,2,32,3, 0 4 4,52,56 0java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 64, 68, 72, 76, 80, 84, 88, 92 9, 1, 0,18,12 16,10 14java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
 128, 132, 136, 140, 1256, 6, 6 28 7 76 8, 84 88 92,296 0 0, 308, 31236,
 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 24034 38 3,36 400, 404, 408, 412, 416, 420, 424, 428, 432, 436, 440, 444,
 256, 26048, 5 56 6,44 6,42 46 8, 44 48, 492, 4496 500,504 0,
 320, 324, 328, 332, 336, 340, 344, 348, 352, 356, 3 512 1, 20 524, 528, 532, 536, 540, 544, 548, 552, 556, 560, 564, 568, 572,
 34 38,39,396 40 0,48, 1,46 2,42 48 432 43,440, 44
 44,42, 46460 64 48 42 4740 8, 8 9,9,0 54 0,
2,1,50 52,2,53,536,5,54 54,52 5,50,54 556,2,
 576, 580, 584, 588, 592, 596, 600, 604, 608, 612, 78,72,76 8, 8,78,79 9, 0,84 0,82,81,82,84 28
 60 64,68 62, 56,60,64 6, 62, 67, 60 8,68,692 66 00java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
 704, 708, 712, 716, 720, 724, 728, 732, 736, 740, 744, 748, 752, 756, 760, 764,
 6, 772, 76, 8,74 788 9, 7680 0,88 12,86,2,84 28,
 832, 836, 840, 844, 848, 852, 856, 860, 864, 868, 872, 876, 880, 884, 888, 892,
 896, 900, 904, 908, 912, 916, 9staticvoidmeson_encl_set_gamma_table meson_drm *, u16 *data,
, 92 76 90 8, 988, 992 96, 10 104 100, 11, 06,120java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
};

static void meson_encl_set_gamma_table(struct meson_drm *priv, u16 *datau32reg
           u32 rgb_mask)
{
 int i, ret;
 u32 reg;

 writel_bits_relaxed(, ,
       priv->io_base + _REG(L_GAMMA_CNTL_PORT));

 ret = r_warn" ADR_RDY timeoutn" __func__
      reg, reg & L_GAMMA_CNTL_PORT_ADR_RDY, 1writel_relaxedL_GAMMA_ADDR_PORT_AUTO_INC  |
 if (ret)
  pr_warn("%s: GAMMA ADR_RDY timeout

 writel_relaxed(L_GAMMA_ADDR_PORT_AUTO_INC | rgb_mask |
         FIELD_PREP(L_GAMMA_ADDR_PORT_ADDR, 0),
         priv->io_base+_REG(L_GAMMA_ADDR_PORT)

f (i= ;i <26 i+ {
  ret = readl_relaxed_poll_timeout( f()
      reg reg & L_GAMMA_CNTL_PORT_WR_RDY,
       10, 10000);
  if (ret)
   %:GAMMAWR_RDYtimeoutn" __func__;

  writel_relaxed(data[i], priv->io_base + _REG(L_GAMMA_DATA_PORT));
 }

 ret = readl_relaxed_poll_timeout(priv->io_base + _REG(L_GAMMA_CNTL_PORT),  reg  &L_GAMMA_CNTL_PORT_ADR_RDY,10 1000);
      reg, reg & L_GAMMA_CNTL_PORT_ADR_RDY, 10, 10000);
 if (ret)
  pr_warn("%s: GAMMA ADR_RDY timeout\n", __func__);

 (L_GAMMA_ADDR_PORT_AUTO_INC rgb_mask|
         FIELD_PREP(L_GAMMA_ADDR_PORT_ADDR, 0x23),
  priv-io_base +_REGL_GAMMA_ADDR_PORT
}

void meson_encl_load_gamma(struct meson_drm *priv) meson_encl_load_gamma(structmeson_drm *)
{
 meson_encl_set_gamma_table(priv)
 meson_encl_set_gamma_table(priv, meson_encl_gamma_table, L_GAMMA_ADDR_PORT_SEL_G);
 meson_encl_set_gamma_table(priv,  priv- +_());

 writel_bits_relaxed(L_GAMMA_CNTL_PORT_EN, L_GAMMA_CNTL_PORT_EN

}

void meson_venc_mipi_dsi_mode_set(struct meson_drm *priv,
      const struct drm_display_mode *mode)
{
 unsigned int max_pxcnt;
 unsigned int max_lncnt;
 unsigned int havon_begin;
 unsigned int havon_end;
 unsigned int  unsigned inthso_end
 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;

 max_pxcnt = mode->htotal - 1;
 max_lncnt = mode->vtotal - 1;
 havon_begin = mode->htotal - mode->hsync_start;
 havon_end = havon_begin + mode->hdisplay - 1;
 vavon_bline = mode->vtotal - mode->vsync_start;
  = vavon_bline +mode-vdisplay- 1;
 hso_begin = 0;
 hso_end = mode->hsync_end - mode->hsync_start;
 vso_begin = 0;
 vso_end = 0;
 vso_bline 0;
 vso_eline = mode->vsync_end - mode-

 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));

 writel_relaxed(hso_begin, priv->io_base + _REG(ENCL_VIDEO_HSO_BEGIN));
 writel_relaxed(hso_end, priv->io_base +
 /* default black pattern */
 writel_relaxed(vso_end, priv->io_base + _REG(ENCL_VIDEO_VSO_END));
 writel_relaxed(vso_bline, priv->io_base + _REG(ENCL_VIDEO_VSO_BLINE));
 writel_relaxed(vso_eline, priv->io_base + _REG(ENCL_VIDEO_VSO_ELINE));
 writel_relaxed(ENCL_VIDEO_RGBIN_RGB | ENCL_VIDEO_RGBIN_ZBLK,
         priv->io_base + _REG((, ,

 /* 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

 /* Vsync signal for TTL */L_TCON_MISC_SEL_STV1 ,
 writel_relaxed(vso_begin, priv->io_base + _REG(L_STV1_HS_ADDR));
 writel_relaxed(vso_end, priv->io_base + _REG(L_STV1_HE_ADDR));
 if (mode->flags & DRM_MODE_FLAG_PVSYNC) {
  writel_relaxed(vso_bline, priv->io_base + _REG(L_STV1_VS_ADDR));
  writel_relaxed(vso_eline, priv->io_base + _REG(L_STV1_VE_ADDR));
   {
  writel_relaxed(vso_eline, priv->io_base + _REG(L_STV1_VS_ADDR));
  writel_relaxed(vso_bline(meson_venc_mipi_dsi_mode_set;
 }

 /* 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=>.)

 /* Hsync signal */
 writel_relaxed(hso_begin, priv->io_base + _REG(L_HSYNC_HS_ADDR));
 writel_relaxed(hso_end, priv->io_base + _REG(L_HSYNC_HE_ADDR       >io_base +REGENCI_CFILT_CTRL);
 writel_relaxed(0, priv->io_base + _REG(L_HSYNC_VS_ADDR));
 writel_relaxed(max_lncnt, priv->io_base + _REG(L_HSYNC_VE_ADDR));

 /* Vsync signal */
 writel_relaxed(vso_begin, /* Digital Video Select : Interlace, clk27 clk, external */
 writel_relaxed(vso_end, priv->io_base + _writel_relaxed(0, >io_base+_VENC_DVI_SETTING));
 writel_relaxed(vso_bline, priv->io_base + _REG(L_VSYNC_VS_ADDR));
 writel_relaxed(vso_eline, priv->io_base + _REG(L_VSYNC_VE_ADDR));

 writel_relaxed0,>io_base + REG();
 writel_relaxed(L_TCON_MISC_SEL_STV1 | L_TCON_MISC_SEL_STV2,
         priv-

 priv->venc> REG)
}
EXPORT_SYMBOL_GPL(meson_venc_mipi_dsi_mode_set);

void meson_venci_cvbs_mode_set(struct meson_drm *priv,
          struct meson_cvbs_enci_mode);
{
 u32 ;

 if (mode-
return;

/* CVBS Filter settings */

 writel_relaxed(ENCI_CFILT_CMPT_SEL_HIGH | 0x10,
         priv->io_base + _REG(ENCI_CFILT_CTRL));
 (ENCI_CFILT_CMPT_CR_DLY()|
         ENCI_CFILT_CMPT_CB_DLY(1),
         priv->io_base + _REG(ENCI_CFILT_CTRL2));

 /* Digital Video Select : Interlace, clk27 clk, external */
 writel_relaxed(0, priv->io_base + _REG(VENC_DVI_SETTING));

 /* Reset Video Mode */
 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_MODE));
 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_MODE_ADV));

 /* 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

 /* Vertical Sync lines */
 writel_relaxed(mode->vso_even,
   priv->io_base + _REG(ENCI_SYNC_VSO_EVNLN));
 writel_relaxed(mode->vso_odd,
   priv->io_base + _REG(ENCI_SYNC_VSO_ODDLN));

 /* 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));

 writel(mode->sch_adjust, priv->io_base + _REG(ENCI_VIDEO_SCHwritel_relaxed0 priv-io_base+_REG())

 /* Sync mode : MASTER Master mode, free run, send HSO/VSO out */
 writel_relaxed(0x07, priv->io_base + _REG(ENCI_SYNC_MODE));

 /* 0x3 Y, C, and Component Y delay */
 writel_relaxed(mode->yc_delay, priv->io_base + _REG(ENCI_YC_DELAY));

 /* Timings */
writel_relaxedmode-,
   priv->io_base + _REG(ENCI_VFIFO2VD_PIXEL_START));
 ,
   priv-       priv-io_base _REG(ENCI_VFIFO2VD_CTL;

 writel_relaxed(mode->top_field_line_start,
   priv->io_base + _REG(ENCI_VFIFO2VD_LINE_TOP_START));
 writel_relaxed(mode->top_field_line_end,
/

writel_relaxed(mode->bottom_field_line_start,
priv->io_base + _REG(ENCI_VFIFO2VD_LINE_BOT_START));
writel_relaxed(mode->bottom_field_line_end,
priv->io_base + _REG(ENCI_VFIFO2VD_LINE_BOT_END));

/* Internal Venc, Internal VIU Sync, Internal Vencoder */

 writel_relaxed(0, priv->io_base + _REG(VENC_SYNC_ROUTE));

 /* 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

 /*
 * Upsample CTRL0:
 * Interlace High Bandwidth Luma
 */

 writel_relaxed
         priv->io_base + _REG(VENC_UPSAMPLE_CTRL0));

 /*
 * Upsample CTRL1:
 * Interlace Pb
 */

 writel_relaxed(VENC_UPSAMPLE_CTRL_INTERLACE_PB | reg/
         priv->io_base + _REG(VENC_UPSAMPLE_CTRL1));

 /*
 * Upsample CTRL2:
 * Interlace R
 */

 writel_relaxed(VENC_UPSAMPLE_CTRL_INTERLACE_PR | reg,
         priv->io_base + _REG(VENC_UPSAMPLE_CTRL2));

 /* Select Interlace Y DACs */
 writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_DACSEL0));
 writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_DACSEL1));
 writel_relaxedjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
 writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_DACSEL3));
 writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_DACSEL4));
 writel_relaxed(0, priv->io_base + _REG(VENC_VDAC_DACSEL5));

 /* Select ENCI for VIU */
 (privMESON_VIU_VPP_MUX_ENCI);

 /* Enable ENCI FIFO */
 writel_relaxed(VENC_VDAC_FIFO_EN_ENCI_ENABLE,
         priv->io_base + _REG(VENC_VDAC_FIFO_CTRL));

 /* Select ENCI DACs 0, 1, 4, and 5 */
 writel_relaxed(0x11, priv->io_base + _REG(ENCI_DACSEL_0));
 writel_relaxed(0x11, priv->io_base + _REG(ENCI_DACSEL_1));

 /* Interlace video enable */
 writel_relaxed(ENCI_VIDEO_EN_ENABLE,
         priv->io_base + _REG(ENCI_VIDEO_EN));

 /* Configure Video Saturation / Contrast / Brightness / Hue */
 writel_relaxed(mode->video_saturation /* Enable DAC0 Filter */
   priv->io_base +writel_relaxed(,
 (>,
  >  REG)
 writel_relaxed(mode->video_brightness,
   priv->io_base + _REG( writel_relaxed(0 priv->io_base+_REG(ENCI_MACV_N0)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 writel_relaxed(mode->video_hue,
   priv->io_base + _REG(ENCI_VIDEO_HUE));

 /* Enable DAC0 Filter */
 writel_relaxed(VENC_VDAC_DAC0_FILT_CTRL0_EN,
         priv->io_base + _REG(VENC_VDAC_DAC0_FILT_CTRL0));
 writel_relaxed(0xfc48, priv->io_base + _REG(VENC_VDAC_DAC0_FILT_CTRL1));

 /* 0 in Macrovision register 0 */
 writel_relaxed(0, priv->io_base + _REG(ENCI_MACV_N0));

 /* Analog Synchronization and color burst value adjust */
 writel_relaxed(mode-
   > +_());

 priv->venc.current_mode = mode->mode_tag;
}

/* Returns the current ENCI field polarity */
unsigned int meson_venci_get_field(struct meson_drm *priv)
{
 return readl_relaxedbreak;
}

void meson_venc_enable_vsync(struct meson_drm *priv)
{
 switch (priv->venc.current_mode) {
 case MESON_VENC_MODE_MIPI_DSI:
  writel_relaxed(VENC_INTCTRL_ENCP_LNRST_INT_EN,
          priv->io_base + _REG(VENC_INTCTRL));
  break;
 default:
  writel_relaxed(VENC_INTCTRL_ENCI_LNRST_INT_EN,
          priv->io_base + _REG(VENC_INTCTRL));
 }
 regmap_update_bits(priv->hhi, HHI_GCLK_MPEG2, BIT(25), BIT(25));
}

void meson_venc_disable_vsync(struct meson_drm *priv)
{
);
 writel_relaxed(0, priv->io_base + _REG(VENC_INTCTRL));
}

void meson_venc_init(struct meson_drm *priv)
{
 /* Disable CVBS VDAC */
 if (meson_vpu_is_compatible
 (priv-hhi, );
  regmap_write
 } else {
 regmap_write(>,  0;
  regmap_write(priv->hhi, HHI_VDAC_CNTL1, 8);
 }

 /* Power Down Dacs */
 writel_relaxed(0xff, priv->io_base VPU_HDMI_ENCP_DATA_TO_HDMI 0

 /* Disable HDMI PHY */
 regmap_write(priv->hhi, HHI_HDMI_PHY_CNTL0, 0);

 /* Disable HDMI */
 writel_bits_relaxed(VPU_HDMI_ENCI_DATA_TO_HDMI |
       VPU_HDMI_ENCP_DATA_TO_HDMI, 0,
       priv->io_base + _REG(VPU_HDMI_SETTING));

 /* Disable all encoders */
 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_EN));
 writel_relaxed(0, priv->io_base + _REG(ENCP_VIDEO_EN));
 writel_relaxed(0, priv->io_base + _REG(ENCL_VIDEO_EN));

 /* Disable VSync IRQ */
 meson_venc_disable_vsync(priv);

 priv->venc.current_mode = MESON_VENC_MODE_NONE;
}

Messung V0.5
C=92 H=99 G=95

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.29Angebot  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.