162306a36Sopenharmony_ci// SPDX-License-Identifier: MIT 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2013-2017 Oracle Corporation 462306a36Sopenharmony_ci * This file is based on ast_ttm.c 562306a36Sopenharmony_ci * Copyright 2012 Red Hat Inc. 662306a36Sopenharmony_ci * Authors: Dave Airlie <airlied@redhat.com> 762306a36Sopenharmony_ci * Michael Thayer <michael.thayer@oracle.com> 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci#include <linux/pci.h> 1062306a36Sopenharmony_ci#include <drm/drm_file.h> 1162306a36Sopenharmony_ci#include "vbox_drv.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciint vbox_mm_init(struct vbox_private *vbox) 1462306a36Sopenharmony_ci{ 1562306a36Sopenharmony_ci int ret; 1662306a36Sopenharmony_ci resource_size_t base, size; 1762306a36Sopenharmony_ci struct drm_device *dev = &vbox->ddev; 1862306a36Sopenharmony_ci struct pci_dev *pdev = to_pci_dev(dev->dev); 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci base = pci_resource_start(pdev, 0); 2162306a36Sopenharmony_ci size = pci_resource_len(pdev, 0); 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci /* Don't fail on errors, but performance might be reduced. */ 2462306a36Sopenharmony_ci devm_arch_phys_wc_add(&pdev->dev, base, size); 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci ret = drmm_vram_helper_init(dev, base, vbox->available_vram_size); 2762306a36Sopenharmony_ci if (ret) { 2862306a36Sopenharmony_ci DRM_ERROR("Error initializing VRAM MM; %d\n", ret); 2962306a36Sopenharmony_ci return ret; 3062306a36Sopenharmony_ci } 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci return 0; 3362306a36Sopenharmony_ci} 34