return to_i915(node->minor->dev);
  }
  
 -/* As the drm_debugfs_init() routines are called before dev->dev_private is
 - * allocated we need to hook into the minor for release. */
 -static int
 -drm_add_fake_info_node(struct drm_minor *minor,
 -                     struct dentry *ent,
 -                     const void *key)
 -{
 -      struct drm_info_node *node;
 -
 -      node = kmalloc(sizeof(*node), GFP_KERNEL);
 -      if (node == NULL) {
 -              debugfs_remove(ent);
 -              return -ENOMEM;
 -      }
 -
 -      node->minor = minor;
 -      node->dent = ent;
 -      node->info_ent = (void *)key;
 -
 -      mutex_lock(&minor->debugfs_lock);
 -      list_add(&node->list, &minor->debugfs_list);
 -      mutex_unlock(&minor->debugfs_lock);
 -
 -      return 0;
 -}
 -
+ static __always_inline void seq_print_param(struct seq_file *m,
+                                           const char *name,
+                                           const char *type,
+                                           const void *x)
+ {
+       if (!__builtin_strcmp(type, "bool"))
+               seq_printf(m, "i915.%s=%s\n", name, yesno(*(const bool *)x));
+       else if (!__builtin_strcmp(type, "int"))
+               seq_printf(m, "i915.%s=%d\n", name, *(const int *)x);
+       else if (!__builtin_strcmp(type, "unsigned int"))
+               seq_printf(m, "i915.%s=%u\n", name, *(const unsigned int *)x);
+       else if (!__builtin_strcmp(type, "char *"))
+               seq_printf(m, "i915.%s=%s\n", name, *(const char **)x);
+       else
+               BUILD_BUG();
+ }
+ 
  static int i915_capabilities(struct seq_file *m, void *data)
  {
        struct drm_i915_private *dev_priv = node_to_i915(m->private);
        .release = i915_forcewake_release,
  };
  
 -static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor)
 -{
 -      struct dentry *ent;
 -
 -      ent = debugfs_create_file("i915_forcewake_user",
 -                                S_IRUSR,
 -                                root, to_i915(minor->dev),
 -                                &i915_forcewake_fops);
 -      if (!ent)
 -              return -ENOMEM;
 -
 -      return drm_add_fake_info_node(minor, ent, &i915_forcewake_fops);
 -}
 -
