{
WARN_ON(!mutex_is_locked(&dc->lock));
WARN_ON(vfp < dc->mode.v_ref_to_sync + 1);
+ /* It's very unlikely that active vfp will need to
+ * be changed outside of vrr context */
+ WARN_ON(!dc->out->vrr || !dc->out->vrr->capability);
tegra_dc_writel(dc, WRITE_MUX_ACTIVE | READ_MUX_ACTIVE,
DC_CMD_STATE_ACCESS);
{
struct tegra_vrr *vrr = dc->out->vrr;
- if (!vrr || !vrr->enable)
+ if (!vrr || !vrr->capability)
+ return;
+
+ if (!vrr->enable)
return;
tegra_dc_set_act_vfp(dc, MAX_VRR_V_FRONT_PORCH);
struct timespec time_now;
struct tegra_vrr *vrr = dc->out->vrr;
- if (!vrr || (!vrr->enable && !vrr->lastenable))
+ if (!vrr || !vrr->capability ||
+ (!vrr->enable && !vrr->lastenable))
return;
getnstimeofday(&time_now);
{
struct tegra_vrr *vrr = dc->out->vrr;
- if (!vrr || (!vrr->enable && !vrr->fe_intr_req))
+ if (!vrr || !vrr->capability)
+ return;
+
+ if (!vrr->enable && !vrr->fe_intr_req)
return;
/* Decrement frame end interrupt refcount previously
if (dc->out && dc->out->prepoweroff)
dc->out->prepoweroff();
- if (dc->out_ops && dc->out_ops->vrr_enable) {
+ if (dc->out_ops && dc->out_ops->vrr_enable &&
+ dc->out->vrr && dc->out->vrr->capability) {
dc->out_ops->vrr_enable(dc, 0);
/* TODO: Fix properly. Bug 1644102. */
tegra_dc_set_act_vfp(dc, dc->mode.v_front_porch);
*
* Copyright (C) 2010 Google, Inc.
*
- * Copyright (c) 2010-2015, NVIDIA CORPORATION, All rights reserved.
+ * Copyright (c) 2010-2016, NVIDIA CORPORATION, All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
struct timespec time_now;
struct tegra_vrr *vrr = dc->out->vrr;
- if (!vrr) return;
+ if (!vrr || !vrr->capability)
+ return;
if (vrr->enable) {
vrr->lastenable = 1;
{
struct tegra_vrr *vrr = dc->out->vrr;
- if (!vrr) return;
+ if (!vrr || !vrr->capability)
+ return;
if (vrr->enable) {
if (dc->out->type == TEGRA_DC_OUT_DSI)