struct ratelimit_state          throttling_logging_rs;
 };
 
+static inline struct amdgpu_device *drm_to_adev(struct drm_device *ddev)
+{
+       return ddev->dev_private;
+}
+
 static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev)
 {
        return container_of(bdev, struct amdgpu_device, mman.bdev);
 
                /* Can't handle buffers from different drivers */
                goto out_put;
 
-       adev = obj->dev->dev_private;
+       adev = drm_to_adev(obj->dev);
        bo = gem_to_amdgpu_bo(obj);
        if (!(bo->preferred_domains & (AMDGPU_GEM_DOMAIN_VRAM |
                                    AMDGPU_GEM_DOMAIN_GTT)))
 
                return -EINVAL;
 
        obj = dma_buf->priv;
-       if (obj->dev->dev_private != adev)
+       if (drm_to_adev(obj->dev) != adev)
                /* Can't handle buffers from other devices */
                return -EINVAL;
 
 
  */
 static void cail_reg_write(struct card_info *info, uint32_t reg, uint32_t val)
 {
-       struct amdgpu_device *adev = info->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(info->dev);
 
        WREG32(reg, val);
 }
  */
 static uint32_t cail_reg_read(struct card_info *info, uint32_t reg)
 {
-       struct amdgpu_device *adev = info->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(info->dev);
        uint32_t r;
 
        r = RREG32(reg);
  */
 static void cail_ioreg_write(struct card_info *info, uint32_t reg, uint32_t val)
 {
-       struct amdgpu_device *adev = info->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(info->dev);
 
        WREG32_IO(reg, val);
 }
  */
 static uint32_t cail_ioreg_read(struct card_info *info, uint32_t reg)
 {
-       struct amdgpu_device *adev = info->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(info->dev);
        uint32_t r;
 
        r = RREG32_IO(reg);
                                                 char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        struct atom_context *ctx = adev->mode_info.atom_context;
 
        return snprintf(buf, PAGE_SIZE, "%s\n", ctx->vbios_version);
 
 int amdgpu_bo_list_ioctl(struct drm_device *dev, void *data,
                                struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = filp->driver_priv;
        union drm_amdgpu_bo_list *args = data;
        uint32_t handle = args->in.list_handle;
 
 void amdgpu_connector_hotplug(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
        /* bail if the connector does not have hpd pin, e.g.,
 static void amdgpu_connector_get_edid(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
        if (amdgpu_connector->edid)
                                          uint64_t val)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_encoder *encoder;
        struct amdgpu_encoder *amdgpu_encoder;
 
                                            struct drm_display_mode *mode)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* XXX check mode bandwidth */
 
 amdgpu_connector_check_hpd_status_unchanged(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        enum drm_connector_status status;
 
 amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        const struct drm_encoder_helper_funcs *encoder_funcs;
        int r;
                                            struct drm_display_mode *mode)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
        /* XXX check mode bandwidth */
 bool amdgpu_connector_is_dp12_capable(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if ((adev->clock.default_dispclk >= 53900) &&
            amdgpu_connector_encoder_is_hbr2(connector)) {
 amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        enum drm_connector_status ret = connector_status_disconnected;
        struct amdgpu_connector_atom_dig *amdgpu_dig_connector = amdgpu_connector->con_priv;
 
 
 int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        union drm_amdgpu_cs *cs = data;
        struct amdgpu_cs_parser parser = {};
        bool reserved_buffers = false;
 int amdgpu_cs_fence_to_handle_ioctl(struct drm_device *dev, void *data,
                                    struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        union drm_amdgpu_fence_to_handle *info = data;
        struct dma_fence *fence;
        struct drm_syncobj *syncobj;
 int amdgpu_cs_wait_fences_ioctl(struct drm_device *dev, void *data,
                                struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        union drm_amdgpu_wait_fences *wait = data;
        uint32_t fence_count = wait->in.fence_count;
        struct drm_amdgpu_fence *fences_user;
 
        enum drm_sched_priority priority;
 
        union drm_amdgpu_ctx *args = data;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = filp->driver_priv;
 
        id = args->in.ctx_id;
 
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int r = 0, i;
 
        r = pm_runtime_get_sync(dev->dev);
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        seq_write(m, adev->bios, adev->bios_size);
        return 0;
 {
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int r;
 
        r = pm_runtime_get_sync(dev->dev);
 {
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int r;
 
        r = pm_runtime_get_sync(dev->dev);
 
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint64_t cnt = amdgpu_asic_get_pcie_replay_count(adev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n", cnt);
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%s\n", adev->product_name);
 }
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%s\n", adev->product_number);
 }
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%s\n", adev->serial);
 }
  */
 bool amdgpu_device_supports_boco(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (adev->flags & AMD_IS_PX)
                return true;
  */
 bool amdgpu_device_supports_baco(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        return amdgpu_asic_supports_baco(adev);
 }
                return -ENODEV;
        }
 
-       adev = dev->dev_private;
+       adev = drm_to_adev(dev);
 
        if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
                return 0;
 {
        struct drm_connector *connector;
        struct drm_connector_list_iter iter;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_crtc *crtc;
        int r = 0;
 
 
 int amdgpu_device_baco_enter(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
 
        if (!amdgpu_device_supports_baco(adev->ddev))
 
 int amdgpu_device_baco_exit(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
        int ret = 0;
 
 
                                struct drm_modeset_acquire_ctx *ctx)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_gem_object *obj;
        struct amdgpu_flip_work *work;
 
        pm_runtime_mark_last_busy(dev->dev);
 
-       adev = dev->dev_private;
+       adev = drm_to_adev(dev);
        /* if we have active crtcs and we don't have a power ref,
           take the current one */
        if (active && !adev->have_disp_power_ref) {
        int vbl_start, vbl_end, vtotal, ret = 0;
        bool in_vbl = true;
 
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */
 
 
 amdgpu_dma_buf_create_obj(struct drm_device *dev, struct dma_buf *dma_buf)
 {
        struct dma_resv *resv = dma_buf->resv;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_bo *bo;
        struct amdgpu_bo_param bp;
        int ret;
 
        } else if (ret)
                goto err_pci;
 
-       adev = dev->dev_private;
+       adev = drm_to_adev(dev);
        ret = amdgpu_debugfs_init(adev);
        if (ret)
                DRM_ERROR("Creating debugfs files failed (%d).\n", ret);
 amdgpu_pci_shutdown(struct pci_dev *pdev)
 {
        struct drm_device *dev = pci_get_drvdata(pdev);
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (amdgpu_ras_intr_triggered())
                return;
 static int amdgpu_pmops_freeze(struct device *dev)
 {
        struct drm_device *drm_dev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = drm_dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(drm_dev);
        int r;
 
        adev->in_hibernate = true;
 {
        struct pci_dev *pdev = to_pci_dev(dev);
        struct drm_device *drm_dev = pci_get_drvdata(pdev);
-       struct amdgpu_device *adev = drm_dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(drm_dev);
        int ret, i;
 
        if (!adev->runpm) {
 {
        struct pci_dev *pdev = to_pci_dev(dev);
        struct drm_device *drm_dev = pci_get_drvdata(pdev);
-       struct amdgpu_device *adev = drm_dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(drm_dev);
        int ret;
 
        if (!adev->runpm)
 static int amdgpu_pmops_runtime_idle(struct device *dev)
 {
        struct drm_device *drm_dev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = drm_dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(drm_dev);
        /* we don't want the main rpm_idle to call suspend - we want to autosuspend */
        int ret = 1;
 
 
 void
 amdgpu_link_encoder_connector(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_connector *connector;
        struct drm_connector_list_iter iter;
        struct amdgpu_connector *amdgpu_connector;
 
 {
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int i;
 
        for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int r;
 
        r = pm_runtime_get_sync(dev->dev);
 
 int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
                            struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = filp->driver_priv;
        struct amdgpu_vm *vm = &fpriv->vm;
        union drm_amdgpu_gem_create *args = data;
                             struct drm_file *filp)
 {
        struct ttm_operation_ctx ctx = { true, false };
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_amdgpu_gem_userptr *args = data;
        struct drm_gem_object *gobj;
        struct amdgpu_bo *bo;
 
        struct drm_amdgpu_gem_va *args = data;
        struct drm_gem_object *gobj;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = filp->driver_priv;
        struct amdgpu_bo *abo;
        struct amdgpu_bo_va *bo_va;
 int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
                        struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_amdgpu_gem_op *args = data;
        struct drm_gem_object *gobj;
        struct amdgpu_vm_bo_base *base;
                            struct drm_device *dev,
                            struct drm_mode_create_dumb *args)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_gem_object *gobj;
        uint32_t handle;
        u64 flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
 
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
                        (adev->mman.bdev.man[TTM_PL_TT].size) * PAGE_SIZE);
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
                        amdgpu_gtt_mgr_usage(&adev->mman.bdev.man[TTM_PL_TT]));
 
 static int amdgpu_i2c_pre_xfer(struct i2c_adapter *i2c_adap)
 {
        struct amdgpu_i2c_chan *i2c = i2c_get_adapdata(i2c_adap);
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t temp;
 
 static void amdgpu_i2c_post_xfer(struct i2c_adapter *i2c_adap)
 {
        struct amdgpu_i2c_chan *i2c = i2c_get_adapdata(i2c_adap);
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t temp;
 
 static int amdgpu_i2c_get_clock(void *i2c_priv)
 {
        struct amdgpu_i2c_chan *i2c = i2c_priv;
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t val;
 
 static int amdgpu_i2c_get_data(void *i2c_priv)
 {
        struct amdgpu_i2c_chan *i2c = i2c_priv;
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t val;
 
 static void amdgpu_i2c_set_clock(void *i2c_priv, int clock)
 {
        struct amdgpu_i2c_chan *i2c = i2c_priv;
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t val;
 
 static void amdgpu_i2c_set_data(void *i2c_priv, int data)
 {
        struct amdgpu_i2c_chan *i2c = i2c_priv;
-       struct amdgpu_device *adev = i2c->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(i2c->dev);
        struct amdgpu_i2c_bus_rec *rec = &i2c->rec;
        uint32_t val;
 
 
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        seq_printf(m, "--------------------- DELAYED --------------------- \n");
        amdgpu_sa_bo_dump_debug_info(&adev->ib_pools[AMDGPU_IB_POOL_DELAYED],
 
 irqreturn_t amdgpu_irq_handler(int irq, void *arg)
 {
        struct drm_device *dev = (struct drm_device *) arg;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        irqreturn_t ret;
 
        ret = amdgpu_ih_process(adev, &adev->irq.ih);
 
  */
 void amdgpu_driver_unload_kms(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (adev == NULL)
                return;
  */
 static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_amdgpu_info *info = data;
        struct amdgpu_mode_info *minfo = &adev->mode_info;
        void __user *out = (void __user *)(uintptr_t)info->return_pointer;
  */
 int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv;
        int r, pasid;
 
 void amdgpu_driver_postclose_kms(struct drm_device *dev,
                                 struct drm_file *file_priv)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = file_priv->driver_priv;
        struct amdgpu_bo_list *list;
        struct amdgpu_bo *pd;
 {
        struct drm_device *dev = crtc->dev;
        unsigned int pipe = crtc->index;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int vpos, hpos, stat;
        u32 count;
 
 {
        struct drm_device *dev = crtc->dev;
        unsigned int pipe = crtc->index;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int idx = amdgpu_display_crtc_idx_to_irq_type(adev, pipe);
 
        return amdgpu_irq_get(adev, &adev->crtc_irq, idx);
 {
        struct drm_device *dev = crtc->dev;
        unsigned int pipe = crtc->index;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int idx = amdgpu_display_crtc_idx_to_irq_type(adev, pipe);
 
        amdgpu_irq_put(adev, &adev->crtc_irq, idx);
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_amdgpu_info_firmware fw_info;
        struct drm_amdgpu_query_fw query_fw;
        struct atom_context *ctx = adev->mode_info.atom_context;
 
                                         char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t fw_ver;
        int ret;
 
                                                       size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        void *cpu_addr;
        dma_addr_t dma_addr;
        int ret;
 
                       struct drm_file *filp)
 {
        union drm_amdgpu_sched *args = data;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        enum drm_sched_priority priority;
        int r;
 
 
 int amdgpu_mmap(struct file *filp, struct vm_area_struct *vma)
 {
        struct drm_file *file_priv = filp->private_data;
-       struct amdgpu_device *adev = file_priv->minor->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(file_priv->minor->dev);
 
        if (adev == NULL)
                return -EINVAL;
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        unsigned ttm_pl = (uintptr_t)node->info_ent->data;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct ttm_mem_type_manager *man = &adev->mman.bdev.man[ttm_pl];
        struct drm_printer p = drm_seq_file_printer(m);
 
 
                          char *buf)                                    \
 {                                                                      \
        struct drm_device *ddev = dev_get_drvdata(dev);                 \
-       struct amdgpu_device *adev = ddev->dev_private;                 \
+       struct amdgpu_device *adev = drm_to_adev(ddev);                 \
                                                                        \
        return snprintf(buf, PAGE_SIZE, "0x%08x\n", adev->field);       \
 }                                                                      \
 
 int amdgpu_vm_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
        union drm_amdgpu_vm *args = data;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_fpriv *fpriv = filp->driver_priv;
        long timeout = msecs_to_jiffies(2000);
        int r;
 
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n", adev->gmc.real_vram_size);
 }
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n", adev->gmc.visible_vram_size);
 }
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
                amdgpu_vram_mgr_usage(&adev->mman.bdev.man[TTM_PL_VRAM]));
                struct device_attribute *attr, char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
                amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]));
                                                 char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        switch (adev->gmc.vram_vendor) {
        case SAMSUNG:
 
                                     char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%llu\n", adev->gmc.xgmi.node_id);
 
                                      char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t ficaa_pie_ctl_in, ficaa_pie_status_in;
        uint64_t fica_out;
        unsigned int error_count = 0;
 
                                  struct drm_display_mode *adjusted_mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        SET_CRTC_OVERSCAN_PS_ALLOCATION args;
        int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_OverScan);
 void amdgpu_atombios_crtc_scaler_setup(struct drm_crtc *crtc)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        ENABLE_SCALER_PS_ALLOCATION args;
        int index = GetIndexIntoMasterTable(COMMAND, EnableScaler);
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int index =
            GetIndexIntoMasterTable(COMMAND, UpdateCRTC_DoubleBufferRegisters);
        ENABLE_CRTC_PS_ALLOCATION args;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int index = GetIndexIntoMasterTable(COMMAND, EnableCRTC);
        ENABLE_CRTC_PS_ALLOCATION args;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int index = GetIndexIntoMasterTable(COMMAND, BlankCRTC);
        BLANK_CRTC_PS_ALLOCATION args;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int index = GetIndexIntoMasterTable(COMMAND, EnableDispPowerGating);
        ENABLE_DISP_POWER_GATING_PS_ALLOCATION args;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        SET_CRTC_USING_DTD_TIMING_PARAMETERS args;
        int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_UsingDTDTiming);
        u16 misc = 0;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_encoder *encoder = amdgpu_crtc->encoder;
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
                                      struct amdgpu_atom_ss *ss)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u8 frev, crev;
        int index = GetIndexIntoMasterTable(COMMAND, SetPixelClock);
        union set_pixel_clock args;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder =
                to_amdgpu_encoder(amdgpu_crtc->encoder);
        int encoder_mode = amdgpu_atombios_encoder_get_encoder_mode(amdgpu_crtc->encoder);
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder =
                to_amdgpu_encoder(amdgpu_crtc->encoder);
        u32 pll_clock = mode->clock;
 
                                      u8 delay, u8 *ack)
 {
        struct drm_device *dev = chan->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        union aux_channel_transaction args;
        int index = GetIndexIntoMasterTable(COMMAND, ProcessAuxChannelTransaction);
        unsigned char *base;
 u8 amdgpu_atombios_dp_get_sinktype(struct amdgpu_connector *amdgpu_connector)
 {
        struct drm_device *dev = amdgpu_connector->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        return amdgpu_atombios_dp_encoder_service(adev, ATOM_DP_ACTION_GET_SINK_TYPE, 0,
                                           amdgpu_connector->ddc_bus->rec.i2c_id, 0);
                            struct drm_connector *connector)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_connector *amdgpu_connector;
        struct amdgpu_connector_atom_dig *dig_connector;
 
 amdgpu_atombios_encoder_get_backlight_level(struct amdgpu_encoder *amdgpu_encoder)
 {
        struct drm_device *dev = amdgpu_encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU))
                return 0;
 {
        struct drm_encoder *encoder = &amdgpu_encoder->base;
        struct drm_device *dev = amdgpu_encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder_atom_dig *dig;
 
        if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU))
        struct amdgpu_backlight_privdata *pdata = bl_get_data(bd);
        struct amdgpu_encoder *amdgpu_encoder = pdata->encoder;
        struct drm_device *dev = amdgpu_encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        return amdgpu_atombios_encoder_get_backlight_level_from_reg(adev);
 }
                                     struct drm_connector *drm_connector)
 {
        struct drm_device *dev = amdgpu_encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct backlight_device *bd;
        struct backlight_properties props;
        struct amdgpu_backlight_privdata *pdata;
 amdgpu_atombios_encoder_fini_backlight(struct amdgpu_encoder *amdgpu_encoder)
 {
        struct drm_device *dev = amdgpu_encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct backlight_device *bd = NULL;
        struct amdgpu_encoder_atom_dig *dig;
 
 amdgpu_atombios_encoder_setup_dac(struct drm_encoder *encoder, int action)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        DAC_ENCODER_CONTROL_PS_ALLOCATION args;
        int index = 0;
 amdgpu_atombios_encoder_setup_dvo(struct drm_encoder *encoder, int action)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        union dvo_encoder_control args;
        int index = GetIndexIntoMasterTable(COMMAND, DVOEncoderControl);
                                   int action, int panel_mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
                                              uint8_t lane_num, uint8_t lane_set)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 {
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        struct drm_device *dev = amdgpu_connector->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        union dig_transmitter_control args;
        int index = GetIndexIntoMasterTable(COMMAND, UNIPHYTransmitterControl);
        uint8_t frev, crev;
                                        int action)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder *ext_amdgpu_encoder = to_amdgpu_encoder(ext_encoder);
        union external_encoder_control args;
 amdgpu_atombios_encoder_set_crtc_source(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
        union crtc_source_param args;
                                 struct drm_connector *connector)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
                            struct drm_connector *connector)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        uint32_t bios_0_scratch;
                            struct drm_connector *connector)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
        struct drm_encoder *ext_encoder = amdgpu_get_external_encoder(encoder);
                                       bool connected)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector =
            to_amdgpu_connector(connector);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
 amdgpu_atombios_encoder_get_lcd_info(struct amdgpu_encoder *encoder)
 {
        struct drm_device *dev = encoder->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_mode_info *mode_info = &adev->mode_info;
        int index = GetIndexIntoMasterTable(DATA, LVDS_Info);
        uint16_t data_offset, misc;
 
                                       u8 *buf, u8 num)
 {
        struct drm_device *dev = chan->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        PROCESS_I2C_CHANNEL_TRANSACTION_PS_ALLOCATION args;
        int index = GetIndexIntoMasterTable(COMMAND, ProcessI2cChannelTransaction);
        unsigned char *base;
 
 static void dce_v10_0_program_fmt(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v10_0_afmt_audio_select_pin(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
                                                struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v10_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v10_0_audio_write_sad_regs(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v10_0_afmt_update_ACR(struct drm_encoder *encoder, uint32_t clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_afmt_acr acr = amdgpu_afmt_acr(clock);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
                                               void *buffer, size_t size)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        uint8_t *frame = buffer + 3;
 static void dce_v10_0_audio_set_dto(struct drm_encoder *encoder, u32 clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
                                  struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 static void dce_v10_0_afmt_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 vga_control;
 
        vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (enable)
                WREG32(mmGRPH_ENABLE + amdgpu_crtc->crtc_offset, 1);
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_framebuffer *target_fb;
        struct drm_gem_object *obj;
        struct amdgpu_bo *abo;
                                     struct drm_display_mode *mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        u32 tmp;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u16 *r, *g, *b;
        int i;
        u32 tmp;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 pll_in_use;
        int pll;
 
 
 static void dce_v10_0_lock_cursor(struct drm_crtc *crtc, bool lock)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        uint32_t cur_lock;
 
 static void dce_v10_0_hide_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        u32 tmp;
 
        tmp = RREG32(mmCUR_CONTROL + amdgpu_crtc->crtc_offset);
 static void dce_v10_0_show_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        u32 tmp;
 
        WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset,
                                        int x, int y)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        int xorigin = 0, yorigin = 0;
 
        amdgpu_crtc->cursor_x = x;
 static void dce_v10_0_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        unsigned type;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_atom_ss ss;
        int i;
 
 
 static void dce_v10_0_encoder_prepare(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v10_0_encoder_commit(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* need to call this here as we need the crtc set up */
        amdgpu_atombios_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
 
 static void dce_v11_0_program_fmt(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v11_0_afmt_audio_select_pin(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
                                                struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v11_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v11_0_audio_write_sad_regs(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v11_0_afmt_update_ACR(struct drm_encoder *encoder, uint32_t clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_afmt_acr acr = amdgpu_afmt_acr(clock);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
                                               void *buffer, size_t size)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        uint8_t *frame = buffer + 3;
 static void dce_v11_0_audio_set_dto(struct drm_encoder *encoder, u32 clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
                                  struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 static void dce_v11_0_afmt_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 vga_control;
 
        vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (enable)
                WREG32(mmGRPH_ENABLE + amdgpu_crtc->crtc_offset, 1);
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_framebuffer *target_fb;
        struct drm_gem_object *obj;
        struct amdgpu_bo *abo;
                                     struct drm_display_mode *mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        u32 tmp;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u16 *r, *g, *b;
        int i;
        u32 tmp;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 pll_in_use;
        int pll;
 
 
 static void dce_v11_0_lock_cursor(struct drm_crtc *crtc, bool lock)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        uint32_t cur_lock;
 
 static void dce_v11_0_hide_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        u32 tmp;
 
        tmp = RREG32(mmCUR_CONTROL + amdgpu_crtc->crtc_offset);
 static void dce_v11_0_show_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        u32 tmp;
 
        WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset,
                                        int x, int y)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        int xorigin = 0, yorigin = 0;
 
        amdgpu_crtc->cursor_x = x;
 static void dce_v11_0_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        unsigned type;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_atom_ss ss;
        int i;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (!amdgpu_crtc->adjusted_clock)
                return -EINVAL;
 
 static void dce_v11_0_encoder_prepare(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v11_0_encoder_commit(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* need to call this here as we need the crtc set up */
        amdgpu_atombios_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
 
 {
 
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
 
 static void dce_v6_0_audio_select_pin(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
 
                                                struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v6_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v6_0_audio_write_sad_regs(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v6_0_audio_set_vbi_packet(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
                                   uint32_t clock, int bpc)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_afmt_acr acr = amdgpu_afmt_acr(clock);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
                                               struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 static void dce_v6_0_audio_set_dto(struct drm_encoder *encoder, u32 clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
        int em = amdgpu_atombios_encoder_get_encoder_mode(encoder);
        u32 tmp;
 static void dce_v6_0_audio_set_packet(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
 static void dce_v6_0_audio_set_mute(struct drm_encoder *encoder, bool mute)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
 static void dce_v6_0_audio_hdmi_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
 static void dce_v6_0_audio_dp_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 tmp;
                                  struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v6_0_afmt_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 vga_control;
 
        vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        WREG32(mmGRPH_ENABLE + amdgpu_crtc->crtc_offset, enable ? 1 : 0);
 }
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_framebuffer *target_fb;
        struct drm_gem_object *obj;
        struct amdgpu_bo *abo;
                                    struct drm_display_mode *mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
 
        if (mode->flags & DRM_MODE_FLAG_INTERLACE)
 
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u16 *r, *g, *b;
        int i;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 pll_in_use;
        int pll;
 
 
 static void dce_v6_0_lock_cursor(struct drm_crtc *crtc, bool lock)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        uint32_t cur_lock;
 
 static void dce_v6_0_hide_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
 
        WREG32(mmCUR_CONTROL + amdgpu_crtc->crtc_offset,
               (CURSOR_24_8_PRE_MULT << CUR_CONTROL__CURSOR_MODE__SHIFT) |
 static void dce_v6_0_show_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
 
        WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset,
               upper_32_bits(amdgpu_crtc->cursor_addr));
                                       int x, int y)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        int xorigin = 0, yorigin = 0;
 
        int w = amdgpu_crtc->cursor_width;
 static void dce_v6_0_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        unsigned type;
 
 
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_atom_ss ss;
        int i;
 
 static void dce_v6_0_encoder_prepare(struct drm_encoder *encoder)
 {
 
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 {
 
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* need to call this here as we need the crtc set up */
        amdgpu_atombios_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
 
 static void dce_v8_0_program_fmt(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v8_0_afmt_audio_select_pin(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 offset;
                                                struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v8_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector;
 static void dce_v8_0_audio_write_sad_regs(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        u32 offset;
 static void dce_v8_0_afmt_update_ACR(struct drm_encoder *encoder, uint32_t clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_afmt_acr acr = amdgpu_afmt_acr(clock);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
                                               void *buffer, size_t size)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        uint32_t offset = dig->afmt->offset;
 static void dce_v8_0_audio_set_dto(struct drm_encoder *encoder, u32 clock)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc);
                                  struct drm_display_mode *mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 static void dce_v8_0_afmt_enable(struct drm_encoder *encoder, bool enable)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 vga_control;
 
        vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1;
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        if (enable)
                WREG32(mmGRPH_ENABLE + amdgpu_crtc->crtc_offset, 1);
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_framebuffer *target_fb;
        struct drm_gem_object *obj;
        struct amdgpu_bo *abo;
                                    struct drm_display_mode *mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
 
        if (mode->flags & DRM_MODE_FLAG_INTERLACE)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u16 *r, *g, *b;
        int i;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 pll_in_use;
        int pll;
 
 
 static void dce_v8_0_lock_cursor(struct drm_crtc *crtc, bool lock)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        uint32_t cur_lock;
 
 static void dce_v8_0_hide_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
 
        WREG32(mmCUR_CONTROL + amdgpu_crtc->crtc_offset,
               (CURSOR_24_8_PRE_MULT << CUR_CONTROL__CURSOR_MODE__SHIFT) |
 static void dce_v8_0_show_cursor(struct drm_crtc *crtc)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
 
        WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset,
               upper_32_bits(amdgpu_crtc->cursor_addr));
                                       int x, int y)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        int xorigin = 0, yorigin = 0;
 
        amdgpu_crtc->cursor_x = x;
 static void dce_v8_0_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        unsigned type;
 
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_atom_ss ss;
        int i;
 
 
 static void dce_v8_0_encoder_prepare(struct drm_encoder *encoder)
 {
-       struct amdgpu_device *adev = encoder->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(encoder->dev);
        struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
        struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder);
 
 static void dce_v8_0_encoder_commit(struct drm_encoder *encoder)
 {
        struct drm_device *dev = encoder->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        /* need to call this here as we need the crtc set up */
        amdgpu_atombios_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
 
 static void dce_virtual_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        unsigned type;
 
        struct amdgpu_crtc *amdgpu_crtc = container_of(vblank_timer,
                                                       struct amdgpu_crtc, vblank_timer);
        struct drm_device *ddev = amdgpu_crtc->base.dev;
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        drm_handle_vblank(ddev, amdgpu_crtc->crtc_id);
        dce_virtual_pageflip(adev, amdgpu_crtc->crtc_id);
 
        int i, count;
 
        ddev = dev_get_drvdata(dev);
-       adev = ddev->dev_private;
+       adev = drm_to_adev(ddev);
        count = 0;
 
        for (i = 0; i < DF_V3_6_MAX_COUNTERS; i++) {
 
 static void amdgpu_dm_fbc_init(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct dm_comressor_info *compressor = &adev->dm.compressor;
        struct amdgpu_dm_connector *aconn = to_amdgpu_dm_connector(connector);
        struct drm_display_mode *mode;
                                          unsigned char *buf, int max_bytes)
 {
        struct drm_device *dev = dev_get_drvdata(kdev);
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_connector *connector;
        struct drm_connector_list_iter conn_iter;
        struct amdgpu_dm_connector *aconnector;
                                       struct device *hda_kdev, void *data)
 {
        struct drm_device *dev = dev_get_drvdata(kdev);
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_audio_component *acomp = data;
 
        acomp->ops = &amdgpu_dm_audio_component_ops;
                                          struct device *hda_kdev, void *data)
 {
        struct drm_device *dev = dev_get_drvdata(kdev);
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct drm_audio_component *acomp = data;
 
        acomp->ops = NULL;
                return;
 
        conn_base = &aconnector->base;
-       adev = conn_base->dev->dev_private;
+       adev = drm_to_adev(conn_base->dev);
        dm = &adev->dm;
        caps = &dm->backlight_caps;
        caps->ext_caps = &aconnector->dc_link->dpcd_sink_ext_caps;
        struct drm_device *dev = connector->dev;
        enum dc_connection_type new_connection_type = dc_connection_none;
 #ifdef CONFIG_DRM_AMD_DC_HDCP
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 #endif
 
        /*
        enum dc_connection_type new_connection_type = dc_connection_none;
 #ifdef CONFIG_DRM_AMD_DC_HDCP
        union hpd_irq_data hpd_irq_data;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        memset(&hpd_irq_data, 0, sizeof(hpd_irq_data));
 #endif
                               struct dm_atomic_state **dm_state)
 {
        struct drm_device *dev = state->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_display_manager *dm = &adev->dm;
        struct drm_private_state *priv_state;
 
 dm_atomic_get_new_state(struct drm_atomic_state *state)
 {
        struct drm_device *dev = state->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_display_manager *dm = &adev->dm;
        struct drm_private_obj *obj;
        struct drm_private_state *new_obj_state;
        int ret;
        int s3_state;
        struct drm_device *drm_dev = dev_get_drvdata(device);
-       struct amdgpu_device *adev = drm_dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(drm_dev);
 
        ret = kstrtoint(buf, 0, &s3_state);
 
 {
        enum dc_irq_source irq_source;
        struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        int rc;
 
        irq_source = IRQ_TYPE_VUPDATE + acrtc->otg_inst;
 {
        enum dc_irq_source irq_source;
        struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct dm_crtc_state *acrtc_state = to_dm_crtc_state(crtc->state);
        int rc = 0;
 
                                            uint64_t val)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct dm_connector_state *dm_old_state =
                to_dm_connector_state(connector->state);
        struct dm_connector_state *dm_new_state =
                                            uint64_t *val)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct dm_connector_state *dm_state =
                to_dm_connector_state(state);
        int ret = -EINVAL;
 {
        struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
        const struct dc_link *link = aconnector->dc_link;
-       struct amdgpu_device *adev = connector->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(connector->dev);
        struct amdgpu_display_manager *dm = &adev->dm;
 
 #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) ||\
                                const struct dc_stream_state *old_stream)
 {
        struct drm_connector *connector = &aconnector->base;
-       struct amdgpu_device *adev = connector->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(connector->dev);
        struct dc_stream_state *stream;
        const struct drm_connector_state *drm_state = dm_state ? &dm_state->base : NULL;
        int requested_bpc = drm_state ? drm_state->max_requested_bpc : 8;
 static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc,
                                       struct drm_crtc_state *state)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct dc *dc = adev->dm.dc;
        struct dm_crtc_state *dm_crtc_state = to_dm_crtc_state(state);
        int ret = -EINVAL;
 static int dm_plane_atomic_check(struct drm_plane *plane,
                                 struct drm_plane_state *state)
 {
-       struct amdgpu_device *adev = plane->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(plane->dev);
        struct dc *dc = adev->dm.dc;
        struct dm_plane_state *dm_plane_state;
        struct dc_scaling_info scaling_info;
                                     struct dc_link *link,
                                     int link_index)
 {
-       struct amdgpu_device *adev = dm->ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dm->ddev);
 
        /*
         * Some of the properties below require access to state, like bpc.
                                  struct amdgpu_encoder *aencoder,
                                  uint32_t link_index)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 
        int res = drm_encoder_init(dev,
                                   &aencoder->base,
 static void handle_cursor_update(struct drm_plane *plane,
                                 struct drm_plane_state *old_plane_state)
 {
-       struct amdgpu_device *adev = plane->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(plane->dev);
        struct amdgpu_framebuffer *afb = to_amdgpu_framebuffer(plane->state->fb);
        struct drm_crtc *crtc = afb ? plane->state->crtc : old_plane_state->crtc;
        struct dm_crtc_state *crtc_state = crtc ? to_dm_crtc_state(crtc->state) : NULL;
                 * on some ASICs).
                 */
                if (dm_old_crtc_state->active_planes != acrtc_state->active_planes)
-                       dm_update_pflip_irq_state(
-                               (struct amdgpu_device *)dev->dev_private,
-                               acrtc_attach);
+                       dm_update_pflip_irq_state(drm_to_adev(dev),
+                                                 acrtc_attach);
 
                if ((acrtc_state->update_type > UPDATE_TYPE_FAST) &&
                                acrtc_state->stream->link->psr_settings.psr_version != DC_PSR_VERSION_UNSUPPORTED &&
 static void amdgpu_dm_commit_audio(struct drm_device *dev,
                                   struct drm_atomic_state *state)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_dm_connector *aconnector;
        struct drm_connector *connector;
        struct drm_connector_state *old_con_state, *new_con_state;
 {
        struct drm_crtc *crtc;
        struct drm_crtc_state *old_crtc_state, *new_crtc_state;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        int i;
 
        /*
 static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
 {
        struct drm_device *dev = state->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_display_manager *dm = &adev->dm;
        struct dm_atomic_state *dm_state;
        struct dc_state *dc_state = NULL, *dc_state_temp = NULL;
                                plane->base.id, new_plane_crtc->base.id);
 
                ret = fill_dc_plane_attributes(
-                       new_plane_crtc->dev->dev_private,
+                       drm_to_adev(new_plane_crtc->dev),
                        dc_new_plane_state,
                        new_plane_state,
                        new_crtc_state);
 static int amdgpu_dm_atomic_check(struct drm_device *dev,
                                  struct drm_atomic_state *state)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct dm_atomic_state *dm_state = NULL;
        struct dc *dc = adev->dm.dc;
        struct drm_connector *connector;
        struct dm_connector_state *dm_con_state = NULL;
 
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        bool freesync_capable = false;
 
        if (!connector->state) {
 
 void amdgpu_dm_trigger_timing_sync(struct drm_device *dev)
 {
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct dc *dc = adev->dm.dc;
        int i;
 
 
 int amdgpu_dm_update_crtc_color_mgmt(struct dm_crtc_state *crtc)
 {
        struct dc_stream_state *stream = crtc->stream;
-       struct amdgpu_device *adev =
-               (struct amdgpu_device *)crtc->base.state->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->base.state->dev);
        bool has_rom = adev->asic_type <= CHIP_RAVEN;
        struct drm_color_ctm *ctm = NULL;
        const struct drm_color_lut *degamma_lut, *regamma_lut;
 
                                        struct dm_crtc_state *dm_crtc_state,
                                        enum amdgpu_dm_pipe_crc_source source)
 {
-       struct amdgpu_device *adev = crtc->dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(crtc->dev);
        struct dc_stream_state *stream_state = dm_crtc_state->stream;
        bool enable = amdgpu_dm_is_valid_crc_source(source);
        int ret = 0;
 
 {
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_display_manager *dm = &adev->dm;
 
        unsigned int backlight = dc_link_get_backlight_level(dm->backlight_link);
 {
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_display_manager *dm = &adev->dm;
 
        unsigned int backlight = dc_link_get_target_backlight_pwm(dm->backlight_link);
 
                           struct drm_connector_state *connector_state)
 {
        struct drm_device *dev = connector->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_crtc *acrtc = to_amdgpu_crtc(connector_state->crtc);
 
        return &adev->dm.mst_encoders[acrtc->crtc_id].base;
 {
        struct amdgpu_dm_connector *master = container_of(mgr, struct amdgpu_dm_connector, mst_mgr);
        struct drm_device *dev = master->base.dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_dm_connector *aconnector;
        struct drm_connector *connector;
        int i;
 
                                          char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        enum amd_pm_state_type pm;
        int ret;
 
                                          size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        enum amd_pm_state_type  state;
        int ret;
 
                                                            char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        enum amd_dpm_forced_level level = 0xff;
        int ret;
 
                                                            size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        enum amd_dpm_forced_level level;
        enum amd_dpm_forced_level current_level = 0xff;
        int ret = 0;
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        struct pp_states_info data;
        int i, buf_len, ret;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        struct pp_states_info data;
        struct smu_context *smu = &adev->smu;
        enum amd_pm_state_type pm = 0;
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        if (amdgpu_in_reset(adev))
                return -EPERM;
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        enum amd_pm_state_type state = 0;
        unsigned long idx;
        int ret;
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        char *table = NULL;
        int size, ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret = 0;
 
        if (amdgpu_in_reset(adev))
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t parameter_size = 0;
        long parameter[64];
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                                      size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint64_t featuremask;
        int ret;
 
                                      char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t mask = 0;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t mask = 0;
        int ret;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t mask = 0;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t mask = 0;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t mask = 0;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        uint32_t mask = 0;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t value = 0;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        long int value;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t value = 0;
        int ret;
 
                size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int ret;
        long int value;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        ssize_t size;
        int ret;
 
 {
        int ret;
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint32_t parameter_size = 0;
        long parameter[64];
        char *sub_str, buf_cpy[128];
                                           char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int r, value, size = sizeof(value);
 
        if (amdgpu_in_reset(adev))
                                           char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        int r, value, size = sizeof(value);
 
        if (amdgpu_in_reset(adev))
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        uint64_t count0 = 0, count1 = 0;
        int ret;
 
                char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        if (amdgpu_in_reset(adev))
                return -EPERM;
                                                     char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 
        return snprintf(buf, PAGE_SIZE, "%s: thermal throttling logging %s, with interval %d seconds\n",
                        adev->ddev->unique,
                                                     size_t count)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        long throttling_logging_interval;
        unsigned long flags;
        int ret = 0;
                                      char *buf)
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
        void *gpu_metrics;
        ssize_t size = 0;
        int ret;
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
        u32 flags = 0;
        int r;