Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8b94fa8 authored by Steve Cohen's avatar Steve Cohen
Browse files

drm/msm: update platform device API for DRM 4.14



The drm_device structure no longer contains a pointer to the
platform_device, however since the platform device contains
the drm_device structure some APIs needed refactoring.  This
change updates the ported SDE driver from 4.9 to work in 4.14.

Change-Id: Ie5e1cfae4daa1f9f9f5c5bf7916b1a32c6df755f
Signed-off-by: default avatarSteve Cohen <cohens@codeaurora.org>
parent 7b996496
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -572,7 +572,6 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)

	drm_mode_config_init(ddev);
	platform_set_drvdata(pdev, ddev);
	ddev->platformdev = pdev;

	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
	if (!priv) {
+3 −1
Original line number Diff line number Diff line
@@ -97,7 +97,9 @@ void sde_irq_preinstall(struct msm_kms *kms)

	sde_core_irq_preinstall(sde_kms);

	sde_kms->irq_num = platform_get_irq(sde_kms->dev->platformdev, 0);
	sde_kms->irq_num = platform_get_irq(
				to_platform_device(sde_kms->dev->dev),
				0);
	if (sde_kms->irq_num < 0) {
		SDE_ERROR("invalid irq number %d\n", sde_kms->irq_num);
		return;
+15 −13
Original line number Diff line number Diff line
@@ -1657,12 +1657,12 @@ static void sde_kms_destroy(struct msm_kms *kms)

	sde_kms = to_sde_kms(kms);
	dev = sde_kms->dev;
	if (!dev) {
	if (!dev || !dev->dev) {
		SDE_ERROR("invalid device\n");
		return;
	}

	_sde_kms_hw_destroy(sde_kms, dev->platformdev);
	_sde_kms_hw_destroy(sde_kms, to_platform_device(dev->dev));
	kfree(sde_kms);
}

@@ -2161,7 +2161,7 @@ static int sde_kms_cont_splash_config(struct msm_kms *kms)

	sde_kms = to_sde_kms(kms);
	dev = sde_kms->dev;
	if (!dev || !dev->platformdev) {
	if (!dev) {
		SDE_ERROR("invalid device\n");
		return -EINVAL;
	}
@@ -2723,6 +2723,7 @@ static int sde_kms_hw_init(struct msm_kms *kms)
	struct drm_device *dev;
	struct msm_drm_private *priv;
	bool splash_mem_found = false;
	struct platform_device *platformdev;
	int i, rc = -EINVAL;

	if (!kms) {
@@ -2732,18 +2733,19 @@ static int sde_kms_hw_init(struct msm_kms *kms)

	sde_kms = to_sde_kms(kms);
	dev = sde_kms->dev;
	if (!dev || !dev->platformdev) {
	if (!dev || !dev->dev) {
		SDE_ERROR("invalid device\n");
		goto end;
	}

	platformdev = to_platform_device(dev->dev);
	priv = dev->dev_private;
	if (!priv) {
		SDE_ERROR("invalid private data\n");
		goto end;
	}

	sde_kms->mmio = msm_ioremap(dev->platformdev, "mdp_phys", "mdp_phys");
	sde_kms->mmio = msm_ioremap(platformdev, "mdp_phys", "mdp_phys");
	if (IS_ERR(sde_kms->mmio)) {
		rc = PTR_ERR(sde_kms->mmio);
		SDE_ERROR("mdp register memory map failed: %d\n", rc);
@@ -2751,14 +2753,14 @@ static int sde_kms_hw_init(struct msm_kms *kms)
		goto error;
	}
	DRM_INFO("mapped mdp address space @%p\n", sde_kms->mmio);
	sde_kms->mmio_len = msm_iomap_size(dev->platformdev, "mdp_phys");
	sde_kms->mmio_len = msm_iomap_size(platformdev, "mdp_phys");

	rc = sde_dbg_reg_register_base(SDE_DBG_NAME, sde_kms->mmio,
			sde_kms->mmio_len);
	if (rc)
		SDE_ERROR("dbg base register kms failed: %d\n", rc);

	sde_kms->vbif[VBIF_RT] = msm_ioremap(dev->platformdev, "vbif_phys",
	sde_kms->vbif[VBIF_RT] = msm_ioremap(platformdev, "vbif_phys",
								"vbif_phys");
	if (IS_ERR(sde_kms->vbif[VBIF_RT])) {
		rc = PTR_ERR(sde_kms->vbif[VBIF_RT]);
@@ -2766,20 +2768,20 @@ static int sde_kms_hw_init(struct msm_kms *kms)
		sde_kms->vbif[VBIF_RT] = NULL;
		goto error;
	}
	sde_kms->vbif_len[VBIF_RT] = msm_iomap_size(dev->platformdev,
	sde_kms->vbif_len[VBIF_RT] = msm_iomap_size(platformdev,
								"vbif_phys");
	rc = sde_dbg_reg_register_base("vbif_rt", sde_kms->vbif[VBIF_RT],
				sde_kms->vbif_len[VBIF_RT]);
	if (rc)
		SDE_ERROR("dbg base register vbif_rt failed: %d\n", rc);

	sde_kms->vbif[VBIF_NRT] = msm_ioremap(dev->platformdev, "vbif_nrt_phys",
	sde_kms->vbif[VBIF_NRT] = msm_ioremap(platformdev, "vbif_nrt_phys",
								"vbif_nrt_phys");
	if (IS_ERR(sde_kms->vbif[VBIF_NRT])) {
		sde_kms->vbif[VBIF_NRT] = NULL;
		SDE_DEBUG("VBIF NRT is not defined");
	} else {
		sde_kms->vbif_len[VBIF_NRT] = msm_iomap_size(dev->platformdev,
		sde_kms->vbif_len[VBIF_NRT] = msm_iomap_size(platformdev,
							"vbif_nrt_phys");
		rc = sde_dbg_reg_register_base("vbif_nrt",
				sde_kms->vbif[VBIF_NRT],
@@ -2789,13 +2791,13 @@ static int sde_kms_hw_init(struct msm_kms *kms)
					rc);
	}

	sde_kms->reg_dma = msm_ioremap(dev->platformdev, "regdma_phys",
	sde_kms->reg_dma = msm_ioremap(platformdev, "regdma_phys",
								"regdma_phys");
	if (IS_ERR(sde_kms->reg_dma)) {
		sde_kms->reg_dma = NULL;
		SDE_DEBUG("REG_DMA is not defined");
	} else {
		sde_kms->reg_dma_len = msm_iomap_size(dev->platformdev,
		sde_kms->reg_dma_len = msm_iomap_size(platformdev,
								"regdma_phys");
		rc =  sde_dbg_reg_register_base("reg_dma",
				sde_kms->reg_dma,
@@ -3000,7 +3002,7 @@ static int sde_kms_hw_init(struct msm_kms *kms)
power_error:
	sde_power_resource_enable(&priv->phandle, sde_kms->core_client, false);
error:
	_sde_kms_hw_destroy(sde_kms, dev->platformdev);
	_sde_kms_hw_destroy(sde_kms, platformdev);
end:
	return rc;
}