staging: drm/omap: add support for ARCH_MULTIPLATFORM

Remove usage of plat/cpu.h and get information from platform data
instead.  This enables omapdrm to be built with ARCH_MULTIPLATFORM.

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Rob Clark 2012-10-29 09:31:12 +01:00 committed by Greg Kroah-Hartman
parent f68f5f2067
commit 5e3b087499
6 changed files with 16 additions and 3 deletions

View File

@ -23,15 +23,20 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/platform_data/omap_drm.h>
#include <plat/omap_device.h> #include <plat/omap_device.h>
#include <plat/omap_hwmod.h> #include <plat/omap_hwmod.h>
#include <plat/cpu.h>
#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE) #if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE)
static struct omap_drm_platform_data platform_data;
static struct platform_device omap_drm_device = { static struct platform_device omap_drm_device = {
.dev = { .dev = {
.coherent_dma_mask = DMA_BIT_MASK(32), .coherent_dma_mask = DMA_BIT_MASK(32),
.platform_data = &platform_data,
}, },
.name = "omapdrm", .name = "omapdrm",
.id = 0, .id = 0,
@ -52,6 +57,8 @@ static int __init omap_init_drm(void)
oh->name); oh->name);
} }
platform_data.omaprev = GET_OMAP_REVISION();
return platform_device_register(&omap_drm_device); return platform_device_register(&omap_drm_device);
} }

View File

@ -2,7 +2,7 @@
config DRM_OMAP config DRM_OMAP
tristate "OMAP DRM" tristate "OMAP DRM"
depends on DRM && !CONFIG_FB_OMAP2 depends on DRM && !CONFIG_FB_OMAP2
depends on ARCH_OMAP2PLUS depends on ARCH_OMAP2PLUS || ARCH_MULTIPLATFORM
select DRM_KMS_HELPER select DRM_KMS_HELPER
select OMAP2_DSS select OMAP2_DSS
select FB_SYS_FILLRECT select FB_SYS_FILLRECT

View File

@ -16,7 +16,6 @@
#ifndef OMAP_DMM_TILER_H #ifndef OMAP_DMM_TILER_H
#define OMAP_DMM_TILER_H #define OMAP_DMM_TILER_H
#include <plat/cpu.h>
#include "omap_drv.h" #include "omap_drv.h"
#include "tcm.h" #include "tcm.h"

View File

@ -417,13 +417,14 @@ static void omap_modeset_free(struct drm_device *dev)
static int ioctl_get_param(struct drm_device *dev, void *data, static int ioctl_get_param(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
{ {
struct omap_drm_private *priv = dev->dev_private;
struct drm_omap_param *args = data; struct drm_omap_param *args = data;
DBG("%p: param=%llu", dev, args->param); DBG("%p: param=%llu", dev, args->param);
switch (args->param) { switch (args->param) {
case OMAP_PARAM_CHIPSET_ID: case OMAP_PARAM_CHIPSET_ID:
args->value = GET_OMAP_TYPE; args->value = priv->omaprev;
break; break;
default: default:
DBG("unknown parameter %lld", args->param); DBG("unknown parameter %lld", args->param);
@ -555,6 +556,7 @@ struct drm_ioctl_desc ioctls[DRM_COMMAND_END - DRM_COMMAND_BASE] = {
*/ */
static int dev_load(struct drm_device *dev, unsigned long flags) static int dev_load(struct drm_device *dev, unsigned long flags)
{ {
struct omap_drm_platform_data *pdata = dev->dev->platform_data;
struct omap_drm_private *priv; struct omap_drm_private *priv;
int ret; int ret;
@ -566,6 +568,8 @@ static int dev_load(struct drm_device *dev, unsigned long flags)
return -ENOMEM; return -ENOMEM;
} }
priv->omaprev = pdata->omaprev;
dev->dev_private = priv; dev->dev_private = priv;
priv->wq = alloc_ordered_workqueue("omapdrm", 0); priv->wq = alloc_ordered_workqueue("omapdrm", 0);

View File

@ -40,6 +40,8 @@
#define MAX_MAPPERS 2 #define MAX_MAPPERS 2
struct omap_drm_private { struct omap_drm_private {
uint32_t omaprev;
unsigned int num_crtcs; unsigned int num_crtcs;
struct drm_crtc *crtcs[8]; struct drm_crtc *crtcs[8];

View File

@ -46,6 +46,7 @@ struct omap_kms_platform_data {
}; };
struct omap_drm_platform_data { struct omap_drm_platform_data {
uint32_t omaprev;
struct omap_kms_platform_data *kms_pdata; struct omap_kms_platform_data *kms_pdata;
}; };