diff options
| author | Mark Brown <broonie@kernel.org> | 2016-02-09 21:20:39 +0300 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2016-02-09 21:20:39 +0300 | 
| commit | fcdcc79628a1919bde9acf239e364f65bab6327c (patch) | |
| tree | 5499be387cf3028c90ac083b1cf866ebed7bf7e0 /drivers/gpu/drm/msm/msm_drv.c | |
| parent | 7a8d44bc89e5cddcd5c0704a11a90484d36ba6ba (diff) | |
| parent | a0a90718f18264dc904d34a580f332006f5561e9 (diff) | |
| download | linux-fcdcc79628a1919bde9acf239e364f65bab6327c.tar.xz | |
Merge branch 'topic/acpi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-pxa2xx
Diffstat (limited to 'drivers/gpu/drm/msm/msm_drv.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 76 | 
1 files changed, 16 insertions, 60 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index b88ce514eb8e..9a30807b900b 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -237,20 +237,9 @@ static int msm_unload(struct drm_device *dev)  static int get_mdp_ver(struct platform_device *pdev)  { -#ifdef CONFIG_OF -	static const struct of_device_id match_types[] = { { -		.compatible = "qcom,mdss_mdp", -		.data	= (void	*)5, -	}, { -		/* end node */ -	} };  	struct device *dev = &pdev->dev; -	const struct of_device_id *match; -	match = of_match_node(match_types, dev->of_node); -	if (match) -		return (int)(unsigned long)match->data; -#endif -	return 4; + +	return (int) (unsigned long) of_device_get_match_data(dev);  }  #include <linux/of_address.h> @@ -258,10 +247,10 @@ static int get_mdp_ver(struct platform_device *pdev)  static int msm_init_vram(struct drm_device *dev)  {  	struct msm_drm_private *priv = dev->dev_private; +	struct device_node *node;  	unsigned long size = 0;  	int ret = 0; -#ifdef CONFIG_OF  	/* In the device-tree world, we could have a 'memory-region'  	 * phandle, which gives us a link to our "vram".  Allocating  	 * is all nicely abstracted behind the dma api, but we need @@ -278,7 +267,6 @@ static int msm_init_vram(struct drm_device *dev)  	 *     as corruption on screen before we have a chance to  	 *     load and do initial modeset)  	 */ -	struct device_node *node;  	node = of_parse_phandle(dev->dev->of_node, "memory-region", 0);  	if (node) { @@ -288,14 +276,12 @@ static int msm_init_vram(struct drm_device *dev)  			return ret;  		size = r.end - r.start;  		DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start); -	} else -#endif -	/* if we have no IOMMU, then we need to use carveout allocator. -	 * Grab the entire CMA chunk carved out in early startup in -	 * mach-msm: -	 */ -	if (!iommu_present(&platform_bus_type)) { +		/* if we have no IOMMU, then we need to use carveout allocator. +		 * Grab the entire CMA chunk carved out in early startup in +		 * mach-msm: +		 */ +	} else if (!iommu_present(&platform_bus_type)) {  		DRM_INFO("using %s VRAM carveout\n", vram);  		size = memparse(vram, NULL);  	} @@ -1035,9 +1021,9 @@ static const struct dev_pm_ops msm_pm_ops = {   * Componentized driver support:   */ -#ifdef CONFIG_OF -/* NOTE: the CONFIG_OF case duplicates the same code as exynos or imx - * (or probably any other).. so probably some room for some helpers +/* + * NOTE: duplication of the same code as exynos or imx (or probably any other). + * so probably some room for some helpers   */  static int compare_of(struct device *dev, void *data)  { @@ -1062,12 +1048,6 @@ static int add_components(struct device *dev, struct component_match **matchptr,  	return 0;  } -#else -static int compare_dev(struct device *dev, void *data) -{ -	return dev == data; -} -#endif  static int msm_drm_bind(struct device *dev)  { @@ -1091,35 +1071,9 @@ static const struct component_master_ops msm_drm_ops = {  static int msm_pdev_probe(struct platform_device *pdev)  {  	struct component_match *match = NULL; -#ifdef CONFIG_OF +  	add_components(&pdev->dev, &match, "connectors");  	add_components(&pdev->dev, &match, "gpus"); -#else -	/* For non-DT case, it kinda sucks.  We don't actually have a way -	 * to know whether or not we are waiting for certain devices (or if -	 * they are simply not present).  But for non-DT we only need to -	 * care about apq8064/apq8060/etc (all mdp4/a3xx): -	 */ -	static const char *devnames[] = { -			"hdmi_msm.0", "kgsl-3d0.0", -	}; -	int i; - -	DBG("Adding components.."); - -	for (i = 0; i < ARRAY_SIZE(devnames); i++) { -		struct device *dev; - -		dev = bus_find_device_by_name(&platform_bus_type, -				NULL, devnames[i]); -		if (!dev) { -			dev_info(&pdev->dev, "still waiting for %s\n", devnames[i]); -			return -EPROBE_DEFER; -		} - -		component_match_add(&pdev->dev, &match, compare_dev, dev); -	} -#endif  	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);  	return component_master_add_with_match(&pdev->dev, &msm_drm_ops, match); @@ -1138,8 +1092,10 @@ static const struct platform_device_id msm_id[] = {  };  static const struct of_device_id dt_match[] = { -	{ .compatible = "qcom,mdp" },      /* mdp4 */ -	{ .compatible = "qcom,mdss_mdp" }, /* mdp5 */ +	{ .compatible = "qcom,mdp4", .data = (void *) 4 },	/* mdp4 */ +	{ .compatible = "qcom,mdp5", .data = (void *) 5 },	/* mdp5 */ +	/* to support downstream DT files */ +	{ .compatible = "qcom,mdss_mdp", .data = (void *) 5 },  /* mdp5 */  	{}  };  MODULE_DEVICE_TABLE(of, dt_match);  | 
