Commit 5bf9c0b6 authored by Rob Clark's avatar Rob Clark

drm/msm: split out vram initialization

We'll want to extend this a bit to handle also a reserved-memory
("stolen") region, so that drm/msm can take-over bootloader splash
screen.  First split it out into it's own fxn to reduce noise in
the following patch.
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 564b687b
...@@ -182,29 +182,9 @@ static int get_mdp_ver(struct platform_device *pdev) ...@@ -182,29 +182,9 @@ static int get_mdp_ver(struct platform_device *pdev)
return 4; return 4;
} }
static int msm_load(struct drm_device *dev, unsigned long flags) static int msm_init_vram(struct drm_device *dev)
{ {
struct platform_device *pdev = dev->platformdev; struct msm_drm_private *priv = dev->dev_private;
struct msm_drm_private *priv;
struct msm_kms *kms;
int ret;
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv) {
dev_err(dev->dev, "failed to allocate private data\n");
return -ENOMEM;
}
dev->dev_private = priv;
priv->wq = alloc_ordered_workqueue("msm", 0);
init_waitqueue_head(&priv->fence_event);
init_waitqueue_head(&priv->pending_crtcs_event);
INIT_LIST_HEAD(&priv->inactive_list);
INIT_LIST_HEAD(&priv->fence_cbs);
drm_mode_config_init(dev);
/* if we have no IOMMU, then we need to use carveout allocator. /* if we have no IOMMU, then we need to use carveout allocator.
* Grab the entire CMA chunk carved out in early startup in * Grab the entire CMA chunk carved out in early startup in
...@@ -232,8 +212,7 @@ static int msm_load(struct drm_device *dev, unsigned long flags) ...@@ -232,8 +212,7 @@ static int msm_load(struct drm_device *dev, unsigned long flags)
if (!p) { if (!p) {
dev_err(dev->dev, "failed to allocate VRAM\n"); dev_err(dev->dev, "failed to allocate VRAM\n");
priv->vram.paddr = 0; priv->vram.paddr = 0;
ret = -ENOMEM; return -ENOMEM;
goto fail;
} }
dev_info(dev->dev, "VRAM: %08x->%08x\n", dev_info(dev->dev, "VRAM: %08x->%08x\n",
...@@ -241,6 +220,37 @@ static int msm_load(struct drm_device *dev, unsigned long flags) ...@@ -241,6 +220,37 @@ static int msm_load(struct drm_device *dev, unsigned long flags)
(uint32_t)(priv->vram.paddr + size)); (uint32_t)(priv->vram.paddr + size));
} }
return 0;
}
static int msm_load(struct drm_device *dev, unsigned long flags)
{
struct platform_device *pdev = dev->platformdev;
struct msm_drm_private *priv;
struct msm_kms *kms;
int ret;
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv) {
dev_err(dev->dev, "failed to allocate private data\n");
return -ENOMEM;
}
dev->dev_private = priv;
priv->wq = alloc_ordered_workqueue("msm", 0);
init_waitqueue_head(&priv->fence_event);
init_waitqueue_head(&priv->pending_crtcs_event);
INIT_LIST_HEAD(&priv->inactive_list);
INIT_LIST_HEAD(&priv->fence_cbs);
drm_mode_config_init(dev);
ret = msm_init_vram(dev);
if (ret)
goto fail;
platform_set_drvdata(pdev, dev); platform_set_drvdata(pdev, dev);
/* Bind all our sub-components: */ /* Bind all our sub-components: */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment