diff mbox

[1/5] drm/i915: Separate cherryview from valleyview

Message ID 1449692975-14803-1-git-send-email-wayne.boyer@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wayne Boyer Dec. 9, 2015, 8:29 p.m. UTC
The cherryview device shares many characteristics with the valleyview
device.  When support was added to the driver for cherryview, the
corresponding device info structure included .is_valleyview = 1.
This is not correct and leads to some confusion.

This patch changes .is_valleyview to .is_cherryview in the cherryview
device info structure and simplifies the IS_CHERRYVIEW macro.
Then where appropriate, instances of IS_VALLEYVIEW are replaced with
IS_VALLEYVIEW || IS_CHERRYVIEW or equivalent.

v2: Use IS_VALLEYVIEW || IS_CHERRYVIEW instead of defining a new macro.
    Also add followup patches to fix issues discovered during the first
    review. (Ville)
v3: Fix some style issues and one gen check. Remove CRT related changes
    as CRT is not supported on CHV. (Imre, Ville)
v4: Make a few more optimizations. (Ville)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Wayne Boyer <wayne.boyer@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c     | 68 ++++++++++++++++-----------------
 drivers/gpu/drm/i915/i915_dma.c         | 11 ++----
 drivers/gpu/drm/i915/i915_drv.c         | 10 ++---
 drivers/gpu/drm/i915/i915_drv.h         | 16 +++++---
 drivers/gpu/drm/i915/i915_gem.c         |  4 +-
 drivers/gpu/drm/i915/i915_gem_context.c |  2 +-
 drivers/gpu/drm/i915/i915_gem_gtt.c     |  3 +-
 drivers/gpu/drm/i915/i915_irq.c         |  8 ++--
 drivers/gpu/drm/i915/i915_suspend.c     |  4 +-
 drivers/gpu/drm/i915/i915_sysfs.c       | 10 ++---
 drivers/gpu/drm/i915/intel_audio.c      |  7 ++--
 drivers/gpu/drm/i915/intel_display.c    | 54 ++++++++++++++------------
 drivers/gpu/drm/i915/intel_dp.c         | 40 +++++++++----------
 drivers/gpu/drm/i915/intel_dsi.c        | 14 +++----
 drivers/gpu/drm/i915/intel_dsi_pll.c    |  6 +--
 drivers/gpu/drm/i915/intel_hdmi.c       |  4 +-
 drivers/gpu/drm/i915/intel_hotplug.c    |  2 +-
 drivers/gpu/drm/i915/intel_i2c.c        |  2 +-
 drivers/gpu/drm/i915/intel_panel.c      |  2 +-
 drivers/gpu/drm/i915/intel_pm.c         |  8 ++--
 drivers/gpu/drm/i915/intel_psr.c        |  6 +--
 drivers/gpu/drm/i915/intel_sprite.c     |  4 +-
 drivers/gpu/drm/i915/intel_uncore.c     |  4 +-
 23 files changed, 147 insertions(+), 142 deletions(-)

Comments

Ville Syrjälä Dec. 9, 2015, 8:59 p.m. UTC | #1
On Wed, Dec 09, 2015 at 12:29:35PM -0800, Wayne Boyer wrote:
> The cherryview device shares many characteristics with the valleyview
> device.  When support was added to the driver for cherryview, the
> corresponding device info structure included .is_valleyview = 1.
> This is not correct and leads to some confusion.
> 
> This patch changes .is_valleyview to .is_cherryview in the cherryview
> device info structure and simplifies the IS_CHERRYVIEW macro.
> Then where appropriate, instances of IS_VALLEYVIEW are replaced with
> IS_VALLEYVIEW || IS_CHERRYVIEW or equivalent.
> 
> v2: Use IS_VALLEYVIEW || IS_CHERRYVIEW instead of defining a new macro.
>     Also add followup patches to fix issues discovered during the first
>     review. (Ville)
> v3: Fix some style issues and one gen check. Remove CRT related changes
>     as CRT is not supported on CHV. (Imre, Ville)
> v4: Make a few more optimizations. (Ville)
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Wayne Boyer <wayne.boyer@intel.com>

lgtm
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_debugfs.c     | 68 ++++++++++++++++-----------------
>  drivers/gpu/drm/i915/i915_dma.c         | 11 ++----
>  drivers/gpu/drm/i915/i915_drv.c         | 10 ++---
>  drivers/gpu/drm/i915/i915_drv.h         | 16 +++++---
>  drivers/gpu/drm/i915/i915_gem.c         |  4 +-
>  drivers/gpu/drm/i915/i915_gem_context.c |  2 +-
>  drivers/gpu/drm/i915/i915_gem_gtt.c     |  3 +-
>  drivers/gpu/drm/i915/i915_irq.c         |  8 ++--
>  drivers/gpu/drm/i915/i915_suspend.c     |  4 +-
>  drivers/gpu/drm/i915/i915_sysfs.c       | 10 ++---
>  drivers/gpu/drm/i915/intel_audio.c      |  7 ++--
>  drivers/gpu/drm/i915/intel_display.c    | 54 ++++++++++++++------------
>  drivers/gpu/drm/i915/intel_dp.c         | 40 +++++++++----------
>  drivers/gpu/drm/i915/intel_dsi.c        | 14 +++----
>  drivers/gpu/drm/i915/intel_dsi_pll.c    |  6 +--
>  drivers/gpu/drm/i915/intel_hdmi.c       |  4 +-
>  drivers/gpu/drm/i915/intel_hotplug.c    |  2 +-
>  drivers/gpu/drm/i915/intel_i2c.c        |  2 +-
>  drivers/gpu/drm/i915/intel_panel.c      |  2 +-
>  drivers/gpu/drm/i915/intel_pm.c         |  8 ++--
>  drivers/gpu/drm/i915/intel_psr.c        |  6 +--
>  drivers/gpu/drm/i915/intel_sprite.c     |  4 +-
>  drivers/gpu/drm/i915/intel_uncore.c     |  4 +-
>  23 files changed, 147 insertions(+), 142 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index a8721fc..fff31253 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1142,8 +1142,34 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
>  			   MEMSTAT_VID_SHIFT);
>  		seq_printf(m, "Current P-state: %d\n",
>  			   (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT);
> -	} else if (IS_GEN6(dev) || (IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) ||
> -		   IS_BROADWELL(dev) || IS_GEN9(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
> +		u32 freq_sts;
> +
> +		mutex_lock(&dev_priv->rps.hw_lock);
> +		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
> +		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
> +		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
> +
> +		seq_printf(m, "actual GPU freq: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
> +
> +		seq_printf(m, "current GPU freq: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
> +
> +		seq_printf(m, "max GPU freq: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
> +
> +		seq_printf(m, "min GPU freq: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
> +
> +		seq_printf(m, "idle GPU freq: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
> +
> +		seq_printf(m,
> +			   "efficient (RPe) frequency: %d MHz\n",
> +			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
> +		mutex_unlock(&dev_priv->rps.hw_lock);
> +	} else if (INTEL_INFO(dev)->gen >= 6) {
>  		u32 rp_state_limits;
>  		u32 gt_perf_status;
>  		u32 rp_state_cap;
> @@ -1284,33 +1310,6 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
>  		seq_printf(m,
>  			   "efficient (RPe) frequency: %d MHz\n",
>  			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
> -	} else if (IS_VALLEYVIEW(dev)) {
> -		u32 freq_sts;
> -
> -		mutex_lock(&dev_priv->rps.hw_lock);
> -		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
> -		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
> -		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
> -
> -		seq_printf(m, "actual GPU freq: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
> -
> -		seq_printf(m, "current GPU freq: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
> -
> -		seq_printf(m, "max GPU freq: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
> -
> -		seq_printf(m, "min GPU freq: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
> -
> -		seq_printf(m, "idle GPU freq: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
> -
> -		seq_printf(m,
> -			   "efficient (RPe) frequency: %d MHz\n",
> -			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
> -		mutex_unlock(&dev_priv->rps.hw_lock);
>  	} else {
>  		seq_puts(m, "no P-state info available\n");
>  	}
> @@ -1602,7 +1601,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
>  	struct drm_info_node *node = m->private;
>  	struct drm_device *dev = node->minor->dev;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		return vlv_drpc_info(m);
>  	else if (INTEL_INFO(dev)->gen >= 6)
>  		return gen6_drpc_info(m);
> @@ -1743,7 +1742,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
>  		sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN;
>  	else if (IS_PINEVIEW(dev))
>  		sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN;
> -	else if (IS_VALLEYVIEW(dev))
> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN;
>  
>  	intel_runtime_pm_put(dev_priv);
> @@ -3983,7 +3982,7 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
>  		ret = i8xx_pipe_crc_ctl_reg(&source, &val);
>  	else if (INTEL_INFO(dev)->gen < 5)
>  		ret = i9xx_pipe_crc_ctl_reg(dev, pipe, &source, &val);
> -	else if (IS_VALLEYVIEW(dev))
> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		ret = vlv_pipe_crc_ctl_reg(dev, pipe, &source, &val);
>  	else if (IS_GEN5(dev) || IS_GEN6(dev))
>  		ret = ilk_pipe_crc_ctl_reg(&source, &val);
> @@ -4052,7 +4051,7 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
>  
>  		if (IS_G4X(dev))
>  			g4x_undo_pipe_scramble_reset(dev, pipe);
> -		else if (IS_VALLEYVIEW(dev))
> +		else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  			vlv_undo_pipe_scramble_reset(dev, pipe);
>  		else if (IS_HASWELL(dev) && pipe == PIPE_A)
>  			hsw_trans_edp_pipe_A_crc_wa(dev, false);
> @@ -4442,7 +4441,8 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
>  		 * - WM1+ latency values in 0.5us units
>  		 * - latencies are in us on gen9/vlv/chv
>  		 */
> -		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev))
> +		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev) ||
> +		    IS_CHERRYVIEW(dev))
>  			latency *= 10;
>  		else if (level > 0)
>  			latency *= 5;
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index a81c766..083e2c0 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -256,7 +256,7 @@ intel_setup_mchbar(struct drm_device *dev)
>  	u32 temp;
>  	bool enabled;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		return;
>  
>  	dev_priv->mchbar_need_disable = false;
> @@ -779,7 +779,7 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>  		info->num_sprites[PIPE_A] = 2;
>  		info->num_sprites[PIPE_B] = 2;
>  		info->num_sprites[PIPE_C] = 1;
> -	} else if (IS_VALLEYVIEW(dev))
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		for_each_pipe(dev_priv, pipe)
>  			info->num_sprites[pipe] = 2;
>  	else
> @@ -791,7 +791,7 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>  		info->num_pipes = 0;
>  	} else if (info->num_pipes > 0 &&
>  		   (INTEL_INFO(dev)->gen == 7 || INTEL_INFO(dev)->gen == 8) &&
> -		   !IS_VALLEYVIEW(dev)) {
> +		   !(IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))) {
>  		u32 fuse_strap = I915_READ(FUSE_STRAP);
>  		u32 sfuse_strap = I915_READ(SFUSE_STRAP);
>  
> @@ -836,9 +836,6 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>  
>  static void intel_init_dpio(struct drm_i915_private *dev_priv)
>  {
> -	if (!IS_VALLEYVIEW(dev_priv))
> -		return;
> -
>  	/*
>  	 * IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C),
>  	 * CHV x1 PHY (DP/HDMI D)
> @@ -847,7 +844,7 @@ static void intel_init_dpio(struct drm_i915_private *dev_priv)
>  	if (IS_CHERRYVIEW(dev_priv)) {
>  		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2;
>  		DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO;
> -	} else {
> +	} else if (IS_VALLEYVIEW(dev_priv)) {
>  		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO;
>  	}
>  }
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index e6935f1..1fbbe8e 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -311,7 +311,7 @@ static const struct intel_device_info intel_cherryview_info = {
>  	.gen = 8, .num_pipes = 3,
>  	.need_gfx_hws = 1, .has_hotplug = 1,
>  	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
> -	.is_valleyview = 1,
> +	.is_cherryview = 1,
>  	.display_mmio_offset = VLV_DISPLAY_BASE,
>  	GEN_CHV_PIPEOFFSETS,
>  	CURSOR_OFFSETS,
> @@ -802,7 +802,7 @@ static int i915_drm_resume_early(struct drm_device *dev)
>  
>  	pci_set_master(dev->pdev);
>  
> -	if (IS_VALLEYVIEW(dev_priv))
> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		ret = vlv_resume_prepare(dev_priv, false);
>  	if (ret)
>  		DRM_ERROR("Resume prepare failed: %d, continuing anyway\n",
> @@ -1532,7 +1532,7 @@ static int intel_runtime_resume(struct device *device)
>  		ret = bxt_resume_prepare(dev_priv);
>  	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
>  		hsw_disable_pc8(dev_priv);
> -	else if (IS_VALLEYVIEW(dev_priv))
> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		ret = vlv_resume_prepare(dev_priv, true);
>  
>  	/*
> @@ -1549,7 +1549,7 @@ static int intel_runtime_resume(struct device *device)
>  	 * power well, so hpd is reinitialized from there. For
>  	 * everyone else do it here.
>  	 */
> -	if (!IS_VALLEYVIEW(dev_priv))
> +	if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
>  		intel_hpd_init(dev_priv);
>  
>  	intel_enable_gt_powersave(dev);
> @@ -1574,7 +1574,7 @@ static int intel_suspend_complete(struct drm_i915_private *dev_priv)
>  		ret = bxt_suspend_complete(dev_priv);
>  	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
>  		ret = hsw_suspend_complete(dev_priv);
> -	else if (IS_VALLEYVIEW(dev_priv))
> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		ret = vlv_suspend_complete(dev_priv);
>  	else
>  		ret = 0;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index f1a8a53..3899f23 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -763,6 +763,7 @@ struct intel_csr {
>  	func(is_crestline) sep \
>  	func(is_ivybridge) sep \
>  	func(is_valleyview) sep \
> +	func(is_cherryview) sep \
>  	func(is_haswell) sep \
>  	func(is_skylake) sep \
>  	func(is_broxton) sep \
> @@ -2455,9 +2456,9 @@ struct drm_i915_cmd_table {
>  				 INTEL_DEVID(dev) == 0x0152 || \
>  				 INTEL_DEVID(dev) == 0x015a)
>  #define IS_VALLEYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview)
> -#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
> +#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_cherryview)
>  #define IS_HASWELL(dev)	(INTEL_INFO(dev)->is_haswell)
> -#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
> +#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_cherryview && IS_GEN8(dev))
>  #define IS_SKYLAKE(dev)	(INTEL_INFO(dev)->is_skylake)
>  #define IS_BROXTON(dev)		(INTEL_INFO(dev)->is_broxton)
>  #define IS_KABYLAKE(dev)	(INTEL_INFO(dev)->is_kabylake)
> @@ -2584,7 +2585,8 @@ struct drm_i915_cmd_table {
>  				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
>  #define HAS_RUNTIME_PM(dev)	(IS_GEN6(dev) || IS_HASWELL(dev) || \
>  				 IS_BROADWELL(dev) || IS_VALLEYVIEW(dev) || \
> -				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
> +				 IS_CHERRYVIEW(dev) || IS_SKYLAKE(dev) || \
> +				 IS_KABYLAKE(dev))
>  #define HAS_RC6(dev)		(INTEL_INFO(dev)->gen >= 6)
>  #define HAS_RC6p(dev)		(INTEL_INFO(dev)->gen == 6 || IS_IVYBRIDGE(dev))
>  
> @@ -2597,7 +2599,8 @@ struct drm_i915_cmd_table {
>  				    INTEL_INFO(dev)->gen >= 8)
>  
>  #define HAS_CORE_RING_FREQ(dev)	(INTEL_INFO(dev)->gen >= 6 && \
> -				 !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
> +				 !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && \
> +				 !IS_BROXTON(dev))
>  
>  #define INTEL_PCH_DEVICE_ID_MASK		0xff00
>  #define INTEL_PCH_IBX_DEVICE_ID_TYPE		0x3b00
> @@ -2620,7 +2623,8 @@ struct drm_i915_cmd_table {
>  #define HAS_PCH_NOP(dev) (INTEL_PCH_TYPE(dev) == PCH_NOP)
>  #define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE)
>  
> -#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || IS_VALLEYVIEW(dev))
> +#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || \
> +			       IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  
>  /* DPF == dynamic parity feature */
>  #define HAS_L3_DPF(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev))
> @@ -3511,7 +3515,7 @@ __raw_write(64, q)
>  
>  static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
>  {
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		return VLV_VGACNTRL;
>  	else if (INTEL_INFO(dev)->gen >= 5)
>  		return CPU_VGACNTRL;
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index dfaf25b..e96e496 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4838,7 +4838,7 @@ int i915_gem_init(struct drm_device *dev)
>  
>  	mutex_lock(&dev->struct_mutex);
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/* VLVA0 (potential hack), BIOS isn't actually waking us */
>  		I915_WRITE(VLV_GTLC_WAKE_CTRL, VLV_GTLC_ALLOWWAKEREQ);
>  		if (wait_for((I915_READ(VLV_GTLC_PW_STATUS) &
> @@ -4963,7 +4963,7 @@ i915_gem_load(struct drm_device *dev)
>  
>  	dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL;
>  
> -	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev))
> +	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
>  		dev_priv->num_fence_regs = 32;
>  	else if (INTEL_INFO(dev)->gen >= 4 || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
>  		dev_priv->num_fence_regs = 16;
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index 43761c5..4b1161d 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -190,7 +190,7 @@ i915_gem_alloc_context_obj(struct drm_device *dev, size_t size)
>  	 * would make the object snooped which might have a
>  	 * negative performance impact.
>  	 */
> -	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev)) {
> +	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  		ret = i915_gem_object_set_cache_level(obj, I915_CACHE_L3_LLC);
>  		/* Failure shouldn't ever happen this early */
>  		if (WARN_ON(ret)) {
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 1f7e6b9..963d9b6 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -140,8 +140,7 @@ static int sanitize_enable_ppgtt(struct drm_device *dev, int enable_ppgtt)
>  #endif
>  
>  	/* Early VLV doesn't have this */
> -	if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
> -	    dev->pdev->revision < 0xb) {
> +	if (IS_VALLEYVIEW(dev) && dev->pdev->revision < 0xb) {
>  		DRM_DEBUG_DRIVER("disabling PPGTT on pre-B3 step VLV\n");
>  		return 0;
>  	}
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index e88d692..86664d1 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -581,7 +581,7 @@ i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
>  {
>  	u32 enable_mask;
>  
> -	if (IS_VALLEYVIEW(dev_priv->dev))
> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
>  							   status_mask);
>  	else
> @@ -595,7 +595,7 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
>  {
>  	u32 enable_mask;
>  
> -	if (IS_VALLEYVIEW(dev_priv->dev))
> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
>  							   status_mask);
>  	else
> @@ -1723,7 +1723,7 @@ static void i9xx_hpd_irq_handler(struct drm_device *dev)
>  	 */
>  	POSTING_READ(PORT_HOTPLUG_STAT);
>  
> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
>  
>  		if (hotplug_trigger) {
> @@ -4412,7 +4412,7 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
>  	INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work);
>  
>  	/* Let's track the enabled rps events */
> -	if (IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
> +	if (IS_VALLEYVIEW(dev_priv))
>  		/* WaGsvRC0ResidencyMethod:vlv */
>  		dev_priv->pm_rps_events = GEN6_PM_RP_DOWN_EI_EXPIRED | GEN6_PM_RP_UP_EI_EXPIRED;
>  	else
> diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
> index 2d91821..a2aa09c 100644
> --- a/drivers/gpu/drm/i915/i915_suspend.c
> +++ b/drivers/gpu/drm/i915/i915_suspend.c
> @@ -49,7 +49,7 @@ static void i915_save_display(struct drm_device *dev)
>  		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS);
>  		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS);
>  		dev_priv->regfile.savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR);
> -	} else if (!IS_VALLEYVIEW(dev)) {
> +	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  		dev_priv->regfile.savePP_CONTROL = I915_READ(PP_CONTROL);
>  		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
>  		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
> @@ -84,7 +84,7 @@ static void i915_restore_display(struct drm_device *dev)
>  		I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
>  		I915_WRITE(PCH_PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
>  		I915_WRITE(PCH_PP_CONTROL, dev_priv->regfile.savePP_CONTROL);
> -	} else if (!IS_VALLEYVIEW(dev)) {
> +	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  		I915_WRITE(PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS);
>  		I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
>  		I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index f929c61..37e3f0d 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -49,7 +49,7 @@ static u32 calc_residency(struct drm_device *dev,
>  	intel_runtime_pm_get(dev_priv);
>  
>  	/* On VLV and CHV, residency time is in CZ units rather than 1.28us */
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		units = 1;
>  		div = dev_priv->czclk_freq;
>  
> @@ -284,7 +284,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev,
>  	intel_runtime_pm_get(dev_priv);
>  
>  	mutex_lock(&dev_priv->rps.hw_lock);
> -	if (IS_VALLEYVIEW(dev_priv->dev)) {
> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>  		u32 freq;
>  		freq = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
>  		ret = intel_gpu_freq(dev_priv, (freq >> 8) & 0xff);
> @@ -598,7 +598,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>  		if (ret)
>  			DRM_ERROR("RC6p residency sysfs setup failed\n");
>  	}
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		ret = sysfs_merge_group(&dev->primary->kdev->kobj,
>  					&media_rc6_attr_group);
>  		if (ret)
> @@ -619,7 +619,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>  	}
>  
>  	ret = 0;
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		ret = sysfs_create_files(&dev->primary->kdev->kobj, vlv_attrs);
>  	else if (INTEL_INFO(dev)->gen >= 6)
>  		ret = sysfs_create_files(&dev->primary->kdev->kobj, gen6_attrs);
> @@ -635,7 +635,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>  void i915_teardown_sysfs(struct drm_device *dev)
>  {
>  	sysfs_remove_bin_file(&dev->primary->kdev->kobj, &error_state_attr);
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		sysfs_remove_files(&dev->primary->kdev->kobj, vlv_attrs);
>  	else
>  		sysfs_remove_files(&dev->primary->kdev->kobj, gen6_attrs);
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 9aa83e7..06fffae 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -375,7 +375,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
>  	if (HAS_PCH_IBX(dev_priv->dev)) {
>  		aud_config = IBX_AUD_CFG(pipe);
>  		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
> -	} else if (IS_VALLEYVIEW(dev_priv)) {
> +	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>  		aud_config = VLV_AUD_CFG(pipe);
>  		aud_cntrl_st2 = VLV_AUD_CNTL_ST2;
>  	} else {
> @@ -435,7 +435,8 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>  		aud_config = IBX_AUD_CFG(pipe);
>  		aud_cntl_st = IBX_AUD_CNTL_ST(pipe);
>  		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
> -	} else if (IS_VALLEYVIEW(connector->dev)) {
> +	} else if (IS_VALLEYVIEW(connector->dev) ||
> +		   IS_CHERRYVIEW(connector->dev)) {
>  		hdmiw_hdmiedid = VLV_HDMIW_HDMIEDID(pipe);
>  		aud_config = VLV_AUD_CFG(pipe);
>  		aud_cntl_st = VLV_AUD_CNTL_ST(pipe);
> @@ -559,7 +560,7 @@ void intel_init_audio(struct drm_device *dev)
>  	if (IS_G4X(dev)) {
>  		dev_priv->display.audio_codec_enable = g4x_audio_codec_enable;
>  		dev_priv->display.audio_codec_disable = g4x_audio_codec_disable;
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		dev_priv->display.audio_codec_enable = ilk_audio_codec_enable;
>  		dev_priv->display.audio_codec_disable = ilk_audio_codec_disable;
>  	} else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) {
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index b59a2d8..d3b643b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -187,7 +187,7 @@ int intel_hrawclk(struct drm_device *dev)
>  	uint32_t clkcfg;
>  
>  	/* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		return 200;
>  
>  	clkcfg = I915_READ(CLKCFG);
> @@ -215,7 +215,7 @@ int intel_hrawclk(struct drm_device *dev)
>  
>  static void intel_update_czclk(struct drm_i915_private *dev_priv)
>  {
> -	if (!IS_VALLEYVIEW(dev_priv))
> +	if (!(IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)))
>  		return;
>  
>  	dev_priv->czclk_freq = vlv_get_cck_clock_hpll(dev_priv, "czclk",
> @@ -716,11 +716,12 @@ static bool intel_PLL_is_valid(struct drm_device *dev,
>  	if (clock->m1  < limit->m1.min  || limit->m1.max  < clock->m1)
>  		INTELPllInvalid("m1 out of range\n");
>  
> -	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
> +	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) &&
> +	    !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev))
>  		if (clock->m1 <= clock->m2)
>  			INTELPllInvalid("m1 <= m2\n");
>  
> -	if (!IS_VALLEYVIEW(dev) && !IS_BROXTON(dev)) {
> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev)) {
>  		if (clock->p < limit->p.min || limit->p.max < clock->p)
>  			INTELPllInvalid("p out of range\n");
>  		if (clock->m < limit->m.min || limit->m.max < clock->m)
> @@ -1305,7 +1306,7 @@ void assert_panel_unlocked(struct drm_i915_private *dev_priv,
>  		    I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT)
>  			panel_pipe = PIPE_B;
>  		/* XXX: else fix for eDP */
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/* presumably write lock depends on pipe, not port select */
>  		pp_reg = VLV_PIPE_PP_CONTROL(pipe);
>  		panel_pipe = pipe;
> @@ -1423,7 +1424,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
>  			     "plane %d assertion failure, should be off on pipe %c but is still active\n",
>  			     sprite, pipe_name(pipe));
>  		}
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		for_each_sprite(dev_priv, pipe, sprite) {
>  			u32 val = I915_READ(SPCNTR(pipe, sprite));
>  			I915_STATE_WARN(val & SP_ENABLE,
> @@ -2319,7 +2320,7 @@ static unsigned int intel_linear_alignment(struct drm_i915_private *dev_priv)
>  	if (INTEL_INFO(dev_priv)->gen >= 9)
>  		return 256 * 1024;
>  	else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv) ||
> -		 IS_VALLEYVIEW(dev_priv))
> +		 IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		return 128 * 1024;
>  	else if (INTEL_INFO(dev_priv)->gen >= 4)
>  		return 4 * 1024;
> @@ -5455,7 +5456,7 @@ static void intel_update_cdclk(struct drm_device *dev)
>  	 * BSpec erroneously claims we should aim for 4MHz, but
>  	 * in fact 1MHz is the correct frequency.
>  	 */
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/*
>  		 * Program the gmbus_freq based on the cdclk frequency.
>  		 * BSpec erroneously claims we should aim for 4MHz, but
> @@ -7180,7 +7181,7 @@ static int i9xx_get_refclk(const struct intel_crtc_state *crtc_state,
>  
>  	WARN_ON(!crtc_state->base.state);
>  
> -	if (IS_VALLEYVIEW(dev) || IS_BROXTON(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev) || IS_BROXTON(dev)) {
>  		refclk = 100000;
>  	} else if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS) &&
>  	    intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
> @@ -7879,7 +7880,7 @@ static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
>  		pipeconf |= PIPECONF_DOUBLE_WIDE;
>  
>  	/* only g4x and later have fancy bpc/dither controls */
> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/* Bspec claims that we can't use dithering for 30bpp pipes. */
>  		if (intel_crtc->config->dither && intel_crtc->config->pipe_bpp != 30)
>  			pipeconf |= PIPECONF_DITHER_EN |
> @@ -7919,7 +7920,8 @@ static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
>  	} else
>  		pipeconf |= PIPECONF_PROGRESSIVE;
>  
> -	if (IS_VALLEYVIEW(dev) && intel_crtc->config->limited_color_range)
> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
> +	     intel_crtc->config->limited_color_range)
>  		pipeconf |= PIPECONF_COLOR_RANGE_SELECT;
>  
>  	I915_WRITE(PIPECONF(intel_crtc->pipe), pipeconf);
> @@ -8166,7 +8168,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>  	if (!(tmp & PIPECONF_ENABLE))
>  		return false;
>  
> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		switch (tmp & PIPECONF_BPC_MASK) {
>  		case PIPECONF_6BPC:
>  			pipe_config->pipe_bpp = 18;
> @@ -8182,7 +8184,8 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>  		}
>  	}
>  
> -	if (IS_VALLEYVIEW(dev) && (tmp & PIPECONF_COLOR_RANGE_SELECT))
> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
> +	    (tmp & PIPECONF_COLOR_RANGE_SELECT))
>  		pipe_config->limited_color_range = true;
>  
>  	if (INTEL_INFO(dev)->gen < 4)
> @@ -8210,7 +8213,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>  		pipe_config->pixel_multiplier = 1;
>  	}
>  	pipe_config->dpll_hw_state.dpll = I915_READ(DPLL(crtc->pipe));
> -	if (!IS_VALLEYVIEW(dev)) {
> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  		/*
>  		 * DPLL_DVO_2X_MODE must be enabled for both DPLLs
>  		 * on 830. Filter it out here so that we don't
> @@ -11537,7 +11540,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>  	if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev))
>  		work->flip_count = I915_READ(PIPE_FLIPCOUNT_G4X(pipe)) + 1;
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		ring = &dev_priv->ring[BCS];
>  		if (obj->tiling_mode != intel_fb_obj(work->old_fb)->tiling_mode)
>  			/* vlv: DISPLAY_FLIP fails to change tiling */
> @@ -12016,7 +12019,7 @@ compute_baseline_pipe_bpp(struct intel_crtc *crtc,
>  	struct drm_connector_state *connector_state;
>  	int bpp, i;
>  
> -	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)))
> +	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)))
>  		bpp = 10*3;
>  	else if (INTEL_INFO(dev)->gen >= 5)
>  		bpp = 12*3;
> @@ -12626,7 +12629,7 @@ intel_pipe_config_compare(struct drm_device *dev,
>  	PIPE_CONF_CHECK_I(pixel_multiplier);
>  	PIPE_CONF_CHECK_I(has_hdmi_sink);
>  	if ((INTEL_INFO(dev)->gen < 8 && !IS_HASWELL(dev)) ||
> -	    IS_VALLEYVIEW(dev))
> +	    IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		PIPE_CONF_CHECK_I(limited_color_range);
>  	PIPE_CONF_CHECK_I(has_infoframe);
>  
> @@ -14378,7 +14381,7 @@ static void intel_setup_outputs(struct drm_device *dev)
>  
>  		if (I915_READ(PCH_DP_D) & DP_DETECTED)
>  			intel_dp_init(dev, PCH_DP_D, PORT_D);
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/*
>  		 * The DP_DETECTED bit is the latched state of the DDC
>  		 * SDA pin at boot. However since eDP doesn't require DDC
> @@ -14527,7 +14530,7 @@ u32 intel_fb_pitch_limit(struct drm_device *dev, uint64_t fb_modifier,
>  		 *  pixels and 32K bytes."
>  		 */
>  		 return min(8192*drm_format_plane_cpp(pixel_format, 0), 32768);
> -	} else if (gen >= 5 && !IS_VALLEYVIEW(dev)) {
> +	} else if (gen >= 5 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  		return 32*1024;
>  	} else if (gen >= 4) {
>  		if (fb_modifier == I915_FORMAT_MOD_X_TILED)
> @@ -14631,7 +14634,8 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  		}
>  		break;
>  	case DRM_FORMAT_ABGR8888:
> -		if (!IS_VALLEYVIEW(dev) && INTEL_INFO(dev)->gen < 9) {
> +		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
> +		    INTEL_INFO(dev)->gen < 9) {
>  			DRM_DEBUG("unsupported pixel format: %s\n",
>  				  drm_get_format_name(mode_cmd->pixel_format));
>  			return -EINVAL;
> @@ -14647,7 +14651,7 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  		}
>  		break;
>  	case DRM_FORMAT_ABGR2101010:
> -		if (!IS_VALLEYVIEW(dev)) {
> +		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>  			DRM_DEBUG("unsupported pixel format: %s\n",
>  				  drm_get_format_name(mode_cmd->pixel_format));
>  			return -EINVAL;
> @@ -14775,7 +14779,7 @@ static void intel_init_display(struct drm_device *dev)
>  		dev_priv->display.crtc_disable = ironlake_crtc_disable;
>  		dev_priv->display.update_primary_plane =
>  			ironlake_update_primary_plane;
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		dev_priv->display.get_pipe_config = i9xx_get_pipe_config;
>  		dev_priv->display.get_initial_plane_config =
>  			i9xx_get_initial_plane_config;
> @@ -14808,7 +14812,7 @@ static void intel_init_display(struct drm_device *dev)
>  	else if (IS_HASWELL(dev))
>  		dev_priv->display.get_display_clock_speed =
>  			haswell_get_display_clock_speed;
> -	else if (IS_VALLEYVIEW(dev))
> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		dev_priv->display.get_display_clock_speed =
>  			valleyview_get_display_clock_speed;
>  	else if (IS_GEN5(dev))
> @@ -14866,7 +14870,7 @@ static void intel_init_display(struct drm_device *dev)
>  			dev_priv->display.modeset_calc_cdclk =
>  				broadwell_modeset_calc_cdclk;
>  		}
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		dev_priv->display.modeset_commit_cdclk =
>  			valleyview_modeset_commit_cdclk;
>  		dev_priv->display.modeset_calc_cdclk =
> @@ -15640,7 +15644,7 @@ intel_modeset_setup_hw_state(struct drm_device *dev)
>  		pll->on = false;
>  	}
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_wm_get_hw_state(dev);
>  	else if (IS_GEN9(dev))
>  		skl_wm_get_hw_state(dev);
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index f335c92..1edeb3e 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -517,7 +517,7 @@ void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv)
>  	struct drm_device *dev = dev_priv->dev;
>  	struct intel_encoder *encoder;
>  
> -	if (WARN_ON(!IS_VALLEYVIEW(dev)))
> +	if (WARN_ON(!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)))
>  		return;
>  
>  	/*
> @@ -582,7 +582,7 @@ static int edp_notify_handler(struct notifier_block *this, unsigned long code,
>  
>  	pps_lock(intel_dp);
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
>  		i915_reg_t pp_ctrl_reg, pp_div_reg;
>  		u32 pp_div;
> @@ -610,7 +610,7 @@ static bool edp_have_panel_power(struct intel_dp *intel_dp)
>  
>  	lockdep_assert_held(&dev_priv->pps_mutex);
>  
> -	if (IS_VALLEYVIEW(dev) &&
> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>  	    intel_dp->pps_pipe == INVALID_PIPE)
>  		return false;
>  
> @@ -624,7 +624,7 @@ static bool edp_have_panel_vdd(struct intel_dp *intel_dp)
>  
>  	lockdep_assert_held(&dev_priv->pps_mutex);
>  
> -	if (IS_VALLEYVIEW(dev) &&
> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>  	    intel_dp->pps_pipe == INVALID_PIPE)
>  		return false;
>  
> @@ -1723,7 +1723,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
>  		I915_WRITE(TRANS_DP_CTL(crtc->pipe), trans_dp);
>  	} else {
>  		if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
> -		    crtc->config->limited_color_range)
> +		    !IS_CHERRYVIEW(dev) && crtc->config->limited_color_range)
>  			intel_dp->DP |= DP_COLOR_RANGE_16_235;
>  
>  		if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
> @@ -2418,7 +2418,7 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
>  	pipe_config->base.adjusted_mode.flags |= flags;
>  
>  	if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
> -	    tmp & DP_COLOR_RANGE_16_235)
> +	    !IS_CHERRYVIEW(dev) && tmp & DP_COLOR_RANGE_16_235)
>  		pipe_config->limited_color_range = true;
>  
>  	pipe_config->has_dp_encoder = true;
> @@ -2694,7 +2694,7 @@ static void intel_enable_dp(struct intel_encoder *encoder)
>  
>  	pps_lock(intel_dp);
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_init_panel_power_sequencer(intel_dp);
>  
>  	/*
> @@ -2728,7 +2728,7 @@ static void intel_enable_dp(struct intel_encoder *encoder)
>  
>  	pps_unlock(intel_dp);
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		unsigned int lane_mask = 0x0;
>  
>  		if (IS_CHERRYVIEW(dev))
> @@ -3218,7 +3218,7 @@ intel_dp_voltage_max(struct intel_dp *intel_dp)
>  		if (dev_priv->edp_low_vswing && port == PORT_A)
>  			return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
> -	} else if (IS_VALLEYVIEW(dev))
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
>  	else if (IS_GEN7(dev) && port == PORT_A)
>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
> @@ -3259,7 +3259,7 @@ intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing)
>  		default:
>  			return DP_TRAIN_PRE_EMPH_LEVEL_0;
>  		}
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
>  		case DP_TRAIN_VOLTAGE_SWING_LEVEL_0:
>  			return DP_TRAIN_PRE_EMPH_LEVEL_3;
> @@ -4539,7 +4539,7 @@ bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>  		return cpt_digital_port_connected(dev_priv, port);
>  	else if (IS_BROXTON(dev_priv))
>  		return bxt_digital_port_connected(dev_priv, port);
> -	else if (IS_VALLEYVIEW(dev_priv))
> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		return vlv_digital_port_connected(dev_priv, port);
>  	else
>  		return g4x_digital_port_connected(dev_priv, port);
> @@ -4933,7 +4933,7 @@ static void intel_dp_encoder_reset(struct drm_encoder *encoder)
>  	 * Read out the current power sequencer assignment,
>  	 * in case the BIOS did something with it.
>  	 */
> -	if (IS_VALLEYVIEW(encoder->dev))
> +	if (IS_VALLEYVIEW(encoder->dev) || IS_CHERRYVIEW(encoder->dev))
>  		vlv_initial_power_sequencer_setup(intel_dp);
>  
>  	intel_edp_panel_vdd_sanitize(intel_dp);
> @@ -5293,7 +5293,7 @@ intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
>  
>  	/* Haswell doesn't have any port selection bits for the panel
>  	 * power sequencer any more. */
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		port_sel = PANEL_PORT_SELECT_VLV(port);
>  	} else if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) {
>  		if (port == PORT_A)
> @@ -5405,12 +5405,12 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
>  
>  		val = I915_READ(reg);
>  		if (index > DRRS_HIGH_RR) {
> -			if (IS_VALLEYVIEW(dev))
> +			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  				val |= PIPECONF_EDP_RR_MODE_SWITCH_VLV;
>  			else
>  				val |= PIPECONF_EDP_RR_MODE_SWITCH;
>  		} else {
> -			if (IS_VALLEYVIEW(dev))
> +			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  				val &= ~PIPECONF_EDP_RR_MODE_SWITCH_VLV;
>  			else
>  				val &= ~PIPECONF_EDP_RR_MODE_SWITCH;
> @@ -5777,7 +5777,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
>  	}
>  	mutex_unlock(&dev->mode_config.mutex);
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		intel_dp->edp_notifier.notifier_call = edp_notify_handler;
>  		register_reboot_notifier(&intel_dp->edp_notifier);
>  
> @@ -5825,7 +5825,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>  	/* intel_dp vfuncs */
>  	if (INTEL_INFO(dev)->gen >= 9)
>  		intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;
> -	else if (IS_VALLEYVIEW(dev))
> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		intel_dp->get_aux_clock_divider = vlv_get_aux_clock_divider;
>  	else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
>  		intel_dp->get_aux_clock_divider = hsw_get_aux_clock_divider;
> @@ -5860,8 +5860,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>  		intel_encoder->type = INTEL_OUTPUT_EDP;
>  
>  	/* eDP only on port B and/or C on vlv/chv */
> -	if (WARN_ON(IS_VALLEYVIEW(dev) && is_edp(intel_dp) &&
> -		    port != PORT_B && port != PORT_C))
> +	if (WARN_ON((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
> +		    is_edp(intel_dp) && port != PORT_B && port != PORT_C))
>  		return false;
>  
>  	DRM_DEBUG_KMS("Adding %s connector on port %c\n",
> @@ -5912,7 +5912,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>  	if (is_edp(intel_dp)) {
>  		pps_lock(intel_dp);
>  		intel_dp_init_panel_power_timestamps(intel_dp);
> -		if (IS_VALLEYVIEW(dev))
> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  			vlv_initial_power_sequencer_setup(intel_dp);
>  		else
>  			intel_dp_init_panel_power_sequencer(dev, intel_dp);
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 230957f..25bdf1c 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -369,7 +369,7 @@ static void intel_dsi_device_ready(struct intel_encoder *encoder)
>  {
>  	struct drm_device *dev = encoder->base.dev;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_dsi_device_ready(encoder);
>  	else if (IS_BROXTON(dev))
>  		bxt_dsi_device_ready(encoder);
> @@ -487,7 +487,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
>  
>  	msleep(intel_dsi->panel_on_delay);
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		/*
>  		 * Disable DPOunit clock gating, can stall pipe
>  		 * and we need DPLL REFA always enabled
> @@ -684,8 +684,7 @@ static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
>  		 * Enable bit does not get set. To check whether DSI Port C
>  		 * was enabled in BIOS, check the Pipe B enable bit
>  		 */
> -		if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
> -		    (port == PORT_C))
> +		if (IS_VALLEYVIEW(dev) && port == PORT_C)
>  			dpi_enabled = I915_READ(PIPECONF(PIPE_B)) &
>  							PIPECONF_ENABLE;
>  
> @@ -716,7 +715,8 @@ static void intel_dsi_get_config(struct intel_encoder *encoder,
>  
>  	if (IS_BROXTON(encoder->base.dev))
>  		pclk = bxt_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
> -	else if (IS_VALLEYVIEW(encoder->base.dev))
> +	else if (IS_VALLEYVIEW(encoder->base.dev) ||
> +		 IS_CHERRYVIEW(encoder->base.dev))
>  		pclk = vlv_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
>  
>  	if (!pclk)
> @@ -869,7 +869,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  	}
>  
>  	for_each_dsi_port(port, intel_dsi->ports) {
> -		if (IS_VALLEYVIEW(dev)) {
> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  			/*
>  			 * escape clock divider, 20MHz, shared for A and C.
>  			 * device ready must be off when doing this! txclkesc?
> @@ -1129,7 +1129,7 @@ void intel_dsi_init(struct drm_device *dev)
>  	if (!dev_priv->vbt.has_mipi)
>  		return;
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		dev_priv->mipi_mmio_base = VLV_MIPI_BASE;
>  	} else {
>  		DRM_ERROR("Unsupported Mipi device to reg base");
> diff --git a/drivers/gpu/drm/i915/intel_dsi_pll.c b/drivers/gpu/drm/i915/intel_dsi_pll.c
> index cb3cf39..fbd2b51 100644
> --- a/drivers/gpu/drm/i915/intel_dsi_pll.c
> +++ b/drivers/gpu/drm/i915/intel_dsi_pll.c
> @@ -561,7 +561,7 @@ void intel_enable_dsi_pll(struct intel_encoder *encoder)
>  {
>  	struct drm_device *dev = encoder->base.dev;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_enable_dsi_pll(encoder);
>  	else if (IS_BROXTON(dev))
>  		bxt_enable_dsi_pll(encoder);
> @@ -571,7 +571,7 @@ void intel_disable_dsi_pll(struct intel_encoder *encoder)
>  {
>  	struct drm_device *dev = encoder->base.dev;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_disable_dsi_pll(encoder);
>  	else if (IS_BROXTON(dev))
>  		bxt_disable_dsi_pll(encoder);
> @@ -599,6 +599,6 @@ void intel_dsi_reset_clocks(struct intel_encoder *encoder, enum port port)
>  
>  	if (IS_BROXTON(dev))
>  		bxt_dsi_reset_clocks(encoder, port);
> -	else if (IS_VALLEYVIEW(dev))
> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		vlv_dsi_reset_clocks(encoder, port);
>  }
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index c3978ba..be7fab9 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -638,7 +638,7 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder)
>  
>  	if (HAS_DDI(dev_priv))
>  		reg = HSW_TVIDEO_DIP_GCP(crtc->config->cpu_transcoder);
> -	else if (IS_VALLEYVIEW(dev_priv))
> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		reg = VLV_TVIDEO_DIP_GCP(crtc->pipe);
>  	else if (HAS_PCH_SPLIT(dev_priv->dev))
>  		reg = TVIDEO_DIP_GCP(crtc->pipe);
> @@ -2100,7 +2100,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  		BUG();
>  	}
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		intel_hdmi->write_infoframe = vlv_write_infoframe;
>  		intel_hdmi->set_infoframes = vlv_set_infoframes;
>  		intel_hdmi->infoframe_enabled = vlv_infoframe_enabled;
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index b177857..a294a3c 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -407,7 +407,7 @@ void intel_hpd_irq_handler(struct drm_device *dev,
>  			 * hotplug bits itself. So only WARN about unexpected
>  			 * interrupts on saner platforms.
>  			 */
> -			WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev),
> +			WARN_ONCE(!HAS_GMCH_DISPLAY(dev),
>  				  "Received HPD interrupt on pin %d although disabled\n", i);
>  			continue;
>  		}
> diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
> index e26e22a..25254b5 100644
> --- a/drivers/gpu/drm/i915/intel_i2c.c
> +++ b/drivers/gpu/drm/i915/intel_i2c.c
> @@ -636,7 +636,7 @@ int intel_setup_gmbus(struct drm_device *dev)
>  	if (HAS_PCH_NOP(dev))
>  		return 0;
>  
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		dev_priv->gpio_mmio_base = VLV_DISPLAY_BASE;
>  	else if (!HAS_GMCH_DISPLAY(dev_priv))
>  		dev_priv->gpio_mmio_base =
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index ae808b6..72183a0 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -1784,7 +1784,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel)
>  		panel->backlight.set = pch_set_backlight;
>  		panel->backlight.get = pch_get_backlight;
>  		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		if (dev_priv->vbt.has_mipi) {
>  			panel->backlight.setup = pwm_setup_backlight;
>  			panel->backlight.enable = pwm_enable_backlight;
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index ee05ce8..fe56181 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -291,7 +291,7 @@ void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable)
>  	struct drm_device *dev = dev_priv->dev;
>  	u32 val;
>  
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		I915_WRITE(FW_BLC_SELF_VLV, enable ? FW_CSPWRDWNEN : 0);
>  		POSTING_READ(FW_BLC_SELF_VLV);
>  		dev_priv->wm.vlv.cxsr = enable;
> @@ -4405,7 +4405,7 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
>  
>  	mutex_lock(&dev_priv->rps.hw_lock);
>  	if (dev_priv->rps.enabled) {
> -		if (IS_VALLEYVIEW(dev))
> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  			vlv_set_rps_idle(dev_priv);
>  		else
>  			gen6_set_rps(dev_priv->dev, dev_priv->rps.idle_freq);
> @@ -4458,7 +4458,7 @@ void gen6_rps_boost(struct drm_i915_private *dev_priv,
>  
>  void intel_set_rps(struct drm_device *dev, u8 val)
>  {
> -	if (IS_VALLEYVIEW(dev))
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>  		valleyview_set_rps(dev, val);
>  	else
>  		gen6_set_rps(dev, val);
> @@ -4502,7 +4502,7 @@ static void valleyview_disable_rps(struct drm_device *dev)
>  
>  static void intel_print_rc6_info(struct drm_device *dev, u32 mode)
>  {
> -	if (IS_VALLEYVIEW(dev)) {
> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		if (mode & (GEN7_RC_CTL_TO_MODE | GEN6_RC_CTL_EI_MODE(1)))
>  			mode = GEN6_RC_CTL_RC6_ENABLE;
>  		else
> diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
> index b6609e6..1778a7d 100644
> --- a/drivers/gpu/drm/i915/intel_psr.c
> +++ b/drivers/gpu/drm/i915/intel_psr.c
> @@ -332,8 +332,8 @@ static bool intel_psr_match_conditions(struct intel_dp *intel_dp)
>  		return false;
>  	}
>  
> -	if (!IS_VALLEYVIEW(dev) && ((dev_priv->vbt.psr.full_link) ||
> -				    (dig_port->port != PORT_A))) {
> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
> +	    ((dev_priv->vbt.psr.full_link) || (dig_port->port != PORT_A))) {
>  		DRM_DEBUG_KMS("PSR condition failed: Link Standby requested/needed but not supported on this platform\n");
>  		return false;
>  	}
> @@ -650,7 +650,7 @@ void intel_psr_single_frame_update(struct drm_device *dev,
>  	 * Single frame update is already supported on BDW+ but it requires
>  	 * many W/A and it isn't really needed.
>  	 */
> -	if (!IS_VALLEYVIEW(dev))
> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
>  		return;
>  
>  	mutex_lock(&dev_priv->psr.lock);
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 2b96f33..f8bf622 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -951,7 +951,7 @@ int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
>  	if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE))
>  		return -EINVAL;
>  
> -	if (IS_VALLEYVIEW(dev) &&
> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>  	    set->flags & I915_SET_COLORKEY_DESTINATION)
>  		return -EINVAL;
>  
> @@ -1086,7 +1086,7 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane)
>  			intel_plane->max_downscale = 1;
>  		}
>  
> -		if (IS_VALLEYVIEW(dev)) {
> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  			intel_plane->update_plane = vlv_update_plane;
>  			intel_plane->disable_plane = vlv_disable_plane;
>  
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index c2358ba..fcf04fe 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1115,7 +1115,7 @@ static void fw_domain_init(struct drm_i915_private *dev_priv,
>  		d->val_clear = _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL);
>  	}
>  
> -	if (IS_VALLEYVIEW(dev_priv))
> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		d->reg_post = FORCEWAKE_ACK_VLV;
>  	else if (IS_GEN6(dev_priv) || IS_GEN7(dev_priv) || IS_GEN8(dev_priv))
>  		d->reg_post = ECOBUS;
> @@ -1148,7 +1148,7 @@ static void intel_uncore_fw_domains_init(struct drm_device *dev)
>  			       FORCEWAKE_ACK_BLITTER_GEN9);
>  		fw_domain_init(dev_priv, FW_DOMAIN_ID_MEDIA,
>  			       FORCEWAKE_MEDIA_GEN9, FORCEWAKE_ACK_MEDIA_GEN9);
> -	} else if (IS_VALLEYVIEW(dev)) {
> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>  		dev_priv->uncore.funcs.force_wake_get = fw_domains_get;
>  		if (!IS_CHERRYVIEW(dev))
>  			dev_priv->uncore.funcs.force_wake_put =
> -- 
> 2.6.3
Jani Nikula Dec. 10, 2015, 9:45 a.m. UTC | #2
On Wed, 09 Dec 2015, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Wed, Dec 09, 2015 at 12:29:35PM -0800, Wayne Boyer wrote:
>> The cherryview device shares many characteristics with the valleyview
>> device.  When support was added to the driver for cherryview, the
>> corresponding device info structure included .is_valleyview = 1.
>> This is not correct and leads to some confusion.
>> 
>> This patch changes .is_valleyview to .is_cherryview in the cherryview
>> device info structure and simplifies the IS_CHERRYVIEW macro.
>> Then where appropriate, instances of IS_VALLEYVIEW are replaced with
>> IS_VALLEYVIEW || IS_CHERRYVIEW or equivalent.
>> 
>> v2: Use IS_VALLEYVIEW || IS_CHERRYVIEW instead of defining a new macro.
>>     Also add followup patches to fix issues discovered during the first
>>     review. (Ville)
>> v3: Fix some style issues and one gen check. Remove CRT related changes
>>     as CRT is not supported on CHV. (Imre, Ville)
>> v4: Make a few more optimizations. (Ville)
>> 
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Wayne Boyer <wayne.boyer@intel.com>
>
> lgtm
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Acked-by: Jani Nikula <jani.nikula@intel.com>

For this one I'll let Daniel do the honors to push.


>
>> ---
>>  drivers/gpu/drm/i915/i915_debugfs.c     | 68 ++++++++++++++++-----------------
>>  drivers/gpu/drm/i915/i915_dma.c         | 11 ++----
>>  drivers/gpu/drm/i915/i915_drv.c         | 10 ++---
>>  drivers/gpu/drm/i915/i915_drv.h         | 16 +++++---
>>  drivers/gpu/drm/i915/i915_gem.c         |  4 +-
>>  drivers/gpu/drm/i915/i915_gem_context.c |  2 +-
>>  drivers/gpu/drm/i915/i915_gem_gtt.c     |  3 +-
>>  drivers/gpu/drm/i915/i915_irq.c         |  8 ++--
>>  drivers/gpu/drm/i915/i915_suspend.c     |  4 +-
>>  drivers/gpu/drm/i915/i915_sysfs.c       | 10 ++---
>>  drivers/gpu/drm/i915/intel_audio.c      |  7 ++--
>>  drivers/gpu/drm/i915/intel_display.c    | 54 ++++++++++++++------------
>>  drivers/gpu/drm/i915/intel_dp.c         | 40 +++++++++----------
>>  drivers/gpu/drm/i915/intel_dsi.c        | 14 +++----
>>  drivers/gpu/drm/i915/intel_dsi_pll.c    |  6 +--
>>  drivers/gpu/drm/i915/intel_hdmi.c       |  4 +-
>>  drivers/gpu/drm/i915/intel_hotplug.c    |  2 +-
>>  drivers/gpu/drm/i915/intel_i2c.c        |  2 +-
>>  drivers/gpu/drm/i915/intel_panel.c      |  2 +-
>>  drivers/gpu/drm/i915/intel_pm.c         |  8 ++--
>>  drivers/gpu/drm/i915/intel_psr.c        |  6 +--
>>  drivers/gpu/drm/i915/intel_sprite.c     |  4 +-
>>  drivers/gpu/drm/i915/intel_uncore.c     |  4 +-
>>  23 files changed, 147 insertions(+), 142 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
>> index a8721fc..fff31253 100644
>> --- a/drivers/gpu/drm/i915/i915_debugfs.c
>> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
>> @@ -1142,8 +1142,34 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
>>  			   MEMSTAT_VID_SHIFT);
>>  		seq_printf(m, "Current P-state: %d\n",
>>  			   (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT);
>> -	} else if (IS_GEN6(dev) || (IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) ||
>> -		   IS_BROADWELL(dev) || IS_GEN9(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>> +		u32 freq_sts;
>> +
>> +		mutex_lock(&dev_priv->rps.hw_lock);
>> +		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
>> +		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
>> +		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
>> +
>> +		seq_printf(m, "actual GPU freq: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
>> +
>> +		seq_printf(m, "current GPU freq: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
>> +
>> +		seq_printf(m, "max GPU freq: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
>> +
>> +		seq_printf(m, "min GPU freq: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
>> +
>> +		seq_printf(m, "idle GPU freq: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
>> +
>> +		seq_printf(m,
>> +			   "efficient (RPe) frequency: %d MHz\n",
>> +			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
>> +		mutex_unlock(&dev_priv->rps.hw_lock);
>> +	} else if (INTEL_INFO(dev)->gen >= 6) {
>>  		u32 rp_state_limits;
>>  		u32 gt_perf_status;
>>  		u32 rp_state_cap;
>> @@ -1284,33 +1310,6 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
>>  		seq_printf(m,
>>  			   "efficient (RPe) frequency: %d MHz\n",
>>  			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> -		u32 freq_sts;
>> -
>> -		mutex_lock(&dev_priv->rps.hw_lock);
>> -		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
>> -		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
>> -		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
>> -
>> -		seq_printf(m, "actual GPU freq: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
>> -
>> -		seq_printf(m, "current GPU freq: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
>> -
>> -		seq_printf(m, "max GPU freq: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
>> -
>> -		seq_printf(m, "min GPU freq: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
>> -
>> -		seq_printf(m, "idle GPU freq: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
>> -
>> -		seq_printf(m,
>> -			   "efficient (RPe) frequency: %d MHz\n",
>> -			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
>> -		mutex_unlock(&dev_priv->rps.hw_lock);
>>  	} else {
>>  		seq_puts(m, "no P-state info available\n");
>>  	}
>> @@ -1602,7 +1601,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
>>  	struct drm_info_node *node = m->private;
>>  	struct drm_device *dev = node->minor->dev;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		return vlv_drpc_info(m);
>>  	else if (INTEL_INFO(dev)->gen >= 6)
>>  		return gen6_drpc_info(m);
>> @@ -1743,7 +1742,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
>>  		sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN;
>>  	else if (IS_PINEVIEW(dev))
>>  		sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN;
>> -	else if (IS_VALLEYVIEW(dev))
>> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN;
>>  
>>  	intel_runtime_pm_put(dev_priv);
>> @@ -3983,7 +3982,7 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
>>  		ret = i8xx_pipe_crc_ctl_reg(&source, &val);
>>  	else if (INTEL_INFO(dev)->gen < 5)
>>  		ret = i9xx_pipe_crc_ctl_reg(dev, pipe, &source, &val);
>> -	else if (IS_VALLEYVIEW(dev))
>> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		ret = vlv_pipe_crc_ctl_reg(dev, pipe, &source, &val);
>>  	else if (IS_GEN5(dev) || IS_GEN6(dev))
>>  		ret = ilk_pipe_crc_ctl_reg(&source, &val);
>> @@ -4052,7 +4051,7 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
>>  
>>  		if (IS_G4X(dev))
>>  			g4x_undo_pipe_scramble_reset(dev, pipe);
>> -		else if (IS_VALLEYVIEW(dev))
>> +		else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  			vlv_undo_pipe_scramble_reset(dev, pipe);
>>  		else if (IS_HASWELL(dev) && pipe == PIPE_A)
>>  			hsw_trans_edp_pipe_A_crc_wa(dev, false);
>> @@ -4442,7 +4441,8 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
>>  		 * - WM1+ latency values in 0.5us units
>>  		 * - latencies are in us on gen9/vlv/chv
>>  		 */
>> -		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev))
>> +		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev) ||
>> +		    IS_CHERRYVIEW(dev))
>>  			latency *= 10;
>>  		else if (level > 0)
>>  			latency *= 5;
>> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
>> index a81c766..083e2c0 100644
>> --- a/drivers/gpu/drm/i915/i915_dma.c
>> +++ b/drivers/gpu/drm/i915/i915_dma.c
>> @@ -256,7 +256,7 @@ intel_setup_mchbar(struct drm_device *dev)
>>  	u32 temp;
>>  	bool enabled;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		return;
>>  
>>  	dev_priv->mchbar_need_disable = false;
>> @@ -779,7 +779,7 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>>  		info->num_sprites[PIPE_A] = 2;
>>  		info->num_sprites[PIPE_B] = 2;
>>  		info->num_sprites[PIPE_C] = 1;
>> -	} else if (IS_VALLEYVIEW(dev))
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		for_each_pipe(dev_priv, pipe)
>>  			info->num_sprites[pipe] = 2;
>>  	else
>> @@ -791,7 +791,7 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>>  		info->num_pipes = 0;
>>  	} else if (info->num_pipes > 0 &&
>>  		   (INTEL_INFO(dev)->gen == 7 || INTEL_INFO(dev)->gen == 8) &&
>> -		   !IS_VALLEYVIEW(dev)) {
>> +		   !(IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))) {
>>  		u32 fuse_strap = I915_READ(FUSE_STRAP);
>>  		u32 sfuse_strap = I915_READ(SFUSE_STRAP);
>>  
>> @@ -836,9 +836,6 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
>>  
>>  static void intel_init_dpio(struct drm_i915_private *dev_priv)
>>  {
>> -	if (!IS_VALLEYVIEW(dev_priv))
>> -		return;
>> -
>>  	/*
>>  	 * IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C),
>>  	 * CHV x1 PHY (DP/HDMI D)
>> @@ -847,7 +844,7 @@ static void intel_init_dpio(struct drm_i915_private *dev_priv)
>>  	if (IS_CHERRYVIEW(dev_priv)) {
>>  		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2;
>>  		DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO;
>> -	} else {
>> +	} else if (IS_VALLEYVIEW(dev_priv)) {
>>  		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO;
>>  	}
>>  }
>> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
>> index e6935f1..1fbbe8e 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.c
>> +++ b/drivers/gpu/drm/i915/i915_drv.c
>> @@ -311,7 +311,7 @@ static const struct intel_device_info intel_cherryview_info = {
>>  	.gen = 8, .num_pipes = 3,
>>  	.need_gfx_hws = 1, .has_hotplug = 1,
>>  	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
>> -	.is_valleyview = 1,
>> +	.is_cherryview = 1,
>>  	.display_mmio_offset = VLV_DISPLAY_BASE,
>>  	GEN_CHV_PIPEOFFSETS,
>>  	CURSOR_OFFSETS,
>> @@ -802,7 +802,7 @@ static int i915_drm_resume_early(struct drm_device *dev)
>>  
>>  	pci_set_master(dev->pdev);
>>  
>> -	if (IS_VALLEYVIEW(dev_priv))
>> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		ret = vlv_resume_prepare(dev_priv, false);
>>  	if (ret)
>>  		DRM_ERROR("Resume prepare failed: %d, continuing anyway\n",
>> @@ -1532,7 +1532,7 @@ static int intel_runtime_resume(struct device *device)
>>  		ret = bxt_resume_prepare(dev_priv);
>>  	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
>>  		hsw_disable_pc8(dev_priv);
>> -	else if (IS_VALLEYVIEW(dev_priv))
>> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		ret = vlv_resume_prepare(dev_priv, true);
>>  
>>  	/*
>> @@ -1549,7 +1549,7 @@ static int intel_runtime_resume(struct device *device)
>>  	 * power well, so hpd is reinitialized from there. For
>>  	 * everyone else do it here.
>>  	 */
>> -	if (!IS_VALLEYVIEW(dev_priv))
>> +	if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
>>  		intel_hpd_init(dev_priv);
>>  
>>  	intel_enable_gt_powersave(dev);
>> @@ -1574,7 +1574,7 @@ static int intel_suspend_complete(struct drm_i915_private *dev_priv)
>>  		ret = bxt_suspend_complete(dev_priv);
>>  	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
>>  		ret = hsw_suspend_complete(dev_priv);
>> -	else if (IS_VALLEYVIEW(dev_priv))
>> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		ret = vlv_suspend_complete(dev_priv);
>>  	else
>>  		ret = 0;
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> index f1a8a53..3899f23 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -763,6 +763,7 @@ struct intel_csr {
>>  	func(is_crestline) sep \
>>  	func(is_ivybridge) sep \
>>  	func(is_valleyview) sep \
>> +	func(is_cherryview) sep \
>>  	func(is_haswell) sep \
>>  	func(is_skylake) sep \
>>  	func(is_broxton) sep \
>> @@ -2455,9 +2456,9 @@ struct drm_i915_cmd_table {
>>  				 INTEL_DEVID(dev) == 0x0152 || \
>>  				 INTEL_DEVID(dev) == 0x015a)
>>  #define IS_VALLEYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview)
>> -#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
>> +#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_cherryview)
>>  #define IS_HASWELL(dev)	(INTEL_INFO(dev)->is_haswell)
>> -#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
>> +#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_cherryview && IS_GEN8(dev))
>>  #define IS_SKYLAKE(dev)	(INTEL_INFO(dev)->is_skylake)
>>  #define IS_BROXTON(dev)		(INTEL_INFO(dev)->is_broxton)
>>  #define IS_KABYLAKE(dev)	(INTEL_INFO(dev)->is_kabylake)
>> @@ -2584,7 +2585,8 @@ struct drm_i915_cmd_table {
>>  				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
>>  #define HAS_RUNTIME_PM(dev)	(IS_GEN6(dev) || IS_HASWELL(dev) || \
>>  				 IS_BROADWELL(dev) || IS_VALLEYVIEW(dev) || \
>> -				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
>> +				 IS_CHERRYVIEW(dev) || IS_SKYLAKE(dev) || \
>> +				 IS_KABYLAKE(dev))
>>  #define HAS_RC6(dev)		(INTEL_INFO(dev)->gen >= 6)
>>  #define HAS_RC6p(dev)		(INTEL_INFO(dev)->gen == 6 || IS_IVYBRIDGE(dev))
>>  
>> @@ -2597,7 +2599,8 @@ struct drm_i915_cmd_table {
>>  				    INTEL_INFO(dev)->gen >= 8)
>>  
>>  #define HAS_CORE_RING_FREQ(dev)	(INTEL_INFO(dev)->gen >= 6 && \
>> -				 !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
>> +				 !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && \
>> +				 !IS_BROXTON(dev))
>>  
>>  #define INTEL_PCH_DEVICE_ID_MASK		0xff00
>>  #define INTEL_PCH_IBX_DEVICE_ID_TYPE		0x3b00
>> @@ -2620,7 +2623,8 @@ struct drm_i915_cmd_table {
>>  #define HAS_PCH_NOP(dev) (INTEL_PCH_TYPE(dev) == PCH_NOP)
>>  #define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE)
>>  
>> -#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || IS_VALLEYVIEW(dev))
>> +#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || \
>> +			       IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  
>>  /* DPF == dynamic parity feature */
>>  #define HAS_L3_DPF(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev))
>> @@ -3511,7 +3515,7 @@ __raw_write(64, q)
>>  
>>  static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
>>  {
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		return VLV_VGACNTRL;
>>  	else if (INTEL_INFO(dev)->gen >= 5)
>>  		return CPU_VGACNTRL;
>> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
>> index dfaf25b..e96e496 100644
>> --- a/drivers/gpu/drm/i915/i915_gem.c
>> +++ b/drivers/gpu/drm/i915/i915_gem.c
>> @@ -4838,7 +4838,7 @@ int i915_gem_init(struct drm_device *dev)
>>  
>>  	mutex_lock(&dev->struct_mutex);
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/* VLVA0 (potential hack), BIOS isn't actually waking us */
>>  		I915_WRITE(VLV_GTLC_WAKE_CTRL, VLV_GTLC_ALLOWWAKEREQ);
>>  		if (wait_for((I915_READ(VLV_GTLC_PW_STATUS) &
>> @@ -4963,7 +4963,7 @@ i915_gem_load(struct drm_device *dev)
>>  
>>  	dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL;
>>  
>> -	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev))
>> +	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
>>  		dev_priv->num_fence_regs = 32;
>>  	else if (INTEL_INFO(dev)->gen >= 4 || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
>>  		dev_priv->num_fence_regs = 16;
>> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
>> index 43761c5..4b1161d 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_context.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
>> @@ -190,7 +190,7 @@ i915_gem_alloc_context_obj(struct drm_device *dev, size_t size)
>>  	 * would make the object snooped which might have a
>>  	 * negative performance impact.
>>  	 */
>> -	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev)) {
>> +	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  		ret = i915_gem_object_set_cache_level(obj, I915_CACHE_L3_LLC);
>>  		/* Failure shouldn't ever happen this early */
>>  		if (WARN_ON(ret)) {
>> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> index 1f7e6b9..963d9b6 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> @@ -140,8 +140,7 @@ static int sanitize_enable_ppgtt(struct drm_device *dev, int enable_ppgtt)
>>  #endif
>>  
>>  	/* Early VLV doesn't have this */
>> -	if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
>> -	    dev->pdev->revision < 0xb) {
>> +	if (IS_VALLEYVIEW(dev) && dev->pdev->revision < 0xb) {
>>  		DRM_DEBUG_DRIVER("disabling PPGTT on pre-B3 step VLV\n");
>>  		return 0;
>>  	}
>> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
>> index e88d692..86664d1 100644
>> --- a/drivers/gpu/drm/i915/i915_irq.c
>> +++ b/drivers/gpu/drm/i915/i915_irq.c
>> @@ -581,7 +581,7 @@ i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
>>  {
>>  	u32 enable_mask;
>>  
>> -	if (IS_VALLEYVIEW(dev_priv->dev))
>> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
>>  							   status_mask);
>>  	else
>> @@ -595,7 +595,7 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
>>  {
>>  	u32 enable_mask;
>>  
>> -	if (IS_VALLEYVIEW(dev_priv->dev))
>> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
>>  							   status_mask);
>>  	else
>> @@ -1723,7 +1723,7 @@ static void i9xx_hpd_irq_handler(struct drm_device *dev)
>>  	 */
>>  	POSTING_READ(PORT_HOTPLUG_STAT);
>>  
>> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
>> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
>>  
>>  		if (hotplug_trigger) {
>> @@ -4412,7 +4412,7 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
>>  	INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work);
>>  
>>  	/* Let's track the enabled rps events */
>> -	if (IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
>> +	if (IS_VALLEYVIEW(dev_priv))
>>  		/* WaGsvRC0ResidencyMethod:vlv */
>>  		dev_priv->pm_rps_events = GEN6_PM_RP_DOWN_EI_EXPIRED | GEN6_PM_RP_UP_EI_EXPIRED;
>>  	else
>> diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
>> index 2d91821..a2aa09c 100644
>> --- a/drivers/gpu/drm/i915/i915_suspend.c
>> +++ b/drivers/gpu/drm/i915/i915_suspend.c
>> @@ -49,7 +49,7 @@ static void i915_save_display(struct drm_device *dev)
>>  		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS);
>>  		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS);
>>  		dev_priv->regfile.savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR);
>> -	} else if (!IS_VALLEYVIEW(dev)) {
>> +	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  		dev_priv->regfile.savePP_CONTROL = I915_READ(PP_CONTROL);
>>  		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
>>  		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
>> @@ -84,7 +84,7 @@ static void i915_restore_display(struct drm_device *dev)
>>  		I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
>>  		I915_WRITE(PCH_PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
>>  		I915_WRITE(PCH_PP_CONTROL, dev_priv->regfile.savePP_CONTROL);
>> -	} else if (!IS_VALLEYVIEW(dev)) {
>> +	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  		I915_WRITE(PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS);
>>  		I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
>>  		I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
>> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
>> index f929c61..37e3f0d 100644
>> --- a/drivers/gpu/drm/i915/i915_sysfs.c
>> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
>> @@ -49,7 +49,7 @@ static u32 calc_residency(struct drm_device *dev,
>>  	intel_runtime_pm_get(dev_priv);
>>  
>>  	/* On VLV and CHV, residency time is in CZ units rather than 1.28us */
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		units = 1;
>>  		div = dev_priv->czclk_freq;
>>  
>> @@ -284,7 +284,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev,
>>  	intel_runtime_pm_get(dev_priv);
>>  
>>  	mutex_lock(&dev_priv->rps.hw_lock);
>> -	if (IS_VALLEYVIEW(dev_priv->dev)) {
>> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>>  		u32 freq;
>>  		freq = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
>>  		ret = intel_gpu_freq(dev_priv, (freq >> 8) & 0xff);
>> @@ -598,7 +598,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>>  		if (ret)
>>  			DRM_ERROR("RC6p residency sysfs setup failed\n");
>>  	}
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		ret = sysfs_merge_group(&dev->primary->kdev->kobj,
>>  					&media_rc6_attr_group);
>>  		if (ret)
>> @@ -619,7 +619,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>>  	}
>>  
>>  	ret = 0;
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		ret = sysfs_create_files(&dev->primary->kdev->kobj, vlv_attrs);
>>  	else if (INTEL_INFO(dev)->gen >= 6)
>>  		ret = sysfs_create_files(&dev->primary->kdev->kobj, gen6_attrs);
>> @@ -635,7 +635,7 @@ void i915_setup_sysfs(struct drm_device *dev)
>>  void i915_teardown_sysfs(struct drm_device *dev)
>>  {
>>  	sysfs_remove_bin_file(&dev->primary->kdev->kobj, &error_state_attr);
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		sysfs_remove_files(&dev->primary->kdev->kobj, vlv_attrs);
>>  	else
>>  		sysfs_remove_files(&dev->primary->kdev->kobj, gen6_attrs);
>> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
>> index 9aa83e7..06fffae 100644
>> --- a/drivers/gpu/drm/i915/intel_audio.c
>> +++ b/drivers/gpu/drm/i915/intel_audio.c
>> @@ -375,7 +375,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
>>  	if (HAS_PCH_IBX(dev_priv->dev)) {
>>  		aud_config = IBX_AUD_CFG(pipe);
>>  		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
>> -	} else if (IS_VALLEYVIEW(dev_priv)) {
>> +	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>>  		aud_config = VLV_AUD_CFG(pipe);
>>  		aud_cntrl_st2 = VLV_AUD_CNTL_ST2;
>>  	} else {
>> @@ -435,7 +435,8 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>>  		aud_config = IBX_AUD_CFG(pipe);
>>  		aud_cntl_st = IBX_AUD_CNTL_ST(pipe);
>>  		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
>> -	} else if (IS_VALLEYVIEW(connector->dev)) {
>> +	} else if (IS_VALLEYVIEW(connector->dev) ||
>> +		   IS_CHERRYVIEW(connector->dev)) {
>>  		hdmiw_hdmiedid = VLV_HDMIW_HDMIEDID(pipe);
>>  		aud_config = VLV_AUD_CFG(pipe);
>>  		aud_cntl_st = VLV_AUD_CNTL_ST(pipe);
>> @@ -559,7 +560,7 @@ void intel_init_audio(struct drm_device *dev)
>>  	if (IS_G4X(dev)) {
>>  		dev_priv->display.audio_codec_enable = g4x_audio_codec_enable;
>>  		dev_priv->display.audio_codec_disable = g4x_audio_codec_disable;
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		dev_priv->display.audio_codec_enable = ilk_audio_codec_enable;
>>  		dev_priv->display.audio_codec_disable = ilk_audio_codec_disable;
>>  	} else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) {
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index b59a2d8..d3b643b 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -187,7 +187,7 @@ int intel_hrawclk(struct drm_device *dev)
>>  	uint32_t clkcfg;
>>  
>>  	/* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		return 200;
>>  
>>  	clkcfg = I915_READ(CLKCFG);
>> @@ -215,7 +215,7 @@ int intel_hrawclk(struct drm_device *dev)
>>  
>>  static void intel_update_czclk(struct drm_i915_private *dev_priv)
>>  {
>> -	if (!IS_VALLEYVIEW(dev_priv))
>> +	if (!(IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)))
>>  		return;
>>  
>>  	dev_priv->czclk_freq = vlv_get_cck_clock_hpll(dev_priv, "czclk",
>> @@ -716,11 +716,12 @@ static bool intel_PLL_is_valid(struct drm_device *dev,
>>  	if (clock->m1  < limit->m1.min  || limit->m1.max  < clock->m1)
>>  		INTELPllInvalid("m1 out of range\n");
>>  
>> -	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
>> +	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) &&
>> +	    !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev))
>>  		if (clock->m1 <= clock->m2)
>>  			INTELPllInvalid("m1 <= m2\n");
>>  
>> -	if (!IS_VALLEYVIEW(dev) && !IS_BROXTON(dev)) {
>> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev)) {
>>  		if (clock->p < limit->p.min || limit->p.max < clock->p)
>>  			INTELPllInvalid("p out of range\n");
>>  		if (clock->m < limit->m.min || limit->m.max < clock->m)
>> @@ -1305,7 +1306,7 @@ void assert_panel_unlocked(struct drm_i915_private *dev_priv,
>>  		    I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT)
>>  			panel_pipe = PIPE_B;
>>  		/* XXX: else fix for eDP */
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/* presumably write lock depends on pipe, not port select */
>>  		pp_reg = VLV_PIPE_PP_CONTROL(pipe);
>>  		panel_pipe = pipe;
>> @@ -1423,7 +1424,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
>>  			     "plane %d assertion failure, should be off on pipe %c but is still active\n",
>>  			     sprite, pipe_name(pipe));
>>  		}
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		for_each_sprite(dev_priv, pipe, sprite) {
>>  			u32 val = I915_READ(SPCNTR(pipe, sprite));
>>  			I915_STATE_WARN(val & SP_ENABLE,
>> @@ -2319,7 +2320,7 @@ static unsigned int intel_linear_alignment(struct drm_i915_private *dev_priv)
>>  	if (INTEL_INFO(dev_priv)->gen >= 9)
>>  		return 256 * 1024;
>>  	else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv) ||
>> -		 IS_VALLEYVIEW(dev_priv))
>> +		 IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		return 128 * 1024;
>>  	else if (INTEL_INFO(dev_priv)->gen >= 4)
>>  		return 4 * 1024;
>> @@ -5455,7 +5456,7 @@ static void intel_update_cdclk(struct drm_device *dev)
>>  	 * BSpec erroneously claims we should aim for 4MHz, but
>>  	 * in fact 1MHz is the correct frequency.
>>  	 */
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/*
>>  		 * Program the gmbus_freq based on the cdclk frequency.
>>  		 * BSpec erroneously claims we should aim for 4MHz, but
>> @@ -7180,7 +7181,7 @@ static int i9xx_get_refclk(const struct intel_crtc_state *crtc_state,
>>  
>>  	WARN_ON(!crtc_state->base.state);
>>  
>> -	if (IS_VALLEYVIEW(dev) || IS_BROXTON(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev) || IS_BROXTON(dev)) {
>>  		refclk = 100000;
>>  	} else if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS) &&
>>  	    intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
>> @@ -7879,7 +7880,7 @@ static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
>>  		pipeconf |= PIPECONF_DOUBLE_WIDE;
>>  
>>  	/* only g4x and later have fancy bpc/dither controls */
>> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
>> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/* Bspec claims that we can't use dithering for 30bpp pipes. */
>>  		if (intel_crtc->config->dither && intel_crtc->config->pipe_bpp != 30)
>>  			pipeconf |= PIPECONF_DITHER_EN |
>> @@ -7919,7 +7920,8 @@ static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
>>  	} else
>>  		pipeconf |= PIPECONF_PROGRESSIVE;
>>  
>> -	if (IS_VALLEYVIEW(dev) && intel_crtc->config->limited_color_range)
>> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>> +	     intel_crtc->config->limited_color_range)
>>  		pipeconf |= PIPECONF_COLOR_RANGE_SELECT;
>>  
>>  	I915_WRITE(PIPECONF(intel_crtc->pipe), pipeconf);
>> @@ -8166,7 +8168,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>>  	if (!(tmp & PIPECONF_ENABLE))
>>  		return false;
>>  
>> -	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
>> +	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		switch (tmp & PIPECONF_BPC_MASK) {
>>  		case PIPECONF_6BPC:
>>  			pipe_config->pipe_bpp = 18;
>> @@ -8182,7 +8184,8 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>>  		}
>>  	}
>>  
>> -	if (IS_VALLEYVIEW(dev) && (tmp & PIPECONF_COLOR_RANGE_SELECT))
>> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>> +	    (tmp & PIPECONF_COLOR_RANGE_SELECT))
>>  		pipe_config->limited_color_range = true;
>>  
>>  	if (INTEL_INFO(dev)->gen < 4)
>> @@ -8210,7 +8213,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>>  		pipe_config->pixel_multiplier = 1;
>>  	}
>>  	pipe_config->dpll_hw_state.dpll = I915_READ(DPLL(crtc->pipe));
>> -	if (!IS_VALLEYVIEW(dev)) {
>> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  		/*
>>  		 * DPLL_DVO_2X_MODE must be enabled for both DPLLs
>>  		 * on 830. Filter it out here so that we don't
>> @@ -11537,7 +11540,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>>  	if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev))
>>  		work->flip_count = I915_READ(PIPE_FLIPCOUNT_G4X(pipe)) + 1;
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		ring = &dev_priv->ring[BCS];
>>  		if (obj->tiling_mode != intel_fb_obj(work->old_fb)->tiling_mode)
>>  			/* vlv: DISPLAY_FLIP fails to change tiling */
>> @@ -12016,7 +12019,7 @@ compute_baseline_pipe_bpp(struct intel_crtc *crtc,
>>  	struct drm_connector_state *connector_state;
>>  	int bpp, i;
>>  
>> -	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)))
>> +	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)))
>>  		bpp = 10*3;
>>  	else if (INTEL_INFO(dev)->gen >= 5)
>>  		bpp = 12*3;
>> @@ -12626,7 +12629,7 @@ intel_pipe_config_compare(struct drm_device *dev,
>>  	PIPE_CONF_CHECK_I(pixel_multiplier);
>>  	PIPE_CONF_CHECK_I(has_hdmi_sink);
>>  	if ((INTEL_INFO(dev)->gen < 8 && !IS_HASWELL(dev)) ||
>> -	    IS_VALLEYVIEW(dev))
>> +	    IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		PIPE_CONF_CHECK_I(limited_color_range);
>>  	PIPE_CONF_CHECK_I(has_infoframe);
>>  
>> @@ -14378,7 +14381,7 @@ static void intel_setup_outputs(struct drm_device *dev)
>>  
>>  		if (I915_READ(PCH_DP_D) & DP_DETECTED)
>>  			intel_dp_init(dev, PCH_DP_D, PORT_D);
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/*
>>  		 * The DP_DETECTED bit is the latched state of the DDC
>>  		 * SDA pin at boot. However since eDP doesn't require DDC
>> @@ -14527,7 +14530,7 @@ u32 intel_fb_pitch_limit(struct drm_device *dev, uint64_t fb_modifier,
>>  		 *  pixels and 32K bytes."
>>  		 */
>>  		 return min(8192*drm_format_plane_cpp(pixel_format, 0), 32768);
>> -	} else if (gen >= 5 && !IS_VALLEYVIEW(dev)) {
>> +	} else if (gen >= 5 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  		return 32*1024;
>>  	} else if (gen >= 4) {
>>  		if (fb_modifier == I915_FORMAT_MOD_X_TILED)
>> @@ -14631,7 +14634,8 @@ static int intel_framebuffer_init(struct drm_device *dev,
>>  		}
>>  		break;
>>  	case DRM_FORMAT_ABGR8888:
>> -		if (!IS_VALLEYVIEW(dev) && INTEL_INFO(dev)->gen < 9) {
>> +		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
>> +		    INTEL_INFO(dev)->gen < 9) {
>>  			DRM_DEBUG("unsupported pixel format: %s\n",
>>  				  drm_get_format_name(mode_cmd->pixel_format));
>>  			return -EINVAL;
>> @@ -14647,7 +14651,7 @@ static int intel_framebuffer_init(struct drm_device *dev,
>>  		}
>>  		break;
>>  	case DRM_FORMAT_ABGR2101010:
>> -		if (!IS_VALLEYVIEW(dev)) {
>> +		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
>>  			DRM_DEBUG("unsupported pixel format: %s\n",
>>  				  drm_get_format_name(mode_cmd->pixel_format));
>>  			return -EINVAL;
>> @@ -14775,7 +14779,7 @@ static void intel_init_display(struct drm_device *dev)
>>  		dev_priv->display.crtc_disable = ironlake_crtc_disable;
>>  		dev_priv->display.update_primary_plane =
>>  			ironlake_update_primary_plane;
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		dev_priv->display.get_pipe_config = i9xx_get_pipe_config;
>>  		dev_priv->display.get_initial_plane_config =
>>  			i9xx_get_initial_plane_config;
>> @@ -14808,7 +14812,7 @@ static void intel_init_display(struct drm_device *dev)
>>  	else if (IS_HASWELL(dev))
>>  		dev_priv->display.get_display_clock_speed =
>>  			haswell_get_display_clock_speed;
>> -	else if (IS_VALLEYVIEW(dev))
>> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		dev_priv->display.get_display_clock_speed =
>>  			valleyview_get_display_clock_speed;
>>  	else if (IS_GEN5(dev))
>> @@ -14866,7 +14870,7 @@ static void intel_init_display(struct drm_device *dev)
>>  			dev_priv->display.modeset_calc_cdclk =
>>  				broadwell_modeset_calc_cdclk;
>>  		}
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		dev_priv->display.modeset_commit_cdclk =
>>  			valleyview_modeset_commit_cdclk;
>>  		dev_priv->display.modeset_calc_cdclk =
>> @@ -15640,7 +15644,7 @@ intel_modeset_setup_hw_state(struct drm_device *dev)
>>  		pll->on = false;
>>  	}
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_wm_get_hw_state(dev);
>>  	else if (IS_GEN9(dev))
>>  		skl_wm_get_hw_state(dev);
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index f335c92..1edeb3e 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -517,7 +517,7 @@ void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv)
>>  	struct drm_device *dev = dev_priv->dev;
>>  	struct intel_encoder *encoder;
>>  
>> -	if (WARN_ON(!IS_VALLEYVIEW(dev)))
>> +	if (WARN_ON(!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)))
>>  		return;
>>  
>>  	/*
>> @@ -582,7 +582,7 @@ static int edp_notify_handler(struct notifier_block *this, unsigned long code,
>>  
>>  	pps_lock(intel_dp);
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
>>  		i915_reg_t pp_ctrl_reg, pp_div_reg;
>>  		u32 pp_div;
>> @@ -610,7 +610,7 @@ static bool edp_have_panel_power(struct intel_dp *intel_dp)
>>  
>>  	lockdep_assert_held(&dev_priv->pps_mutex);
>>  
>> -	if (IS_VALLEYVIEW(dev) &&
>> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>>  	    intel_dp->pps_pipe == INVALID_PIPE)
>>  		return false;
>>  
>> @@ -624,7 +624,7 @@ static bool edp_have_panel_vdd(struct intel_dp *intel_dp)
>>  
>>  	lockdep_assert_held(&dev_priv->pps_mutex);
>>  
>> -	if (IS_VALLEYVIEW(dev) &&
>> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>>  	    intel_dp->pps_pipe == INVALID_PIPE)
>>  		return false;
>>  
>> @@ -1723,7 +1723,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
>>  		I915_WRITE(TRANS_DP_CTL(crtc->pipe), trans_dp);
>>  	} else {
>>  		if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
>> -		    crtc->config->limited_color_range)
>> +		    !IS_CHERRYVIEW(dev) && crtc->config->limited_color_range)
>>  			intel_dp->DP |= DP_COLOR_RANGE_16_235;
>>  
>>  		if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
>> @@ -2418,7 +2418,7 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
>>  	pipe_config->base.adjusted_mode.flags |= flags;
>>  
>>  	if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
>> -	    tmp & DP_COLOR_RANGE_16_235)
>> +	    !IS_CHERRYVIEW(dev) && tmp & DP_COLOR_RANGE_16_235)
>>  		pipe_config->limited_color_range = true;
>>  
>>  	pipe_config->has_dp_encoder = true;
>> @@ -2694,7 +2694,7 @@ static void intel_enable_dp(struct intel_encoder *encoder)
>>  
>>  	pps_lock(intel_dp);
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_init_panel_power_sequencer(intel_dp);
>>  
>>  	/*
>> @@ -2728,7 +2728,7 @@ static void intel_enable_dp(struct intel_encoder *encoder)
>>  
>>  	pps_unlock(intel_dp);
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		unsigned int lane_mask = 0x0;
>>  
>>  		if (IS_CHERRYVIEW(dev))
>> @@ -3218,7 +3218,7 @@ intel_dp_voltage_max(struct intel_dp *intel_dp)
>>  		if (dev_priv->edp_low_vswing && port == PORT_A)
>>  			return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
>>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
>> -	} else if (IS_VALLEYVIEW(dev))
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
>>  	else if (IS_GEN7(dev) && port == PORT_A)
>>  		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
>> @@ -3259,7 +3259,7 @@ intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing)
>>  		default:
>>  			return DP_TRAIN_PRE_EMPH_LEVEL_0;
>>  		}
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
>>  		case DP_TRAIN_VOLTAGE_SWING_LEVEL_0:
>>  			return DP_TRAIN_PRE_EMPH_LEVEL_3;
>> @@ -4539,7 +4539,7 @@ bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>>  		return cpt_digital_port_connected(dev_priv, port);
>>  	else if (IS_BROXTON(dev_priv))
>>  		return bxt_digital_port_connected(dev_priv, port);
>> -	else if (IS_VALLEYVIEW(dev_priv))
>> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		return vlv_digital_port_connected(dev_priv, port);
>>  	else
>>  		return g4x_digital_port_connected(dev_priv, port);
>> @@ -4933,7 +4933,7 @@ static void intel_dp_encoder_reset(struct drm_encoder *encoder)
>>  	 * Read out the current power sequencer assignment,
>>  	 * in case the BIOS did something with it.
>>  	 */
>> -	if (IS_VALLEYVIEW(encoder->dev))
>> +	if (IS_VALLEYVIEW(encoder->dev) || IS_CHERRYVIEW(encoder->dev))
>>  		vlv_initial_power_sequencer_setup(intel_dp);
>>  
>>  	intel_edp_panel_vdd_sanitize(intel_dp);
>> @@ -5293,7 +5293,7 @@ intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
>>  
>>  	/* Haswell doesn't have any port selection bits for the panel
>>  	 * power sequencer any more. */
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		port_sel = PANEL_PORT_SELECT_VLV(port);
>>  	} else if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) {
>>  		if (port == PORT_A)
>> @@ -5405,12 +5405,12 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
>>  
>>  		val = I915_READ(reg);
>>  		if (index > DRRS_HIGH_RR) {
>> -			if (IS_VALLEYVIEW(dev))
>> +			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  				val |= PIPECONF_EDP_RR_MODE_SWITCH_VLV;
>>  			else
>>  				val |= PIPECONF_EDP_RR_MODE_SWITCH;
>>  		} else {
>> -			if (IS_VALLEYVIEW(dev))
>> +			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  				val &= ~PIPECONF_EDP_RR_MODE_SWITCH_VLV;
>>  			else
>>  				val &= ~PIPECONF_EDP_RR_MODE_SWITCH;
>> @@ -5777,7 +5777,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
>>  	}
>>  	mutex_unlock(&dev->mode_config.mutex);
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		intel_dp->edp_notifier.notifier_call = edp_notify_handler;
>>  		register_reboot_notifier(&intel_dp->edp_notifier);
>>  
>> @@ -5825,7 +5825,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>>  	/* intel_dp vfuncs */
>>  	if (INTEL_INFO(dev)->gen >= 9)
>>  		intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;
>> -	else if (IS_VALLEYVIEW(dev))
>> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		intel_dp->get_aux_clock_divider = vlv_get_aux_clock_divider;
>>  	else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
>>  		intel_dp->get_aux_clock_divider = hsw_get_aux_clock_divider;
>> @@ -5860,8 +5860,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>>  		intel_encoder->type = INTEL_OUTPUT_EDP;
>>  
>>  	/* eDP only on port B and/or C on vlv/chv */
>> -	if (WARN_ON(IS_VALLEYVIEW(dev) && is_edp(intel_dp) &&
>> -		    port != PORT_B && port != PORT_C))
>> +	if (WARN_ON((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>> +		    is_edp(intel_dp) && port != PORT_B && port != PORT_C))
>>  		return false;
>>  
>>  	DRM_DEBUG_KMS("Adding %s connector on port %c\n",
>> @@ -5912,7 +5912,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>>  	if (is_edp(intel_dp)) {
>>  		pps_lock(intel_dp);
>>  		intel_dp_init_panel_power_timestamps(intel_dp);
>> -		if (IS_VALLEYVIEW(dev))
>> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  			vlv_initial_power_sequencer_setup(intel_dp);
>>  		else
>>  			intel_dp_init_panel_power_sequencer(dev, intel_dp);
>> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
>> index 230957f..25bdf1c 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi.c
>> @@ -369,7 +369,7 @@ static void intel_dsi_device_ready(struct intel_encoder *encoder)
>>  {
>>  	struct drm_device *dev = encoder->base.dev;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_dsi_device_ready(encoder);
>>  	else if (IS_BROXTON(dev))
>>  		bxt_dsi_device_ready(encoder);
>> @@ -487,7 +487,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
>>  
>>  	msleep(intel_dsi->panel_on_delay);
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		/*
>>  		 * Disable DPOunit clock gating, can stall pipe
>>  		 * and we need DPLL REFA always enabled
>> @@ -684,8 +684,7 @@ static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
>>  		 * Enable bit does not get set. To check whether DSI Port C
>>  		 * was enabled in BIOS, check the Pipe B enable bit
>>  		 */
>> -		if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
>> -		    (port == PORT_C))
>> +		if (IS_VALLEYVIEW(dev) && port == PORT_C)
>>  			dpi_enabled = I915_READ(PIPECONF(PIPE_B)) &
>>  							PIPECONF_ENABLE;
>>  
>> @@ -716,7 +715,8 @@ static void intel_dsi_get_config(struct intel_encoder *encoder,
>>  
>>  	if (IS_BROXTON(encoder->base.dev))
>>  		pclk = bxt_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
>> -	else if (IS_VALLEYVIEW(encoder->base.dev))
>> +	else if (IS_VALLEYVIEW(encoder->base.dev) ||
>> +		 IS_CHERRYVIEW(encoder->base.dev))
>>  		pclk = vlv_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
>>  
>>  	if (!pclk)
>> @@ -869,7 +869,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>>  	}
>>  
>>  	for_each_dsi_port(port, intel_dsi->ports) {
>> -		if (IS_VALLEYVIEW(dev)) {
>> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  			/*
>>  			 * escape clock divider, 20MHz, shared for A and C.
>>  			 * device ready must be off when doing this! txclkesc?
>> @@ -1129,7 +1129,7 @@ void intel_dsi_init(struct drm_device *dev)
>>  	if (!dev_priv->vbt.has_mipi)
>>  		return;
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		dev_priv->mipi_mmio_base = VLV_MIPI_BASE;
>>  	} else {
>>  		DRM_ERROR("Unsupported Mipi device to reg base");
>> diff --git a/drivers/gpu/drm/i915/intel_dsi_pll.c b/drivers/gpu/drm/i915/intel_dsi_pll.c
>> index cb3cf39..fbd2b51 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi_pll.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi_pll.c
>> @@ -561,7 +561,7 @@ void intel_enable_dsi_pll(struct intel_encoder *encoder)
>>  {
>>  	struct drm_device *dev = encoder->base.dev;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_enable_dsi_pll(encoder);
>>  	else if (IS_BROXTON(dev))
>>  		bxt_enable_dsi_pll(encoder);
>> @@ -571,7 +571,7 @@ void intel_disable_dsi_pll(struct intel_encoder *encoder)
>>  {
>>  	struct drm_device *dev = encoder->base.dev;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_disable_dsi_pll(encoder);
>>  	else if (IS_BROXTON(dev))
>>  		bxt_disable_dsi_pll(encoder);
>> @@ -599,6 +599,6 @@ void intel_dsi_reset_clocks(struct intel_encoder *encoder, enum port port)
>>  
>>  	if (IS_BROXTON(dev))
>>  		bxt_dsi_reset_clocks(encoder, port);
>> -	else if (IS_VALLEYVIEW(dev))
>> +	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		vlv_dsi_reset_clocks(encoder, port);
>>  }
>> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
>> index c3978ba..be7fab9 100644
>> --- a/drivers/gpu/drm/i915/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
>> @@ -638,7 +638,7 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder)
>>  
>>  	if (HAS_DDI(dev_priv))
>>  		reg = HSW_TVIDEO_DIP_GCP(crtc->config->cpu_transcoder);
>> -	else if (IS_VALLEYVIEW(dev_priv))
>> +	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		reg = VLV_TVIDEO_DIP_GCP(crtc->pipe);
>>  	else if (HAS_PCH_SPLIT(dev_priv->dev))
>>  		reg = TVIDEO_DIP_GCP(crtc->pipe);
>> @@ -2100,7 +2100,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>>  		BUG();
>>  	}
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		intel_hdmi->write_infoframe = vlv_write_infoframe;
>>  		intel_hdmi->set_infoframes = vlv_set_infoframes;
>>  		intel_hdmi->infoframe_enabled = vlv_infoframe_enabled;
>> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
>> index b177857..a294a3c 100644
>> --- a/drivers/gpu/drm/i915/intel_hotplug.c
>> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
>> @@ -407,7 +407,7 @@ void intel_hpd_irq_handler(struct drm_device *dev,
>>  			 * hotplug bits itself. So only WARN about unexpected
>>  			 * interrupts on saner platforms.
>>  			 */
>> -			WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev),
>> +			WARN_ONCE(!HAS_GMCH_DISPLAY(dev),
>>  				  "Received HPD interrupt on pin %d although disabled\n", i);
>>  			continue;
>>  		}
>> diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
>> index e26e22a..25254b5 100644
>> --- a/drivers/gpu/drm/i915/intel_i2c.c
>> +++ b/drivers/gpu/drm/i915/intel_i2c.c
>> @@ -636,7 +636,7 @@ int intel_setup_gmbus(struct drm_device *dev)
>>  	if (HAS_PCH_NOP(dev))
>>  		return 0;
>>  
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		dev_priv->gpio_mmio_base = VLV_DISPLAY_BASE;
>>  	else if (!HAS_GMCH_DISPLAY(dev_priv))
>>  		dev_priv->gpio_mmio_base =
>> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
>> index ae808b6..72183a0 100644
>> --- a/drivers/gpu/drm/i915/intel_panel.c
>> +++ b/drivers/gpu/drm/i915/intel_panel.c
>> @@ -1784,7 +1784,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel)
>>  		panel->backlight.set = pch_set_backlight;
>>  		panel->backlight.get = pch_get_backlight;
>>  		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		if (dev_priv->vbt.has_mipi) {
>>  			panel->backlight.setup = pwm_setup_backlight;
>>  			panel->backlight.enable = pwm_enable_backlight;
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
>> index ee05ce8..fe56181 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -291,7 +291,7 @@ void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable)
>>  	struct drm_device *dev = dev_priv->dev;
>>  	u32 val;
>>  
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		I915_WRITE(FW_BLC_SELF_VLV, enable ? FW_CSPWRDWNEN : 0);
>>  		POSTING_READ(FW_BLC_SELF_VLV);
>>  		dev_priv->wm.vlv.cxsr = enable;
>> @@ -4405,7 +4405,7 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
>>  
>>  	mutex_lock(&dev_priv->rps.hw_lock);
>>  	if (dev_priv->rps.enabled) {
>> -		if (IS_VALLEYVIEW(dev))
>> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  			vlv_set_rps_idle(dev_priv);
>>  		else
>>  			gen6_set_rps(dev_priv->dev, dev_priv->rps.idle_freq);
>> @@ -4458,7 +4458,7 @@ void gen6_rps_boost(struct drm_i915_private *dev_priv,
>>  
>>  void intel_set_rps(struct drm_device *dev, u8 val)
>>  {
>> -	if (IS_VALLEYVIEW(dev))
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
>>  		valleyview_set_rps(dev, val);
>>  	else
>>  		gen6_set_rps(dev, val);
>> @@ -4502,7 +4502,7 @@ static void valleyview_disable_rps(struct drm_device *dev)
>>  
>>  static void intel_print_rc6_info(struct drm_device *dev, u32 mode)
>>  {
>> -	if (IS_VALLEYVIEW(dev)) {
>> +	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		if (mode & (GEN7_RC_CTL_TO_MODE | GEN6_RC_CTL_EI_MODE(1)))
>>  			mode = GEN6_RC_CTL_RC6_ENABLE;
>>  		else
>> diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
>> index b6609e6..1778a7d 100644
>> --- a/drivers/gpu/drm/i915/intel_psr.c
>> +++ b/drivers/gpu/drm/i915/intel_psr.c
>> @@ -332,8 +332,8 @@ static bool intel_psr_match_conditions(struct intel_dp *intel_dp)
>>  		return false;
>>  	}
>>  
>> -	if (!IS_VALLEYVIEW(dev) && ((dev_priv->vbt.psr.full_link) ||
>> -				    (dig_port->port != PORT_A))) {
>> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
>> +	    ((dev_priv->vbt.psr.full_link) || (dig_port->port != PORT_A))) {
>>  		DRM_DEBUG_KMS("PSR condition failed: Link Standby requested/needed but not supported on this platform\n");
>>  		return false;
>>  	}
>> @@ -650,7 +650,7 @@ void intel_psr_single_frame_update(struct drm_device *dev,
>>  	 * Single frame update is already supported on BDW+ but it requires
>>  	 * many W/A and it isn't really needed.
>>  	 */
>> -	if (!IS_VALLEYVIEW(dev))
>> +	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
>>  		return;
>>  
>>  	mutex_lock(&dev_priv->psr.lock);
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
>> index 2b96f33..f8bf622 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -951,7 +951,7 @@ int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
>>  	if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE))
>>  		return -EINVAL;
>>  
>> -	if (IS_VALLEYVIEW(dev) &&
>> +	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
>>  	    set->flags & I915_SET_COLORKEY_DESTINATION)
>>  		return -EINVAL;
>>  
>> @@ -1086,7 +1086,7 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane)
>>  			intel_plane->max_downscale = 1;
>>  		}
>>  
>> -		if (IS_VALLEYVIEW(dev)) {
>> +		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  			intel_plane->update_plane = vlv_update_plane;
>>  			intel_plane->disable_plane = vlv_disable_plane;
>>  
>> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
>> index c2358ba..fcf04fe 100644
>> --- a/drivers/gpu/drm/i915/intel_uncore.c
>> +++ b/drivers/gpu/drm/i915/intel_uncore.c
>> @@ -1115,7 +1115,7 @@ static void fw_domain_init(struct drm_i915_private *dev_priv,
>>  		d->val_clear = _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL);
>>  	}
>>  
>> -	if (IS_VALLEYVIEW(dev_priv))
>> +	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>>  		d->reg_post = FORCEWAKE_ACK_VLV;
>>  	else if (IS_GEN6(dev_priv) || IS_GEN7(dev_priv) || IS_GEN8(dev_priv))
>>  		d->reg_post = ECOBUS;
>> @@ -1148,7 +1148,7 @@ static void intel_uncore_fw_domains_init(struct drm_device *dev)
>>  			       FORCEWAKE_ACK_BLITTER_GEN9);
>>  		fw_domain_init(dev_priv, FW_DOMAIN_ID_MEDIA,
>>  			       FORCEWAKE_MEDIA_GEN9, FORCEWAKE_ACK_MEDIA_GEN9);
>> -	} else if (IS_VALLEYVIEW(dev)) {
>> +	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
>>  		dev_priv->uncore.funcs.force_wake_get = fw_domains_get;
>>  		if (!IS_CHERRYVIEW(dev))
>>  			dev_priv->uncore.funcs.force_wake_put =
>> -- 
>> 2.6.3
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index a8721fc..fff31253 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1142,8 +1142,34 @@  static int i915_frequency_info(struct seq_file *m, void *unused)
 			   MEMSTAT_VID_SHIFT);
 		seq_printf(m, "Current P-state: %d\n",
 			   (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT);
-	} else if (IS_GEN6(dev) || (IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) ||
-		   IS_BROADWELL(dev) || IS_GEN9(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
+		u32 freq_sts;
+
+		mutex_lock(&dev_priv->rps.hw_lock);
+		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
+		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
+		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
+
+		seq_printf(m, "actual GPU freq: %d MHz\n",
+			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
+
+		seq_printf(m, "current GPU freq: %d MHz\n",
+			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
+
+		seq_printf(m, "max GPU freq: %d MHz\n",
+			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
+
+		seq_printf(m, "min GPU freq: %d MHz\n",
+			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
+
+		seq_printf(m, "idle GPU freq: %d MHz\n",
+			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
+
+		seq_printf(m,
+			   "efficient (RPe) frequency: %d MHz\n",
+			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
+		mutex_unlock(&dev_priv->rps.hw_lock);
+	} else if (INTEL_INFO(dev)->gen >= 6) {
 		u32 rp_state_limits;
 		u32 gt_perf_status;
 		u32 rp_state_cap;
@@ -1284,33 +1310,6 @@  static int i915_frequency_info(struct seq_file *m, void *unused)
 		seq_printf(m,
 			   "efficient (RPe) frequency: %d MHz\n",
 			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
-	} else if (IS_VALLEYVIEW(dev)) {
-		u32 freq_sts;
-
-		mutex_lock(&dev_priv->rps.hw_lock);
-		freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
-		seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
-		seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq);
-
-		seq_printf(m, "actual GPU freq: %d MHz\n",
-			   intel_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
-
-		seq_printf(m, "current GPU freq: %d MHz\n",
-			   intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
-
-		seq_printf(m, "max GPU freq: %d MHz\n",
-			   intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
-
-		seq_printf(m, "min GPU freq: %d MHz\n",
-			   intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
-
-		seq_printf(m, "idle GPU freq: %d MHz\n",
-			   intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
-
-		seq_printf(m,
-			   "efficient (RPe) frequency: %d MHz\n",
-			   intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
-		mutex_unlock(&dev_priv->rps.hw_lock);
 	} else {
 		seq_puts(m, "no P-state info available\n");
 	}
@@ -1602,7 +1601,7 @@  static int i915_drpc_info(struct seq_file *m, void *unused)
 	struct drm_info_node *node = m->private;
 	struct drm_device *dev = node->minor->dev;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		return vlv_drpc_info(m);
 	else if (INTEL_INFO(dev)->gen >= 6)
 		return gen6_drpc_info(m);
@@ -1743,7 +1742,7 @@  static int i915_sr_status(struct seq_file *m, void *unused)
 		sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN;
 	else if (IS_PINEVIEW(dev))
 		sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN;
-	else if (IS_VALLEYVIEW(dev))
+	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN;
 
 	intel_runtime_pm_put(dev_priv);
@@ -3983,7 +3982,7 @@  static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
 		ret = i8xx_pipe_crc_ctl_reg(&source, &val);
 	else if (INTEL_INFO(dev)->gen < 5)
 		ret = i9xx_pipe_crc_ctl_reg(dev, pipe, &source, &val);
-	else if (IS_VALLEYVIEW(dev))
+	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		ret = vlv_pipe_crc_ctl_reg(dev, pipe, &source, &val);
 	else if (IS_GEN5(dev) || IS_GEN6(dev))
 		ret = ilk_pipe_crc_ctl_reg(&source, &val);
@@ -4052,7 +4051,7 @@  static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
 
 		if (IS_G4X(dev))
 			g4x_undo_pipe_scramble_reset(dev, pipe);
-		else if (IS_VALLEYVIEW(dev))
+		else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 			vlv_undo_pipe_scramble_reset(dev, pipe);
 		else if (IS_HASWELL(dev) && pipe == PIPE_A)
 			hsw_trans_edp_pipe_A_crc_wa(dev, false);
@@ -4442,7 +4441,8 @@  static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
 		 * - WM1+ latency values in 0.5us units
 		 * - latencies are in us on gen9/vlv/chv
 		 */
-		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev))
+		if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev) ||
+		    IS_CHERRYVIEW(dev))
 			latency *= 10;
 		else if (level > 0)
 			latency *= 5;
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index a81c766..083e2c0 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -256,7 +256,7 @@  intel_setup_mchbar(struct drm_device *dev)
 	u32 temp;
 	bool enabled;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		return;
 
 	dev_priv->mchbar_need_disable = false;
@@ -779,7 +779,7 @@  static void intel_device_info_runtime_init(struct drm_device *dev)
 		info->num_sprites[PIPE_A] = 2;
 		info->num_sprites[PIPE_B] = 2;
 		info->num_sprites[PIPE_C] = 1;
-	} else if (IS_VALLEYVIEW(dev))
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		for_each_pipe(dev_priv, pipe)
 			info->num_sprites[pipe] = 2;
 	else
@@ -791,7 +791,7 @@  static void intel_device_info_runtime_init(struct drm_device *dev)
 		info->num_pipes = 0;
 	} else if (info->num_pipes > 0 &&
 		   (INTEL_INFO(dev)->gen == 7 || INTEL_INFO(dev)->gen == 8) &&
-		   !IS_VALLEYVIEW(dev)) {
+		   !(IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))) {
 		u32 fuse_strap = I915_READ(FUSE_STRAP);
 		u32 sfuse_strap = I915_READ(SFUSE_STRAP);
 
@@ -836,9 +836,6 @@  static void intel_device_info_runtime_init(struct drm_device *dev)
 
 static void intel_init_dpio(struct drm_i915_private *dev_priv)
 {
-	if (!IS_VALLEYVIEW(dev_priv))
-		return;
-
 	/*
 	 * IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C),
 	 * CHV x1 PHY (DP/HDMI D)
@@ -847,7 +844,7 @@  static void intel_init_dpio(struct drm_i915_private *dev_priv)
 	if (IS_CHERRYVIEW(dev_priv)) {
 		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2;
 		DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO;
-	} else {
+	} else if (IS_VALLEYVIEW(dev_priv)) {
 		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO;
 	}
 }
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index e6935f1..1fbbe8e 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -311,7 +311,7 @@  static const struct intel_device_info intel_cherryview_info = {
 	.gen = 8, .num_pipes = 3,
 	.need_gfx_hws = 1, .has_hotplug = 1,
 	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
-	.is_valleyview = 1,
+	.is_cherryview = 1,
 	.display_mmio_offset = VLV_DISPLAY_BASE,
 	GEN_CHV_PIPEOFFSETS,
 	CURSOR_OFFSETS,
@@ -802,7 +802,7 @@  static int i915_drm_resume_early(struct drm_device *dev)
 
 	pci_set_master(dev->pdev);
 
-	if (IS_VALLEYVIEW(dev_priv))
+	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		ret = vlv_resume_prepare(dev_priv, false);
 	if (ret)
 		DRM_ERROR("Resume prepare failed: %d, continuing anyway\n",
@@ -1532,7 +1532,7 @@  static int intel_runtime_resume(struct device *device)
 		ret = bxt_resume_prepare(dev_priv);
 	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
 		hsw_disable_pc8(dev_priv);
-	else if (IS_VALLEYVIEW(dev_priv))
+	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		ret = vlv_resume_prepare(dev_priv, true);
 
 	/*
@@ -1549,7 +1549,7 @@  static int intel_runtime_resume(struct device *device)
 	 * power well, so hpd is reinitialized from there. For
 	 * everyone else do it here.
 	 */
-	if (!IS_VALLEYVIEW(dev_priv))
+	if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
 		intel_hpd_init(dev_priv);
 
 	intel_enable_gt_powersave(dev);
@@ -1574,7 +1574,7 @@  static int intel_suspend_complete(struct drm_i915_private *dev_priv)
 		ret = bxt_suspend_complete(dev_priv);
 	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
 		ret = hsw_suspend_complete(dev_priv);
-	else if (IS_VALLEYVIEW(dev_priv))
+	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		ret = vlv_suspend_complete(dev_priv);
 	else
 		ret = 0;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f1a8a53..3899f23 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -763,6 +763,7 @@  struct intel_csr {
 	func(is_crestline) sep \
 	func(is_ivybridge) sep \
 	func(is_valleyview) sep \
+	func(is_cherryview) sep \
 	func(is_haswell) sep \
 	func(is_skylake) sep \
 	func(is_broxton) sep \
@@ -2455,9 +2456,9 @@  struct drm_i915_cmd_table {
 				 INTEL_DEVID(dev) == 0x0152 || \
 				 INTEL_DEVID(dev) == 0x015a)
 #define IS_VALLEYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview)
-#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
+#define IS_CHERRYVIEW(dev)	(INTEL_INFO(dev)->is_cherryview)
 #define IS_HASWELL(dev)	(INTEL_INFO(dev)->is_haswell)
-#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_valleyview && IS_GEN8(dev))
+#define IS_BROADWELL(dev)	(!INTEL_INFO(dev)->is_cherryview && IS_GEN8(dev))
 #define IS_SKYLAKE(dev)	(INTEL_INFO(dev)->is_skylake)
 #define IS_BROXTON(dev)		(INTEL_INFO(dev)->is_broxton)
 #define IS_KABYLAKE(dev)	(INTEL_INFO(dev)->is_kabylake)
@@ -2584,7 +2585,8 @@  struct drm_i915_cmd_table {
 				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
 #define HAS_RUNTIME_PM(dev)	(IS_GEN6(dev) || IS_HASWELL(dev) || \
 				 IS_BROADWELL(dev) || IS_VALLEYVIEW(dev) || \
-				 IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
+				 IS_CHERRYVIEW(dev) || IS_SKYLAKE(dev) || \
+				 IS_KABYLAKE(dev))
 #define HAS_RC6(dev)		(INTEL_INFO(dev)->gen >= 6)
 #define HAS_RC6p(dev)		(INTEL_INFO(dev)->gen == 6 || IS_IVYBRIDGE(dev))
 
@@ -2597,7 +2599,8 @@  struct drm_i915_cmd_table {
 				    INTEL_INFO(dev)->gen >= 8)
 
 #define HAS_CORE_RING_FREQ(dev)	(INTEL_INFO(dev)->gen >= 6 && \
-				 !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
+				 !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && \
+				 !IS_BROXTON(dev))
 
 #define INTEL_PCH_DEVICE_ID_MASK		0xff00
 #define INTEL_PCH_IBX_DEVICE_ID_TYPE		0x3b00
@@ -2620,7 +2623,8 @@  struct drm_i915_cmd_table {
 #define HAS_PCH_NOP(dev) (INTEL_PCH_TYPE(dev) == PCH_NOP)
 #define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE)
 
-#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || IS_VALLEYVIEW(dev))
+#define HAS_GMCH_DISPLAY(dev) (INTEL_INFO(dev)->gen < 5 || \
+			       IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 
 /* DPF == dynamic parity feature */
 #define HAS_L3_DPF(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev))
@@ -3511,7 +3515,7 @@  __raw_write(64, q)
 
 static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
 {
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		return VLV_VGACNTRL;
 	else if (INTEL_INFO(dev)->gen >= 5)
 		return CPU_VGACNTRL;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index dfaf25b..e96e496 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4838,7 +4838,7 @@  int i915_gem_init(struct drm_device *dev)
 
 	mutex_lock(&dev->struct_mutex);
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/* VLVA0 (potential hack), BIOS isn't actually waking us */
 		I915_WRITE(VLV_GTLC_WAKE_CTRL, VLV_GTLC_ALLOWWAKEREQ);
 		if (wait_for((I915_READ(VLV_GTLC_PW_STATUS) &
@@ -4963,7 +4963,7 @@  i915_gem_load(struct drm_device *dev)
 
 	dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL;
 
-	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev))
+	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
 		dev_priv->num_fence_regs = 32;
 	else if (INTEL_INFO(dev)->gen >= 4 || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
 		dev_priv->num_fence_regs = 16;
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 43761c5..4b1161d 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -190,7 +190,7 @@  i915_gem_alloc_context_obj(struct drm_device *dev, size_t size)
 	 * would make the object snooped which might have a
 	 * negative performance impact.
 	 */
-	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev)) {
+	if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 		ret = i915_gem_object_set_cache_level(obj, I915_CACHE_L3_LLC);
 		/* Failure shouldn't ever happen this early */
 		if (WARN_ON(ret)) {
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 1f7e6b9..963d9b6 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -140,8 +140,7 @@  static int sanitize_enable_ppgtt(struct drm_device *dev, int enable_ppgtt)
 #endif
 
 	/* Early VLV doesn't have this */
-	if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
-	    dev->pdev->revision < 0xb) {
+	if (IS_VALLEYVIEW(dev) && dev->pdev->revision < 0xb) {
 		DRM_DEBUG_DRIVER("disabling PPGTT on pre-B3 step VLV\n");
 		return 0;
 	}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index e88d692..86664d1 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -581,7 +581,7 @@  i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
 {
 	u32 enable_mask;
 
-	if (IS_VALLEYVIEW(dev_priv->dev))
+	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
 							   status_mask);
 	else
@@ -595,7 +595,7 @@  i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
 {
 	u32 enable_mask;
 
-	if (IS_VALLEYVIEW(dev_priv->dev))
+	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		enable_mask = vlv_get_pipestat_enable_mask(dev_priv->dev,
 							   status_mask);
 	else
@@ -1723,7 +1723,7 @@  static void i9xx_hpd_irq_handler(struct drm_device *dev)
 	 */
 	POSTING_READ(PORT_HOTPLUG_STAT);
 
-	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
+	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
 
 		if (hotplug_trigger) {
@@ -4412,7 +4412,7 @@  void intel_irq_init(struct drm_i915_private *dev_priv)
 	INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work);
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
+	if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_DOWN_EI_EXPIRED | GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
index 2d91821..a2aa09c 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -49,7 +49,7 @@  static void i915_save_display(struct drm_device *dev)
 		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS);
 		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS);
 		dev_priv->regfile.savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR);
-	} else if (!IS_VALLEYVIEW(dev)) {
+	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 		dev_priv->regfile.savePP_CONTROL = I915_READ(PP_CONTROL);
 		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
 		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
@@ -84,7 +84,7 @@  static void i915_restore_display(struct drm_device *dev)
 		I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
 		I915_WRITE(PCH_PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
 		I915_WRITE(PCH_PP_CONTROL, dev_priv->regfile.savePP_CONTROL);
-	} else if (!IS_VALLEYVIEW(dev)) {
+	} else if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 		I915_WRITE(PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS);
 		I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
 		I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index f929c61..37e3f0d 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -49,7 +49,7 @@  static u32 calc_residency(struct drm_device *dev,
 	intel_runtime_pm_get(dev_priv);
 
 	/* On VLV and CHV, residency time is in CZ units rather than 1.28us */
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		units = 1;
 		div = dev_priv->czclk_freq;
 
@@ -284,7 +284,7 @@  static ssize_t gt_act_freq_mhz_show(struct device *kdev,
 	intel_runtime_pm_get(dev_priv);
 
 	mutex_lock(&dev_priv->rps.hw_lock);
-	if (IS_VALLEYVIEW(dev_priv->dev)) {
+	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		u32 freq;
 		freq = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
 		ret = intel_gpu_freq(dev_priv, (freq >> 8) & 0xff);
@@ -598,7 +598,7 @@  void i915_setup_sysfs(struct drm_device *dev)
 		if (ret)
 			DRM_ERROR("RC6p residency sysfs setup failed\n");
 	}
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		ret = sysfs_merge_group(&dev->primary->kdev->kobj,
 					&media_rc6_attr_group);
 		if (ret)
@@ -619,7 +619,7 @@  void i915_setup_sysfs(struct drm_device *dev)
 	}
 
 	ret = 0;
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		ret = sysfs_create_files(&dev->primary->kdev->kobj, vlv_attrs);
 	else if (INTEL_INFO(dev)->gen >= 6)
 		ret = sysfs_create_files(&dev->primary->kdev->kobj, gen6_attrs);
@@ -635,7 +635,7 @@  void i915_setup_sysfs(struct drm_device *dev)
 void i915_teardown_sysfs(struct drm_device *dev)
 {
 	sysfs_remove_bin_file(&dev->primary->kdev->kobj, &error_state_attr);
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		sysfs_remove_files(&dev->primary->kdev->kobj, vlv_attrs);
 	else
 		sysfs_remove_files(&dev->primary->kdev->kobj, gen6_attrs);
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 9aa83e7..06fffae 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -375,7 +375,7 @@  static void ilk_audio_codec_disable(struct intel_encoder *encoder)
 	if (HAS_PCH_IBX(dev_priv->dev)) {
 		aud_config = IBX_AUD_CFG(pipe);
 		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
-	} else if (IS_VALLEYVIEW(dev_priv)) {
+	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		aud_config = VLV_AUD_CFG(pipe);
 		aud_cntrl_st2 = VLV_AUD_CNTL_ST2;
 	} else {
@@ -435,7 +435,8 @@  static void ilk_audio_codec_enable(struct drm_connector *connector,
 		aud_config = IBX_AUD_CFG(pipe);
 		aud_cntl_st = IBX_AUD_CNTL_ST(pipe);
 		aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
-	} else if (IS_VALLEYVIEW(connector->dev)) {
+	} else if (IS_VALLEYVIEW(connector->dev) ||
+		   IS_CHERRYVIEW(connector->dev)) {
 		hdmiw_hdmiedid = VLV_HDMIW_HDMIEDID(pipe);
 		aud_config = VLV_AUD_CFG(pipe);
 		aud_cntl_st = VLV_AUD_CNTL_ST(pipe);
@@ -559,7 +560,7 @@  void intel_init_audio(struct drm_device *dev)
 	if (IS_G4X(dev)) {
 		dev_priv->display.audio_codec_enable = g4x_audio_codec_enable;
 		dev_priv->display.audio_codec_disable = g4x_audio_codec_disable;
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		dev_priv->display.audio_codec_enable = ilk_audio_codec_enable;
 		dev_priv->display.audio_codec_disable = ilk_audio_codec_disable;
 	} else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) {
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b59a2d8..d3b643b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -187,7 +187,7 @@  int intel_hrawclk(struct drm_device *dev)
 	uint32_t clkcfg;
 
 	/* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		return 200;
 
 	clkcfg = I915_READ(CLKCFG);
@@ -215,7 +215,7 @@  int intel_hrawclk(struct drm_device *dev)
 
 static void intel_update_czclk(struct drm_i915_private *dev_priv)
 {
-	if (!IS_VALLEYVIEW(dev_priv))
+	if (!(IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)))
 		return;
 
 	dev_priv->czclk_freq = vlv_get_cck_clock_hpll(dev_priv, "czclk",
@@ -716,11 +716,12 @@  static bool intel_PLL_is_valid(struct drm_device *dev,
 	if (clock->m1  < limit->m1.min  || limit->m1.max  < clock->m1)
 		INTELPllInvalid("m1 out of range\n");
 
-	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
+	if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) &&
+	    !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev))
 		if (clock->m1 <= clock->m2)
 			INTELPllInvalid("m1 <= m2\n");
 
-	if (!IS_VALLEYVIEW(dev) && !IS_BROXTON(dev)) {
+	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev)) {
 		if (clock->p < limit->p.min || limit->p.max < clock->p)
 			INTELPllInvalid("p out of range\n");
 		if (clock->m < limit->m.min || limit->m.max < clock->m)
@@ -1305,7 +1306,7 @@  void assert_panel_unlocked(struct drm_i915_private *dev_priv,
 		    I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT)
 			panel_pipe = PIPE_B;
 		/* XXX: else fix for eDP */
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/* presumably write lock depends on pipe, not port select */
 		pp_reg = VLV_PIPE_PP_CONTROL(pipe);
 		panel_pipe = pipe;
@@ -1423,7 +1424,7 @@  static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
 			     "plane %d assertion failure, should be off on pipe %c but is still active\n",
 			     sprite, pipe_name(pipe));
 		}
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		for_each_sprite(dev_priv, pipe, sprite) {
 			u32 val = I915_READ(SPCNTR(pipe, sprite));
 			I915_STATE_WARN(val & SP_ENABLE,
@@ -2319,7 +2320,7 @@  static unsigned int intel_linear_alignment(struct drm_i915_private *dev_priv)
 	if (INTEL_INFO(dev_priv)->gen >= 9)
 		return 256 * 1024;
 	else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv) ||
-		 IS_VALLEYVIEW(dev_priv))
+		 IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		return 128 * 1024;
 	else if (INTEL_INFO(dev_priv)->gen >= 4)
 		return 4 * 1024;
@@ -5455,7 +5456,7 @@  static void intel_update_cdclk(struct drm_device *dev)
 	 * BSpec erroneously claims we should aim for 4MHz, but
 	 * in fact 1MHz is the correct frequency.
 	 */
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/*
 		 * Program the gmbus_freq based on the cdclk frequency.
 		 * BSpec erroneously claims we should aim for 4MHz, but
@@ -7180,7 +7181,7 @@  static int i9xx_get_refclk(const struct intel_crtc_state *crtc_state,
 
 	WARN_ON(!crtc_state->base.state);
 
-	if (IS_VALLEYVIEW(dev) || IS_BROXTON(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev) || IS_BROXTON(dev)) {
 		refclk = 100000;
 	} else if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS) &&
 	    intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
@@ -7879,7 +7880,7 @@  static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
 		pipeconf |= PIPECONF_DOUBLE_WIDE;
 
 	/* only g4x and later have fancy bpc/dither controls */
-	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
+	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/* Bspec claims that we can't use dithering for 30bpp pipes. */
 		if (intel_crtc->config->dither && intel_crtc->config->pipe_bpp != 30)
 			pipeconf |= PIPECONF_DITHER_EN |
@@ -7919,7 +7920,8 @@  static void i9xx_set_pipeconf(struct intel_crtc *intel_crtc)
 	} else
 		pipeconf |= PIPECONF_PROGRESSIVE;
 
-	if (IS_VALLEYVIEW(dev) && intel_crtc->config->limited_color_range)
+	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
+	     intel_crtc->config->limited_color_range)
 		pipeconf |= PIPECONF_COLOR_RANGE_SELECT;
 
 	I915_WRITE(PIPECONF(intel_crtc->pipe), pipeconf);
@@ -8166,7 +8168,7 @@  static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
 	if (!(tmp & PIPECONF_ENABLE))
 		return false;
 
-	if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
+	if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		switch (tmp & PIPECONF_BPC_MASK) {
 		case PIPECONF_6BPC:
 			pipe_config->pipe_bpp = 18;
@@ -8182,7 +8184,8 @@  static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
 		}
 	}
 
-	if (IS_VALLEYVIEW(dev) && (tmp & PIPECONF_COLOR_RANGE_SELECT))
+	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
+	    (tmp & PIPECONF_COLOR_RANGE_SELECT))
 		pipe_config->limited_color_range = true;
 
 	if (INTEL_INFO(dev)->gen < 4)
@@ -8210,7 +8213,7 @@  static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
 		pipe_config->pixel_multiplier = 1;
 	}
 	pipe_config->dpll_hw_state.dpll = I915_READ(DPLL(crtc->pipe));
-	if (!IS_VALLEYVIEW(dev)) {
+	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 		/*
 		 * DPLL_DVO_2X_MODE must be enabled for both DPLLs
 		 * on 830. Filter it out here so that we don't
@@ -11537,7 +11540,7 @@  static int intel_crtc_page_flip(struct drm_crtc *crtc,
 	if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev))
 		work->flip_count = I915_READ(PIPE_FLIPCOUNT_G4X(pipe)) + 1;
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		ring = &dev_priv->ring[BCS];
 		if (obj->tiling_mode != intel_fb_obj(work->old_fb)->tiling_mode)
 			/* vlv: DISPLAY_FLIP fails to change tiling */
@@ -12016,7 +12019,7 @@  compute_baseline_pipe_bpp(struct intel_crtc *crtc,
 	struct drm_connector_state *connector_state;
 	int bpp, i;
 
-	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)))
+	if ((IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)))
 		bpp = 10*3;
 	else if (INTEL_INFO(dev)->gen >= 5)
 		bpp = 12*3;
@@ -12626,7 +12629,7 @@  intel_pipe_config_compare(struct drm_device *dev,
 	PIPE_CONF_CHECK_I(pixel_multiplier);
 	PIPE_CONF_CHECK_I(has_hdmi_sink);
 	if ((INTEL_INFO(dev)->gen < 8 && !IS_HASWELL(dev)) ||
-	    IS_VALLEYVIEW(dev))
+	    IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		PIPE_CONF_CHECK_I(limited_color_range);
 	PIPE_CONF_CHECK_I(has_infoframe);
 
@@ -14378,7 +14381,7 @@  static void intel_setup_outputs(struct drm_device *dev)
 
 		if (I915_READ(PCH_DP_D) & DP_DETECTED)
 			intel_dp_init(dev, PCH_DP_D, PORT_D);
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/*
 		 * The DP_DETECTED bit is the latched state of the DDC
 		 * SDA pin at boot. However since eDP doesn't require DDC
@@ -14527,7 +14530,7 @@  u32 intel_fb_pitch_limit(struct drm_device *dev, uint64_t fb_modifier,
 		 *  pixels and 32K bytes."
 		 */
 		 return min(8192*drm_format_plane_cpp(pixel_format, 0), 32768);
-	} else if (gen >= 5 && !IS_VALLEYVIEW(dev)) {
+	} else if (gen >= 5 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 		return 32*1024;
 	} else if (gen >= 4) {
 		if (fb_modifier == I915_FORMAT_MOD_X_TILED)
@@ -14631,7 +14634,8 @@  static int intel_framebuffer_init(struct drm_device *dev,
 		}
 		break;
 	case DRM_FORMAT_ABGR8888:
-		if (!IS_VALLEYVIEW(dev) && INTEL_INFO(dev)->gen < 9) {
+		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
+		    INTEL_INFO(dev)->gen < 9) {
 			DRM_DEBUG("unsupported pixel format: %s\n",
 				  drm_get_format_name(mode_cmd->pixel_format));
 			return -EINVAL;
@@ -14647,7 +14651,7 @@  static int intel_framebuffer_init(struct drm_device *dev,
 		}
 		break;
 	case DRM_FORMAT_ABGR2101010:
-		if (!IS_VALLEYVIEW(dev)) {
+		if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
 			DRM_DEBUG("unsupported pixel format: %s\n",
 				  drm_get_format_name(mode_cmd->pixel_format));
 			return -EINVAL;
@@ -14775,7 +14779,7 @@  static void intel_init_display(struct drm_device *dev)
 		dev_priv->display.crtc_disable = ironlake_crtc_disable;
 		dev_priv->display.update_primary_plane =
 			ironlake_update_primary_plane;
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		dev_priv->display.get_pipe_config = i9xx_get_pipe_config;
 		dev_priv->display.get_initial_plane_config =
 			i9xx_get_initial_plane_config;
@@ -14808,7 +14812,7 @@  static void intel_init_display(struct drm_device *dev)
 	else if (IS_HASWELL(dev))
 		dev_priv->display.get_display_clock_speed =
 			haswell_get_display_clock_speed;
-	else if (IS_VALLEYVIEW(dev))
+	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		dev_priv->display.get_display_clock_speed =
 			valleyview_get_display_clock_speed;
 	else if (IS_GEN5(dev))
@@ -14866,7 +14870,7 @@  static void intel_init_display(struct drm_device *dev)
 			dev_priv->display.modeset_calc_cdclk =
 				broadwell_modeset_calc_cdclk;
 		}
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		dev_priv->display.modeset_commit_cdclk =
 			valleyview_modeset_commit_cdclk;
 		dev_priv->display.modeset_calc_cdclk =
@@ -15640,7 +15644,7 @@  intel_modeset_setup_hw_state(struct drm_device *dev)
 		pll->on = false;
 	}
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_wm_get_hw_state(dev);
 	else if (IS_GEN9(dev))
 		skl_wm_get_hw_state(dev);
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f335c92..1edeb3e 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -517,7 +517,7 @@  void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv)
 	struct drm_device *dev = dev_priv->dev;
 	struct intel_encoder *encoder;
 
-	if (WARN_ON(!IS_VALLEYVIEW(dev)))
+	if (WARN_ON(!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)))
 		return;
 
 	/*
@@ -582,7 +582,7 @@  static int edp_notify_handler(struct notifier_block *this, unsigned long code,
 
 	pps_lock(intel_dp);
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
 		i915_reg_t pp_ctrl_reg, pp_div_reg;
 		u32 pp_div;
@@ -610,7 +610,7 @@  static bool edp_have_panel_power(struct intel_dp *intel_dp)
 
 	lockdep_assert_held(&dev_priv->pps_mutex);
 
-	if (IS_VALLEYVIEW(dev) &&
+	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
 	    intel_dp->pps_pipe == INVALID_PIPE)
 		return false;
 
@@ -624,7 +624,7 @@  static bool edp_have_panel_vdd(struct intel_dp *intel_dp)
 
 	lockdep_assert_held(&dev_priv->pps_mutex);
 
-	if (IS_VALLEYVIEW(dev) &&
+	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
 	    intel_dp->pps_pipe == INVALID_PIPE)
 		return false;
 
@@ -1723,7 +1723,7 @@  static void intel_dp_prepare(struct intel_encoder *encoder)
 		I915_WRITE(TRANS_DP_CTL(crtc->pipe), trans_dp);
 	} else {
 		if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
-		    crtc->config->limited_color_range)
+		    !IS_CHERRYVIEW(dev) && crtc->config->limited_color_range)
 			intel_dp->DP |= DP_COLOR_RANGE_16_235;
 
 		if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
@@ -2418,7 +2418,7 @@  static void intel_dp_get_config(struct intel_encoder *encoder,
 	pipe_config->base.adjusted_mode.flags |= flags;
 
 	if (!HAS_PCH_SPLIT(dev) && !IS_VALLEYVIEW(dev) &&
-	    tmp & DP_COLOR_RANGE_16_235)
+	    !IS_CHERRYVIEW(dev) && tmp & DP_COLOR_RANGE_16_235)
 		pipe_config->limited_color_range = true;
 
 	pipe_config->has_dp_encoder = true;
@@ -2694,7 +2694,7 @@  static void intel_enable_dp(struct intel_encoder *encoder)
 
 	pps_lock(intel_dp);
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_init_panel_power_sequencer(intel_dp);
 
 	/*
@@ -2728,7 +2728,7 @@  static void intel_enable_dp(struct intel_encoder *encoder)
 
 	pps_unlock(intel_dp);
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		unsigned int lane_mask = 0x0;
 
 		if (IS_CHERRYVIEW(dev))
@@ -3218,7 +3218,7 @@  intel_dp_voltage_max(struct intel_dp *intel_dp)
 		if (dev_priv->edp_low_vswing && port == PORT_A)
 			return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
 		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
-	} else if (IS_VALLEYVIEW(dev))
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
 	else if (IS_GEN7(dev) && port == PORT_A)
 		return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
@@ -3259,7 +3259,7 @@  intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing)
 		default:
 			return DP_TRAIN_PRE_EMPH_LEVEL_0;
 		}
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
 		case DP_TRAIN_VOLTAGE_SWING_LEVEL_0:
 			return DP_TRAIN_PRE_EMPH_LEVEL_3;
@@ -4539,7 +4539,7 @@  bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
 		return cpt_digital_port_connected(dev_priv, port);
 	else if (IS_BROXTON(dev_priv))
 		return bxt_digital_port_connected(dev_priv, port);
-	else if (IS_VALLEYVIEW(dev_priv))
+	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		return vlv_digital_port_connected(dev_priv, port);
 	else
 		return g4x_digital_port_connected(dev_priv, port);
@@ -4933,7 +4933,7 @@  static void intel_dp_encoder_reset(struct drm_encoder *encoder)
 	 * Read out the current power sequencer assignment,
 	 * in case the BIOS did something with it.
 	 */
-	if (IS_VALLEYVIEW(encoder->dev))
+	if (IS_VALLEYVIEW(encoder->dev) || IS_CHERRYVIEW(encoder->dev))
 		vlv_initial_power_sequencer_setup(intel_dp);
 
 	intel_edp_panel_vdd_sanitize(intel_dp);
@@ -5293,7 +5293,7 @@  intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
 
 	/* Haswell doesn't have any port selection bits for the panel
 	 * power sequencer any more. */
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		port_sel = PANEL_PORT_SELECT_VLV(port);
 	} else if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) {
 		if (port == PORT_A)
@@ -5405,12 +5405,12 @@  static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
 
 		val = I915_READ(reg);
 		if (index > DRRS_HIGH_RR) {
-			if (IS_VALLEYVIEW(dev))
+			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 				val |= PIPECONF_EDP_RR_MODE_SWITCH_VLV;
 			else
 				val |= PIPECONF_EDP_RR_MODE_SWITCH;
 		} else {
-			if (IS_VALLEYVIEW(dev))
+			if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 				val &= ~PIPECONF_EDP_RR_MODE_SWITCH_VLV;
 			else
 				val &= ~PIPECONF_EDP_RR_MODE_SWITCH;
@@ -5777,7 +5777,7 @@  static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	}
 	mutex_unlock(&dev->mode_config.mutex);
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		intel_dp->edp_notifier.notifier_call = edp_notify_handler;
 		register_reboot_notifier(&intel_dp->edp_notifier);
 
@@ -5825,7 +5825,7 @@  intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 	/* intel_dp vfuncs */
 	if (INTEL_INFO(dev)->gen >= 9)
 		intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;
-	else if (IS_VALLEYVIEW(dev))
+	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		intel_dp->get_aux_clock_divider = vlv_get_aux_clock_divider;
 	else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
 		intel_dp->get_aux_clock_divider = hsw_get_aux_clock_divider;
@@ -5860,8 +5860,8 @@  intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 		intel_encoder->type = INTEL_OUTPUT_EDP;
 
 	/* eDP only on port B and/or C on vlv/chv */
-	if (WARN_ON(IS_VALLEYVIEW(dev) && is_edp(intel_dp) &&
-		    port != PORT_B && port != PORT_C))
+	if (WARN_ON((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
+		    is_edp(intel_dp) && port != PORT_B && port != PORT_C))
 		return false;
 
 	DRM_DEBUG_KMS("Adding %s connector on port %c\n",
@@ -5912,7 +5912,7 @@  intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 	if (is_edp(intel_dp)) {
 		pps_lock(intel_dp);
 		intel_dp_init_panel_power_timestamps(intel_dp);
-		if (IS_VALLEYVIEW(dev))
+		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 			vlv_initial_power_sequencer_setup(intel_dp);
 		else
 			intel_dp_init_panel_power_sequencer(dev, intel_dp);
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 230957f..25bdf1c 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -369,7 +369,7 @@  static void intel_dsi_device_ready(struct intel_encoder *encoder)
 {
 	struct drm_device *dev = encoder->base.dev;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_dsi_device_ready(encoder);
 	else if (IS_BROXTON(dev))
 		bxt_dsi_device_ready(encoder);
@@ -487,7 +487,7 @@  static void intel_dsi_pre_enable(struct intel_encoder *encoder)
 
 	msleep(intel_dsi->panel_on_delay);
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		/*
 		 * Disable DPOunit clock gating, can stall pipe
 		 * and we need DPLL REFA always enabled
@@ -684,8 +684,7 @@  static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
 		 * Enable bit does not get set. To check whether DSI Port C
 		 * was enabled in BIOS, check the Pipe B enable bit
 		 */
-		if (IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
-		    (port == PORT_C))
+		if (IS_VALLEYVIEW(dev) && port == PORT_C)
 			dpi_enabled = I915_READ(PIPECONF(PIPE_B)) &
 							PIPECONF_ENABLE;
 
@@ -716,7 +715,8 @@  static void intel_dsi_get_config(struct intel_encoder *encoder,
 
 	if (IS_BROXTON(encoder->base.dev))
 		pclk = bxt_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
-	else if (IS_VALLEYVIEW(encoder->base.dev))
+	else if (IS_VALLEYVIEW(encoder->base.dev) ||
+		 IS_CHERRYVIEW(encoder->base.dev))
 		pclk = vlv_get_dsi_pclk(encoder, pipe_config->pipe_bpp);
 
 	if (!pclk)
@@ -869,7 +869,7 @@  static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 	}
 
 	for_each_dsi_port(port, intel_dsi->ports) {
-		if (IS_VALLEYVIEW(dev)) {
+		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 			/*
 			 * escape clock divider, 20MHz, shared for A and C.
 			 * device ready must be off when doing this! txclkesc?
@@ -1129,7 +1129,7 @@  void intel_dsi_init(struct drm_device *dev)
 	if (!dev_priv->vbt.has_mipi)
 		return;
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		dev_priv->mipi_mmio_base = VLV_MIPI_BASE;
 	} else {
 		DRM_ERROR("Unsupported Mipi device to reg base");
diff --git a/drivers/gpu/drm/i915/intel_dsi_pll.c b/drivers/gpu/drm/i915/intel_dsi_pll.c
index cb3cf39..fbd2b51 100644
--- a/drivers/gpu/drm/i915/intel_dsi_pll.c
+++ b/drivers/gpu/drm/i915/intel_dsi_pll.c
@@ -561,7 +561,7 @@  void intel_enable_dsi_pll(struct intel_encoder *encoder)
 {
 	struct drm_device *dev = encoder->base.dev;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_enable_dsi_pll(encoder);
 	else if (IS_BROXTON(dev))
 		bxt_enable_dsi_pll(encoder);
@@ -571,7 +571,7 @@  void intel_disable_dsi_pll(struct intel_encoder *encoder)
 {
 	struct drm_device *dev = encoder->base.dev;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_disable_dsi_pll(encoder);
 	else if (IS_BROXTON(dev))
 		bxt_disable_dsi_pll(encoder);
@@ -599,6 +599,6 @@  void intel_dsi_reset_clocks(struct intel_encoder *encoder, enum port port)
 
 	if (IS_BROXTON(dev))
 		bxt_dsi_reset_clocks(encoder, port);
-	else if (IS_VALLEYVIEW(dev))
+	else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		vlv_dsi_reset_clocks(encoder, port);
 }
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index c3978ba..be7fab9 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -638,7 +638,7 @@  static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder)
 
 	if (HAS_DDI(dev_priv))
 		reg = HSW_TVIDEO_DIP_GCP(crtc->config->cpu_transcoder);
-	else if (IS_VALLEYVIEW(dev_priv))
+	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		reg = VLV_TVIDEO_DIP_GCP(crtc->pipe);
 	else if (HAS_PCH_SPLIT(dev_priv->dev))
 		reg = TVIDEO_DIP_GCP(crtc->pipe);
@@ -2100,7 +2100,7 @@  void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 		BUG();
 	}
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		intel_hdmi->write_infoframe = vlv_write_infoframe;
 		intel_hdmi->set_infoframes = vlv_set_infoframes;
 		intel_hdmi->infoframe_enabled = vlv_infoframe_enabled;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index b177857..a294a3c 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -407,7 +407,7 @@  void intel_hpd_irq_handler(struct drm_device *dev,
 			 * hotplug bits itself. So only WARN about unexpected
 			 * interrupts on saner platforms.
 			 */
-			WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev),
+			WARN_ONCE(!HAS_GMCH_DISPLAY(dev),
 				  "Received HPD interrupt on pin %d although disabled\n", i);
 			continue;
 		}
diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
index e26e22a..25254b5 100644
--- a/drivers/gpu/drm/i915/intel_i2c.c
+++ b/drivers/gpu/drm/i915/intel_i2c.c
@@ -636,7 +636,7 @@  int intel_setup_gmbus(struct drm_device *dev)
 	if (HAS_PCH_NOP(dev))
 		return 0;
 
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		dev_priv->gpio_mmio_base = VLV_DISPLAY_BASE;
 	else if (!HAS_GMCH_DISPLAY(dev_priv))
 		dev_priv->gpio_mmio_base =
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index ae808b6..72183a0 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1784,7 +1784,7 @@  intel_panel_init_backlight_funcs(struct intel_panel *panel)
 		panel->backlight.set = pch_set_backlight;
 		panel->backlight.get = pch_get_backlight;
 		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		if (dev_priv->vbt.has_mipi) {
 			panel->backlight.setup = pwm_setup_backlight;
 			panel->backlight.enable = pwm_enable_backlight;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index ee05ce8..fe56181 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -291,7 +291,7 @@  void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable)
 	struct drm_device *dev = dev_priv->dev;
 	u32 val;
 
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		I915_WRITE(FW_BLC_SELF_VLV, enable ? FW_CSPWRDWNEN : 0);
 		POSTING_READ(FW_BLC_SELF_VLV);
 		dev_priv->wm.vlv.cxsr = enable;
@@ -4405,7 +4405,7 @@  void gen6_rps_idle(struct drm_i915_private *dev_priv)
 
 	mutex_lock(&dev_priv->rps.hw_lock);
 	if (dev_priv->rps.enabled) {
-		if (IS_VALLEYVIEW(dev))
+		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 			vlv_set_rps_idle(dev_priv);
 		else
 			gen6_set_rps(dev_priv->dev, dev_priv->rps.idle_freq);
@@ -4458,7 +4458,7 @@  void gen6_rps_boost(struct drm_i915_private *dev_priv,
 
 void intel_set_rps(struct drm_device *dev, u8 val)
 {
-	if (IS_VALLEYVIEW(dev))
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
 		valleyview_set_rps(dev, val);
 	else
 		gen6_set_rps(dev, val);
@@ -4502,7 +4502,7 @@  static void valleyview_disable_rps(struct drm_device *dev)
 
 static void intel_print_rc6_info(struct drm_device *dev, u32 mode)
 {
-	if (IS_VALLEYVIEW(dev)) {
+	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		if (mode & (GEN7_RC_CTL_TO_MODE | GEN6_RC_CTL_EI_MODE(1)))
 			mode = GEN6_RC_CTL_RC6_ENABLE;
 		else
diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index b6609e6..1778a7d 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -332,8 +332,8 @@  static bool intel_psr_match_conditions(struct intel_dp *intel_dp)
 		return false;
 	}
 
-	if (!IS_VALLEYVIEW(dev) && ((dev_priv->vbt.psr.full_link) ||
-				    (dig_port->port != PORT_A))) {
+	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
+	    ((dev_priv->vbt.psr.full_link) || (dig_port->port != PORT_A))) {
 		DRM_DEBUG_KMS("PSR condition failed: Link Standby requested/needed but not supported on this platform\n");
 		return false;
 	}
@@ -650,7 +650,7 @@  void intel_psr_single_frame_update(struct drm_device *dev,
 	 * Single frame update is already supported on BDW+ but it requires
 	 * many W/A and it isn't really needed.
 	 */
-	if (!IS_VALLEYVIEW(dev))
+	if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev))
 		return;
 
 	mutex_lock(&dev_priv->psr.lock);
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 2b96f33..f8bf622 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -951,7 +951,7 @@  int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
 	if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE))
 		return -EINVAL;
 
-	if (IS_VALLEYVIEW(dev) &&
+	if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
 	    set->flags & I915_SET_COLORKEY_DESTINATION)
 		return -EINVAL;
 
@@ -1086,7 +1086,7 @@  intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane)
 			intel_plane->max_downscale = 1;
 		}
 
-		if (IS_VALLEYVIEW(dev)) {
+		if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 			intel_plane->update_plane = vlv_update_plane;
 			intel_plane->disable_plane = vlv_disable_plane;
 
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index c2358ba..fcf04fe 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1115,7 +1115,7 @@  static void fw_domain_init(struct drm_i915_private *dev_priv,
 		d->val_clear = _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL);
 	}
 
-	if (IS_VALLEYVIEW(dev_priv))
+	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		d->reg_post = FORCEWAKE_ACK_VLV;
 	else if (IS_GEN6(dev_priv) || IS_GEN7(dev_priv) || IS_GEN8(dev_priv))
 		d->reg_post = ECOBUS;
@@ -1148,7 +1148,7 @@  static void intel_uncore_fw_domains_init(struct drm_device *dev)
 			       FORCEWAKE_ACK_BLITTER_GEN9);
 		fw_domain_init(dev_priv, FW_DOMAIN_ID_MEDIA,
 			       FORCEWAKE_MEDIA_GEN9, FORCEWAKE_ACK_MEDIA_GEN9);
-	} else if (IS_VALLEYVIEW(dev)) {
+	} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
 		dev_priv->uncore.funcs.force_wake_get = fw_domains_get;
 		if (!IS_CHERRYVIEW(dev))
 			dev_priv->uncore.funcs.force_wake_put =