diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 932e96b755286ed9c0326500e136241e1d032912..51e0c39587960c3cfbdcd8974e2351574b41dc6e 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -17,6 +17,8 @@
* this program. If not, see .
*/
+#include
+
#include
#include
#include
@@ -518,9 +520,17 @@ static struct drm_driver omap_drm_driver = {
.patchlevel = DRIVER_PATCHLEVEL,
};
+static const struct soc_device_attribute omapdrm_soc_devices[] = {
+ { .family = "OMAP3", .data = (void *)0x3430 },
+ { .family = "OMAP4", .data = (void *)0x4430 },
+ { .family = "OMAP5", .data = (void *)0x5430 },
+ { .family = "DRA7", .data = (void *)0x0752 },
+ { /* sentinel */ }
+};
+
static int pdev_probe(struct platform_device *pdev)
{
- struct omap_drm_platform_data *pdata = pdev->dev.platform_data;
+ const struct soc_device_attribute *soc;
struct omap_drm_private *priv;
struct drm_device *ddev;
unsigned int i;
@@ -546,7 +556,8 @@ static int pdev_probe(struct platform_device *pdev)
priv->dispc_ops = dispc_get_ops();
- priv->omaprev = pdata->omaprev;
+ soc = soc_device_match(omapdrm_soc_devices);
+ priv->omaprev = soc ? (unsigned int)soc->data : 0;
priv->wq = alloc_ordered_workqueue("omapdrm", 0);
spin_lock_init(&priv->list_lock);
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
index 621f5aa0142fbbf66516e1698fb1b792fbfaf69c..ea3f575931c344c74c36a94f2c352d14e35b42c9 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.h
+++ b/drivers/gpu/drm/omapdrm/omap_drv.h
@@ -21,7 +21,6 @@
#define __OMAP_DRV_H__
#include
-#include
#include
#include