+ static int i915_hpd_storm_ctl_show(struct seq_file *m, void *data)
+ {
+       struct drm_i915_private *dev_priv = m->private;
+       struct i915_hotplug *hotplug = &dev_priv->hotplug;
+ 
+       seq_printf(m, "Threshold: %d\n", hotplug->hpd_storm_threshold);
+       seq_printf(m, "Detected: %s\n",
+                  yesno(delayed_work_pending(&hotplug->reenable_work)));
+ 
+       return 0;
+ }
+ 
+ static ssize_t i915_hpd_storm_ctl_write(struct file *file,
+                                       const char __user *ubuf, size_t len,
+                                       loff_t *offp)
+ {
+       struct seq_file *m = file->private_data;
+       struct drm_i915_private *dev_priv = m->private;
+       struct i915_hotplug *hotplug = &dev_priv->hotplug;
+       unsigned int new_threshold;
+       int i;
+       char *newline;
+       char tmp[16];
+ 
+       if (len >= sizeof(tmp))
+               return -EINVAL;
+ 
+       if (copy_from_user(tmp, ubuf, len))
+               return -EFAULT;
+ 
+       tmp[len] = '\0';
+ 
+       /* Strip newline, if any */
+       newline = strchr(tmp, '\n');
+       if (newline)
+               *newline = '\0';
+ 
+       if (strcmp(tmp, "reset") == 0)
+               new_threshold = HPD_STORM_DEFAULT_THRESHOLD;
+       else if (kstrtouint(tmp, 10, &new_threshold) != 0)
+               return -EINVAL;
+ 
+       if (new_threshold > 0)
+               DRM_DEBUG_KMS("Setting HPD storm detection threshold to %d\n",
+                             new_threshold);
+       else
+               DRM_DEBUG_KMS("Disabling HPD storm detection\n");
+ 
+       spin_lock_irq(&dev_priv->irq_lock);
+       hotplug->hpd_storm_threshold = new_threshold;
+       /* Reset the HPD storm stats so we don't accidentally trigger a storm */
+       for_each_hpd_pin(i)
+               hotplug->stats[i].count = 0;
+       spin_unlock_irq(&dev_priv->irq_lock);
+ 
+       /* Re-enable hpd immediately if we were in an irq storm */
+       flush_delayed_work(&dev_priv->hotplug.reenable_work);
+ 
+       return len;
+ }
+ 
+ static int i915_hpd_storm_ctl_open(struct inode *inode, struct file *file)
+ {
+       return single_open(file, i915_hpd_storm_ctl_show, inode->i_private);
+ }
+ 
+ static const struct file_operations i915_hpd_storm_ctl_fops = {
+       .owner = THIS_MODULE,
+       .open = i915_hpd_storm_ctl_open,
+       .read = seq_read,
+       .llseek = seq_lseek,
+       .release = single_release,
+       .write = i915_hpd_storm_ctl_write
+ };
+ 
 -static int i915_debugfs_create(struct dentry *root,
 -                             struct drm_minor *minor,
 -                             const char *name,
 -                             const struct file_operations *fops)
 -{
 -      struct dentry *ent;
 -
 -      ent = debugfs_create_file(name,
 -                                S_IRUGO | S_IWUSR,
 -                                root, to_i915(minor->dev),
 -                                fops);
 -      if (!ent)
 -              return -ENOMEM;
 -
 -      return drm_add_fake_info_node(minor, ent, fops);
 -}
 -
  static const struct drm_info_list i915_debugfs_list[] = {
        {"i915_capabilities", i915_capabilities, 0},
        {"i915_gem_objects", i915_gem_object_info, 0},
 
  void intel_audio_codec_disable(struct intel_encoder *encoder);
  void i915_audio_component_init(struct drm_i915_private *dev_priv);
  void i915_audio_component_cleanup(struct drm_i915_private *dev_priv);
 +void intel_audio_init(struct drm_i915_private *dev_priv);
 +void intel_audio_deinit(struct drm_i915_private *dev_priv);
  
+ /* intel_cdclk.c */
+ void intel_init_cdclk_hooks(struct drm_i915_private *dev_priv);
+ void intel_update_max_cdclk(struct drm_i915_private *dev_priv);
+ void intel_update_cdclk(struct drm_i915_private *dev_priv);
+ void intel_update_rawclk(struct drm_i915_private *dev_priv);
+ bool intel_cdclk_state_compare(const struct intel_cdclk_state *a,
+                              const struct intel_cdclk_state *b);
+ void intel_set_cdclk(struct drm_i915_private *dev_priv,
+                    const struct intel_cdclk_state *cdclk_state);
+ 
  /* intel_display.c */
  enum transcoder intel_crtc_pch_transcoder(struct intel_crtc *crtc);
- void skl_set_preferred_cdclk_vco(struct drm_i915_private *dev_priv, int vco);
  void intel_update_rawclk(struct drm_i915_private *dev_priv);
+ int vlv_get_hpll_vco(struct drm_i915_private *dev_priv);
  int vlv_get_cck_clock(struct drm_i915_private *dev_priv,
                      const char *name, u32 reg, int ref_freq);
+ int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
+                          const char *name, u32 reg);
  void lpt_disable_pch_transcoder(struct drm_i915_private *dev_priv);
  void lpt_disable_iclkip(struct drm_i915_private *dev_priv);
  extern const struct drm_plane_funcs intel_plane_funcs;