summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/gma500/gtt.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2022-03-08 22:52:20 +0300
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2022-03-16 19:42:23 +0300
commitd339386c9ffa69d20fcc34f3636dea80ea71818c (patch)
tree14c0d31e42e12dfbb410ed6e8565861fb08b2bea /drivers/gpu/drm/gma500/gtt.c
parent42ceddb696a01e6e31e90c456b882392f1572d69 (diff)
downloadlinux-d339386c9ffa69d20fcc34f3636dea80ea71818c.tar.xz
drm/gma500: Move GEM memory management functions to gem.c
Move GEM functions from gtt.c to gem.c. Adapt some names. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220308195222.13471-11-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/gma500/gtt.c')
-rw-r--r--drivers/gpu/drm/gma500/gtt.c127
1 files changed, 1 insertions, 126 deletions
diff --git a/drivers/gpu/drm/gma500/gtt.c b/drivers/gpu/drm/gma500/gtt.c
index 9e1b19fcea28..b03feec64f01 100644
--- a/drivers/gpu/drm/gma500/gtt.c
+++ b/drivers/gpu/drm/gma500/gtt.c
@@ -49,7 +49,7 @@ int psb_gtt_allocate_resource(struct drm_psb_private *pdev, struct resource *res
*
* Set the GTT entry for the appropriate memory type.
*/
-static inline uint32_t psb_gtt_mask_pte(uint32_t pfn, int type)
+uint32_t psb_gtt_mask_pte(uint32_t pfn, int type)
{
uint32_t mask = PSB_PTE_VALID;
@@ -125,15 +125,6 @@ void psb_gtt_remove_pages(struct drm_psb_private *pdev, const struct resource *r
mutex_unlock(&pdev->gtt_mutex);
}
-void psb_gem_mm_fini(struct drm_device *dev)
-{
- struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
-
- iounmap(dev_priv->vram_addr);
-
- mutex_destroy(&dev_priv->mmap_mutex);
-}
-
void psb_gtt_fini(struct drm_device *dev)
{
struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
@@ -164,55 +155,6 @@ static void psb_gtt_clear(struct drm_psb_private *pdev)
(void)ioread32(pdev->gtt_map + i - 1);
}
-/* Insert vram stolen pages into the GTT. */
-static void psb_gtt_populate_stolen(struct drm_psb_private *pdev)
-{
- struct drm_device *dev = &pdev->dev;
- unsigned int pfn_base;
- unsigned int i, num_pages;
- uint32_t pte;
-
- pfn_base = pdev->stolen_base >> PAGE_SHIFT;
- num_pages = pdev->vram_stolen_size >> PAGE_SHIFT;
-
- drm_dbg(dev, "Set up %u stolen pages starting at 0x%08x, GTT offset %dK\n",
- num_pages, pfn_base << PAGE_SHIFT, 0);
-
- for (i = 0; i < num_pages; ++i) {
- pte = psb_gtt_mask_pte(pfn_base + i, PSB_MMU_CACHED_MEMORY);
- iowrite32(pte, pdev->gtt_map + i);
- }
-
- (void)ioread32(pdev->gtt_map + i - 1);
-}
-
-/* Re-insert all pinned GEM objects into GTT. */
-static void psb_gtt_populate_resources(struct drm_psb_private *pdev)
-{
- unsigned int restored = 0, total = 0, size = 0;
- struct resource *r = pdev->gtt_mem->child;
- struct drm_device *dev = &pdev->dev;
- struct psb_gem_object *pobj;
-
- while (r) {
- /*
- * TODO: GTT restoration needs a refactoring, so that we don't have to touch
- * struct psb_gem_object here. The type represents a GEM object and is
- * not related to the GTT itself.
- */
- pobj = container_of(r, struct psb_gem_object, resource);
- if (pobj->pages) {
- psb_gtt_insert_pages(pdev, &pobj->resource, pobj->pages);
- size += resource_size(&pobj->resource);
- ++restored;
- }
- r = r->sibling;
- ++total;
- }
-
- drm_dbg(dev, "Restored %u of %u gtt ranges (%u KB)", restored, total, (size / 1024));
-}
-
int psb_gtt_init(struct drm_device *dev)
{
struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
@@ -300,45 +242,6 @@ err_gtt_disable:
return ret;
}
-int psb_gem_mm_init(struct drm_device *dev)
-{
- struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
- struct pci_dev *pdev = to_pci_dev(dev->dev);
- unsigned long stolen_size, vram_stolen_size;
- struct psb_gtt *pg;
- int ret;
-
- mutex_init(&dev_priv->mmap_mutex);
-
- pg = &dev_priv->gtt;
-
- pci_read_config_dword(pdev, PSB_BSM, &dev_priv->stolen_base);
- vram_stolen_size = pg->gtt_phys_start - dev_priv->stolen_base - PAGE_SIZE;
-
- stolen_size = vram_stolen_size;
-
- dev_dbg(dev->dev, "Stolen memory base 0x%x, size %luK\n",
- dev_priv->stolen_base, vram_stolen_size / 1024);
-
- pg->stolen_size = stolen_size;
- dev_priv->vram_stolen_size = vram_stolen_size;
-
- dev_priv->vram_addr = ioremap_wc(dev_priv->stolen_base, stolen_size);
- if (!dev_priv->vram_addr) {
- dev_err(dev->dev, "Failure to map stolen base.\n");
- ret = -ENOMEM;
- goto err_mutex_destroy;
- }
-
- psb_gtt_populate_stolen(dev_priv);
-
- return 0;
-
-err_mutex_destroy:
- mutex_destroy(&dev_priv->mmap_mutex);
- return ret;
-}
-
int psb_gtt_resume(struct drm_device *dev)
{
struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
@@ -421,31 +324,3 @@ err_gtt_disable:
(void)PSB_RVDC32(PSB_PGETBL_CTL);
return ret;
}
-
-int psb_gem_mm_resume(struct drm_device *dev)
-{
- struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
- struct pci_dev *pdev = to_pci_dev(dev->dev);
- unsigned long stolen_size, vram_stolen_size;
- struct psb_gtt *pg;
-
- pg = &dev_priv->gtt;
-
- pci_read_config_dword(pdev, PSB_BSM, &dev_priv->stolen_base);
- vram_stolen_size = pg->gtt_phys_start - dev_priv->stolen_base - PAGE_SIZE;
-
- stolen_size = vram_stolen_size;
-
- dev_dbg(dev->dev, "Stolen memory base 0x%x, size %luK\n", dev_priv->stolen_base,
- vram_stolen_size / 1024);
-
- if (stolen_size != pg->stolen_size) {
- dev_err(dev->dev, "GTT resume error.\n");
- return -EINVAL;
- }
-
- psb_gtt_populate_stolen(dev_priv);
- psb_gtt_populate_resources(dev_priv);
-
- return 0;
-}