drivers/gpu/drm/openchrome/ttm_gem.c | 2 drivers/gpu/drm/openchrome/via_crtc.c | 2 drivers/gpu/drm/openchrome/via_drv.c | 8 +-- drivers/gpu/drm/openchrome/via_drv.h | 12 +++- drivers/gpu/drm/openchrome/via_fb.c | 2 drivers/gpu/drm/openchrome/via_fence.c | 2 drivers/gpu/drm/openchrome/via_h1_cmdbuf.c | 2 drivers/gpu/drm/openchrome/via_ioc32.c | 2 drivers/gpu/drm/openchrome/via_sgdma.c | 6 -- drivers/gpu/drm/openchrome/via_ttm.c | 70 +++++++++++++++-------------- 10 files changed, 58 insertions(+), 50 deletions(-)
New commits: commit 837da7f954655b65f3d04acc4c41571c9d104c9f Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 28 18:20:40 2017 -0700 Added via_ttm struct Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/ttm_gem.c b/drivers/gpu/drm/openchrome/ttm_gem.c index d4179dd16f57..0ce52146909c 100644 --- a/drivers/gpu/drm/openchrome/ttm_gem.c +++ b/drivers/gpu/drm/openchrome/ttm_gem.c @@ -75,7 +75,7 @@ int ttm_mmap(struct file *filp, struct vm_area_struct *vma) if (!dev_priv) return -EINVAL; - return ttm_bo_mmap(filp, vma, &dev_priv->bdev); + return ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev); } struct drm_gem_object * diff --git a/drivers/gpu/drm/openchrome/via_crtc.c b/drivers/gpu/drm/openchrome/via_crtc.c index 08157c9b721a..eea4ca4ff51f 100644 --- a/drivers/gpu/drm/openchrome/via_crtc.c +++ b/drivers/gpu/drm/openchrome/via_crtc.c @@ -1971,7 +1971,7 @@ via_crtc_init(struct drm_device *dev, int index) || dev->pdev->device == PCI_DEVICE_ID_VIA_KM400) cursor_size = 32 * 32 * 4; - if (via_ttm_allocate_kernel_buffer(&dev_priv->bdev, cursor_size, 16, + if (via_ttm_allocate_kernel_buffer(&dev_priv->ttm.bdev, cursor_size, 16, TTM_PL_FLAG_VRAM, &iga->cursor_kmap)) DRM_ERROR("failed to create cursor\n"); } diff --git a/drivers/gpu/drm/openchrome/via_drv.c b/drivers/gpu/drm/openchrome/via_drv.c index 40515729687b..2a4dd3f74941 100644 --- a/drivers/gpu/drm/openchrome/via_drv.c +++ b/drivers/gpu/drm/openchrome/via_drv.c @@ -91,7 +91,7 @@ via_detect_agp(struct drm_device *dev) goto out_err0; } - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_TT, agp_info.aperture_size >> PAGE_SHIFT); + ret = ttm_bo_init_mm(&dev_priv->ttm.bdev, TTM_PL_TT, agp_info.aperture_size >> PAGE_SHIFT); if (!ret) { DRM_INFO("Detected %lu MB of AGP Aperture at " "physical address 0x%08lx.\n", @@ -199,7 +199,7 @@ static int via_dumb_create(struct drm_file *filp, struct drm_device *dev, args->pitch = round_up(args->width * (args->bpp >> 3), 16); args->size = args->pitch * args->height; - obj = ttm_gem_create(dev, &dev_priv->bdev, args->size, + obj = ttm_gem_create(dev, &dev_priv->ttm.bdev, args->size, ttm_bo_type_device, TTM_PL_FLAG_VRAM, 16, PAGE_SIZE, false); if (IS_ERR(obj)) @@ -357,7 +357,7 @@ via_driver_load(struct drm_device *dev, unsigned long chipset) #endif if (pci_is_pcie(dev->pdev)) { /* Allocate GART. */ - ret = via_ttm_allocate_kernel_buffer(&dev_priv->bdev, SGDMA_MEMORY, + ret = via_ttm_allocate_kernel_buffer(&dev_priv->ttm.bdev, SGDMA_MEMORY, 16, TTM_PL_FLAG_VRAM, &dev_priv->gart); if (likely(!ret)) { @@ -369,7 +369,7 @@ via_driver_load(struct drm_device *dev, unsigned long chipset) } /* Allocate VQ. (Virtual Queue) */ - ret = via_ttm_allocate_kernel_buffer(&dev_priv->bdev, VQ_MEMORY, 16, + ret = via_ttm_allocate_kernel_buffer(&dev_priv->ttm.bdev, VQ_MEMORY, 16, TTM_PL_FLAG_VRAM, &dev_priv->vq); if (likely(!ret)) { DRM_INFO("Allocated %u KB of VQ (Virtual Queue) memory.\n", VQ_MEMORY >> 10); diff --git a/drivers/gpu/drm/openchrome/via_drv.h b/drivers/gpu/drm/openchrome/via_drv.h index b39a14d7688b..02d664df1683 100644 --- a/drivers/gpu/drm/openchrome/via_drv.h +++ b/drivers/gpu/drm/openchrome/via_drv.h @@ -105,6 +105,12 @@ struct via_state { struct vga_regset seq_regs[256]; }; +struct via_ttm { + struct drm_global_reference mem_global_ref; + struct ttm_bo_global_ref bo_global_ref; + struct ttm_bo_device bdev; +}; + struct ttm_heap { struct ttm_buffer_object bo; struct ttm_place busy_placements[TTM_NUM_MEM_TYPES]; @@ -136,10 +142,10 @@ enum via_engine { }; struct via_device { - struct drm_global_reference mem_global_ref; - struct ttm_bo_global_ref bo_global_ref; - struct ttm_bo_device bdev; struct drm_device *dev; + + struct via_ttm ttm; + int revision; struct ttm_bo_kmap_obj dmabuf; diff --git a/drivers/gpu/drm/openchrome/via_fb.c b/drivers/gpu/drm/openchrome/via_fb.c index ff4944a09582..18e709441e6b 100644 --- a/drivers/gpu/drm/openchrome/via_fb.c +++ b/drivers/gpu/drm/openchrome/via_fb.c @@ -1073,7 +1073,7 @@ via_fb_probe(struct drm_fb_helper *helper, size = mode_cmd.pitches[0] * mode_cmd.height; size = ALIGN(size, PAGE_SIZE); - gem_obj = ttm_gem_create(dev, &dev_priv->bdev, size, + gem_obj = ttm_gem_create(dev, &dev_priv->ttm.bdev, size, ttm_bo_type_kernel, TTM_PL_FLAG_VRAM, 1, PAGE_SIZE, false); if (unlikely(IS_ERR(gem_obj))) { diff --git a/drivers/gpu/drm/openchrome/via_fence.c b/drivers/gpu/drm/openchrome/via_fence.c index de91ae4d3217..e466a38d0bf4 100644 --- a/drivers/gpu/drm/openchrome/via_fence.c +++ b/drivers/gpu/drm/openchrome/via_fence.c @@ -202,7 +202,7 @@ via_fence_pool_init(struct drm_device *dev, char *name, int domain, return ERR_PTR(-ENOMEM); /* allocate fence sync bo */ - ret = via_ttm_allocate_kernel_buffer(&dev_priv->bdev, PAGE_SIZE, 16, + ret = via_ttm_allocate_kernel_buffer(&dev_priv->ttm.bdev, PAGE_SIZE, 16, domain, &pool->fence_sync); if (unlikely(ret)) { DRM_ERROR("allocate fence sync bo error.\n"); diff --git a/drivers/gpu/drm/openchrome/via_h1_cmdbuf.c b/drivers/gpu/drm/openchrome/via_h1_cmdbuf.c index 0713785b3968..d21fdd24112b 100644 --- a/drivers/gpu/drm/openchrome/via_h1_cmdbuf.c +++ b/drivers/gpu/drm/openchrome/via_h1_cmdbuf.c @@ -159,7 +159,7 @@ static int via_initialize(struct drm_device *dev, return ret; } - ret = via_bo_create(&dev_priv->bdev, &bo, init->size, + ret = via_bo_create(&dev_priv->ttm.bdev, &bo, init->size, ttm_bo_type_kernel, TTM_PL_FLAG_TT, VIA_MM_ALIGN_SIZE, PAGE_SIZE, false, NULL, NULL); diff --git a/drivers/gpu/drm/openchrome/via_ioc32.c b/drivers/gpu/drm/openchrome/via_ioc32.c index d0ffda66c8e9..5e175750f208 100644 --- a/drivers/gpu/drm/openchrome/via_ioc32.c +++ b/drivers/gpu/drm/openchrome/via_ioc32.c @@ -66,7 +66,7 @@ via_gem_alloc(struct drm_device *dev, void *data, struct drm_gem_object *obj; int ret = -ENOMEM; - obj = ttm_gem_create(dev, &dev_priv->bdev, args->size, + obj = ttm_gem_create(dev, &dev_priv->ttm.bdev, args->size, ttm_bo_type_device, args->domains, args->alignment, PAGE_SIZE, false); if (obj != NULL) { diff --git a/drivers/gpu/drm/openchrome/via_sgdma.c b/drivers/gpu/drm/openchrome/via_sgdma.c index e0401096435a..83ed1349db11 100644 --- a/drivers/gpu/drm/openchrome/via_sgdma.c +++ b/drivers/gpu/drm/openchrome/via_sgdma.c @@ -29,9 +29,8 @@ static int via_pcie_sgdma_bind(struct ttm_tt *ttm, struct ttm_mem_reg *mem) { struct sgdma_tt *dma_tt = (struct sgdma_tt *) ttm; - struct ttm_bo_device *bdev = dma_tt->sgdma.ttm.bdev; struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + container_of(ttm->bdev, struct via_device, ttm.bdev); int i; /* Disable gart table HW protect */ @@ -56,9 +55,8 @@ static int via_pcie_sgdma_unbind(struct ttm_tt *ttm) { struct sgdma_tt *dma_tt = (struct sgdma_tt *) ttm; - struct ttm_bo_device *bdev = dma_tt->sgdma.ttm.bdev; struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + container_of(ttm->bdev, struct via_device, ttm.bdev); int i; if (ttm->state != tt_bound) diff --git a/drivers/gpu/drm/openchrome/via_ttm.c b/drivers/gpu/drm/openchrome/via_ttm.c index 12714409a4dc..1fa06b45d76c 100644 --- a/drivers/gpu/drm/openchrome/via_ttm.c +++ b/drivers/gpu/drm/openchrome/via_ttm.c @@ -48,7 +48,7 @@ via_ttm_global_init(struct via_device *dev_priv) struct drm_global_reference *bo_ref; int rc; - global_ref = &dev_priv->mem_global_ref; + global_ref = &dev_priv->ttm.mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &via_ttm_mem_global_init; @@ -61,8 +61,8 @@ via_ttm_global_init(struct via_device *dev_priv) return rc; } - dev_priv->bo_global_ref.mem_glob = dev_priv->mem_global_ref.object; - bo_ref = &dev_priv->bo_global_ref.ref; + dev_priv->ttm.bo_global_ref.mem_glob = dev_priv->ttm.mem_global_ref.object; + bo_ref = &dev_priv->ttm.bo_global_ref.ref; bo_ref->global_type = DRM_GLOBAL_TTM_BO; bo_ref->size = sizeof(struct ttm_bo_global); bo_ref->init = &ttm_bo_global_init; @@ -109,15 +109,20 @@ static struct ttm_tt * via_ttm_tt_create(struct ttm_bo_device *bdev, unsigned long size, uint32_t page_flags, struct page *dummy_read_page) { -#if IS_ENABLED(CONFIG_AGP) - struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(bdev, + struct via_device, ttm.bdev); - if (pci_find_capability(dev_priv->dev->pdev, PCI_CAP_ID_AGP)) - return ttm_agp_tt_create(bdev, dev_priv->dev->agp->bridge, - size, page_flags, dummy_read_page); +#if IS_ENABLED(CONFIG_AGP) + if (pci_find_capability(dev_priv->dev->pdev, PCI_CAP_ID_AGP)) { + return ttm_agp_tt_create(bdev, + dev_priv->dev->agp->bridge, + size, page_flags, dummy_read_page); + } #endif - return via_sgdma_backend_init(bdev, size, page_flags, dummy_read_page); + + return via_sgdma_backend_init(bdev, size, page_flags, + dummy_read_page); + } static int @@ -125,9 +130,8 @@ via_ttm_tt_populate(struct ttm_tt *ttm) { struct sgdma_tt *dma_tt = (struct sgdma_tt *) ttm; struct ttm_dma_tt *sgdma = &dma_tt->sgdma; - struct ttm_bo_device *bdev = ttm->bdev; - struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(ttm->bdev, + struct via_device, ttm.bdev); struct drm_device *dev = dev_priv->dev; unsigned int i; int ret = 0; @@ -171,9 +175,8 @@ via_ttm_tt_unpopulate(struct ttm_tt *ttm) { struct sgdma_tt *dma_tt = (struct sgdma_tt *) ttm; struct ttm_dma_tt *sgdma = &dma_tt->sgdma; - struct ttm_bo_device *bdev = ttm->bdev; - struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(ttm->bdev, + struct via_device, ttm.bdev); struct drm_device *dev = dev_priv->dev; unsigned int i; @@ -215,8 +218,8 @@ via_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, struct ttm_mem_type_manager *man) { #if IS_ENABLED(CONFIG_AGP) - struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(bdev, + struct via_device, ttm.bdev); struct drm_device *dev = dev_priv->dev; #endif @@ -331,8 +334,8 @@ static int via_move_blit(struct ttm_buffer_object *bo, bool evict, bool no_wait_gpu, struct ttm_mem_reg *new_mem, struct ttm_mem_reg *old_mem) { - struct via_device *dev_priv = - container_of(bo->bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(bo->bdev, + struct via_device, ttm.bdev); enum dma_data_direction direction = DMA_TO_DEVICE; unsigned long old_start, new_start, dev_addr = 0; struct drm_via_sg_info *vsg; @@ -498,8 +501,9 @@ exit: static int via_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem) { - struct via_device *dev_priv = - container_of(bdev, struct via_device, bdev); + struct via_device *dev_priv = container_of(bdev, + struct via_device, ttm.bdev); + struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type]; struct drm_device *dev = dev_priv->dev; @@ -582,10 +586,10 @@ int via_mm_init(struct via_device *dev_priv) goto exit; } - dev_priv->bdev.dev_mapping = dev->anon_inode->i_mapping; + dev_priv->ttm.bdev.dev_mapping = dev->anon_inode->i_mapping; - ret = ttm_bo_device_init(&dev_priv->bdev, - dev_priv->bo_global_ref.ref.object, + ret = ttm_bo_device_init(&dev_priv->ttm.bdev, + dev_priv->ttm.bo_global_ref.ref.object, &via_bo_driver, dev->anon_inode->i_mapping, DRM_FILE_PAGE_OFFSET, @@ -595,7 +599,7 @@ int via_mm_init(struct via_device *dev_priv) goto exit; } - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, dev_priv->vram_size >> PAGE_SHIFT); + ret = ttm_bo_init_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM, dev_priv->vram_size >> PAGE_SHIFT); if (ret) { DRM_ERROR("Failed to map video RAM: %d\n", ret); goto exit; @@ -609,13 +613,13 @@ int via_mm_init(struct via_device *dev_priv) start = (unsigned long long) pci_resource_start(dev->pdev, 1); len = pci_resource_len(dev->pdev, 1); - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_PRIV, len >> PAGE_SHIFT); + ret = ttm_bo_init_mm(&dev_priv->ttm.bdev, TTM_PL_PRIV, len >> PAGE_SHIFT); if (ret) { DRM_ERROR("Failed to map MMIO: %d\n", ret); goto exit; } - ret = via_bo_create(&dev_priv->bdev, &bo, VIA_MMIO_REGSIZE, ttm_bo_type_kernel, + ret = via_bo_create(&dev_priv->ttm.bdev, &bo, VIA_MMIO_REGSIZE, ttm_bo_type_kernel, TTM_PL_FLAG_PRIV, 1, PAGE_SIZE, false, NULL, NULL); if (ret) { DRM_ERROR("Failed to create a buffer object for MMIO: %d\n", ret); @@ -625,7 +629,7 @@ int via_mm_init(struct via_device *dev_priv) ret = via_bo_pin(bo, &dev_priv->mmio); if (ret) { DRM_ERROR("Failed to map a buffer object for MMIO: %d\n", ret); - ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_PRIV); + ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_PRIV); goto exit; } @@ -642,11 +646,11 @@ void via_mm_fini(struct drm_device *dev) DRM_DEBUG("Entered via_mm_fini.\n"); - ttm_bo_device_release(&dev_priv->bdev); + ttm_bo_device_release(&dev_priv->ttm.bdev); - via_ttm_global_release(&dev_priv->mem_global_ref, - &dev_priv->bo_global_ref, - &dev_priv->bdev); + via_ttm_global_release(&dev_priv->ttm.mem_global_ref, + &dev_priv->ttm.bo_global_ref, + &dev_priv->ttm.bdev); /* mtrr delete the vram */ if (dev_priv->vram_mtrr >= 0) { _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel