optc
int optc, what;
while ((optc = nextopt("HSatfdsmcnuvlbpwko")) != '\0')
switch (optc) {
what = optc;
optc1_apply_front_porch_workaround(optc, &patched_crtc_timing);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
optc1_get_position(optc, &position);
static void optc1_enable_stereo(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_program_stereo(struct timing_generator *optc,
optc1_enable_stereo(optc, timing, flags);
optc1_disable_stereo(optc);
bool optc1_is_stereo_left_eye(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_read_otg_state(struct optc *optc1,
vertical_line_start = asic_blank_end - optc->dlg_otg_param.vstartup_start + 1;
bool optc1_get_otg_active_size(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_clear_optc_underflow(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_tg_init(struct timing_generator *optc)
optc1_set_blank_data_double_buffer(optc, true);
optc1_clear_optc_underflow(optc);
bool optc1_is_tg_enabled(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
bool optc1_is_optc_underflow_occurred(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
bool optc1_configure_crc(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
if (!optc1_is_tg_enabled(optc))
struct timing_generator *optc,
bool optc1_get_crc(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void dcn10_timing_generator_init(struct optc *optc1)
uint32_t vsync_line = get_start_vline(optc, dc_crtc_timing);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
optc1_apply_front_porch_workaround(optc, &patched_crtc_timing);
vertical_line_start = asic_blank_end - optc->dlg_otg_param.vstartup_start + 1;
if (optc->dlg_otg_param.signal == SIGNAL_TYPE_DISPLAY_PORT ||
optc->dlg_otg_param.signal == SIGNAL_TYPE_DISPLAY_PORT_MST ||
optc->dlg_otg_param.signal == SIGNAL_TYPE_EDP) {
if (optc->dlg_otg_param.vstartup_start > asic_blank_end)
v_fp2 = optc->dlg_otg_param.vstartup_start > asic_blank_end;
if ((optc->dlg_otg_param.vstartup_start/2)*2 > asic_blank_end)
optc1_program_global_sync(optc);
void optc1_set_blank_data_double_buffer(struct timing_generator *optc, bool enable)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
static void optc1_unblank_crtc(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
optc1_set_blank_data_double_buffer(optc, true);
static void optc1_blank_crtc(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
optc1_set_blank_data_double_buffer(optc, false);
void optc1_set_blank(struct timing_generator *optc,
optc1_blank_crtc(optc);
optc1_unblank_crtc(optc);
bool optc1_is_blanked(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_enable_optc_clock(struct timing_generator *optc, bool enable)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
static bool optc1_enable_crtc(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
OPTC_SRC_SEL, optc->inst);
bool optc1_disable_crtc(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct timing_generator *optc,
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
uint32_t optc1_get_vblank_counter(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_lock(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
OTG_MASTER_UPDATE_LOCK_SEL, optc->inst);
if (optc->ctx->dce_environment != DCE_ENV_FPGA_MAXIMUS)
void optc1_unlock(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_get_position(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct timing_generator *optc)
bool optc1_is_counter_moving(struct timing_generator *optc)
optc->funcs->get_position(optc, &position1);
optc->funcs->get_position(optc, &position2);
struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct optc *optc1 = DCN10TG_FROM_TG(optc);
void optc1_disable_reset_trigger(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
if (optc->dlg_otg_param.vstartup_start == 0) {
void optc1_enable_reset_trigger(struct timing_generator *optc, int source_tg_inst)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
VSTARTUP_START, optc->dlg_otg_param.vstartup_start);
void optc1_wait_for_state(struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
VUPDATE_OFFSET, optc->dlg_otg_param.vupdate_offset,
VUPDATE_WIDTH, optc->dlg_otg_param.vupdate_width);
struct timing_generator *optc,
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
VREADY_OFFSET, optc->dlg_otg_param.vready_offset);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
static void optc1_disable_stereo(struct timing_generator *optc)
struct optc *optc1 = DCN10TG_FROM_TG(optc);
struct timing_generator *optc,
struct optc *optc1 = DCN10TG_FROM_TG(optc);
static uint32_t get_start_vline(struct timing_generator *optc, const struct dc_crtc_timing *dc_crtc_timing)
container_of(tg, struct optc, base)
void dcn10_timing_generator_init(struct optc *optc);
void optc1_read_otg_state(struct optc *optc1,
struct timing_generator *optc,
struct timing_generator *optc,
void optc1_program_vline_interrupt(struct timing_generator *optc,
struct timing_generator *optc);
bool optc1_disable_crtc(struct timing_generator *optc);
bool optc1_is_counter_moving(struct timing_generator *optc);
void optc1_get_position(struct timing_generator *optc,
uint32_t optc1_get_vblank_counter(struct timing_generator *optc);
struct timing_generator *optc,
struct timing_generator *optc,
void optc1_wait_for_state(struct timing_generator *optc,
void optc1_set_blank(struct timing_generator *optc,
bool optc1_is_blanked(struct timing_generator *optc);
struct timing_generator *optc,
struct timing_generator *optc);
void optc1_enable_reset_trigger(struct timing_generator *optc, int source_tg_inst);
void optc1_disable_reset_trigger(struct timing_generator *optc);
void optc1_lock(struct timing_generator *optc);
void optc1_unlock(struct timing_generator *optc);
void optc1_enable_optc_clock(struct timing_generator *optc, bool enable);
struct timing_generator *optc,
struct timing_generator *optc,
void optc1_program_stereo(struct timing_generator *optc,
bool optc1_is_stereo_left_eye(struct timing_generator *optc);
void optc1_clear_optc_underflow(struct timing_generator *optc);
void optc1_tg_init(struct timing_generator *optc);
bool optc1_is_tg_enabled(struct timing_generator *optc);
bool optc1_is_optc_underflow_occurred(struct timing_generator *optc);
void optc1_set_blank_data_double_buffer(struct timing_generator *optc, bool enable);
bool optc1_get_otg_active_size(struct timing_generator *optc,
struct timing_generator *optc,
bool optc1_configure_crc(struct timing_generator *optc,
bool optc1_get_crc(struct timing_generator *optc,
struct optc *tgn10 =
kzalloc(sizeof(struct optc), GFP_KERNEL);
void (*program_vline_interrupt)(struct timing_generator *optc,
bool (*get_otg_active_size)(struct timing_generator *optc,
int optc;
while ((optc = getopt(argc, argv, "lh:m:c:e:p:foq")) != -1) {
switch (optc) {
int optc, newmode, arg;
optc = 0;
for (arg = 1; arg < argc && *argv[arg] == '-'; arg++, optc++) {
optc--; /* this option isn't exclusive */
optc--; /* this option isn't exclusive */
optc--; /* this option isn't exclusive */
optc--; /* nor is the argument */
optc--; /* this option isn't exclusive */
if (optc > 1) {