drm/msm: add headless gpu device for imx5
This patch allows using drm/msm without qcom display hardware. It adds a amd,imageon compatible, which is used instead of qcom,adreno, but does not require a top level msm node. Signed-off-by: Jonathan Marek <jonathan@marek.ca> Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:

committed by
Rob Clark

parent
fb42b5354d
commit
e6f6d63ed1
@@ -520,17 +520,13 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
|
||||
priv->kms = kms;
|
||||
break;
|
||||
default:
|
||||
kms = ERR_PTR(-ENODEV);
|
||||
/* valid only for the dummy headless case, where of_node=NULL */
|
||||
WARN_ON(dev->of_node);
|
||||
kms = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (IS_ERR(kms)) {
|
||||
/*
|
||||
* NOTE: once we have GPU support, having no kms should not
|
||||
* be considered fatal.. ideally we would still support gpu
|
||||
* and (for example) use dmabuf/prime to share buffers with
|
||||
* imx drm driver on iMX5
|
||||
*/
|
||||
DRM_DEV_ERROR(dev, "failed to load kms\n");
|
||||
ret = PTR_ERR(kms);
|
||||
priv->kms = NULL;
|
||||
@@ -648,7 +644,7 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
|
||||
drm_mode_config_reset(ddev);
|
||||
|
||||
#ifdef CONFIG_DRM_FBDEV_EMULATION
|
||||
if (fbdev)
|
||||
if (kms && fbdev)
|
||||
priv->fbdev = msm_fbdev_init(ddev);
|
||||
#endif
|
||||
|
||||
@@ -1332,6 +1328,7 @@ static int add_display_components(struct device *dev,
|
||||
static const struct of_device_id msm_gpu_match[] = {
|
||||
{ .compatible = "qcom,adreno" },
|
||||
{ .compatible = "qcom,adreno-3xx" },
|
||||
{ .compatible = "amd,imageon" },
|
||||
{ .compatible = "qcom,kgsl-3d0" },
|
||||
{ },
|
||||
};
|
||||
@@ -1376,9 +1373,11 @@ static int msm_pdev_probe(struct platform_device *pdev)
|
||||
struct component_match *match = NULL;
|
||||
int ret;
|
||||
|
||||
ret = add_display_components(&pdev->dev, &match);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (get_mdp_ver(pdev)) {
|
||||
ret = add_display_components(&pdev->dev, &match);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = add_gpu_components(&pdev->dev, &match);
|
||||
if (ret)
|
||||
|
Reference in New Issue
Block a user