Commit e2fb50521c3811eddd60d911bc6d4d191f5d6e61

Authored by Andy Gross
Committed by Tony Lindgren
1 parent 6887a4131d

omap2+: add drm device

Register OMAP DRM/KMS platform device.  DMM is split into a
separate device using hwmod.

Signed-off-by: Andy Gross <andy.gross@ti.com>
Signed-off-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>

Showing 5 changed files with 118 additions and 56 deletions Side-by-side Diff

arch/arm/mach-omap2/Makefile
... ... @@ -189,6 +189,10 @@
189 189 # OMAP2420 MSDI controller integration support ("MMC")
190 190 obj-$(CONFIG_SOC_OMAP2420) += msdi.o
191 191  
  192 +ifneq ($(CONFIG_DRM_OMAP),)
  193 +obj-y += drm.o
  194 +endif
  195 +
192 196 # Specific board support
193 197 obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
194 198 obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o
arch/arm/mach-omap2/drm.c
  1 +/*
  2 + * DRM/KMS device registration for TI OMAP platforms
  3 + *
  4 + * Copyright (C) 2012 Texas Instruments
  5 + * Author: Rob Clark <rob.clark@linaro.org>
  6 + *
  7 + * This program is free software; you can redistribute it and/or modify it
  8 + * under the terms of the GNU General Public License version 2 as published by
  9 + * the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful, but WITHOUT
  12 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  14 + * more details.
  15 + *
  16 + * You should have received a copy of the GNU General Public License along with
  17 + * this program. If not, see <http://www.gnu.org/licenses/>.
  18 + */
  19 +
  20 +#include <linux/module.h>
  21 +#include <linux/kernel.h>
  22 +#include <linux/mm.h>
  23 +#include <linux/init.h>
  24 +#include <linux/platform_device.h>
  25 +#include <linux/dma-mapping.h>
  26 +
  27 +#include <plat/omap_device.h>
  28 +#include <plat/omap_hwmod.h>
  29 +
  30 +#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE)
  31 +
  32 +static struct platform_device omap_drm_device = {
  33 + .dev = {
  34 + .coherent_dma_mask = DMA_BIT_MASK(32),
  35 + },
  36 + .name = "omapdrm",
  37 + .id = 0,
  38 +};
  39 +
  40 +static int __init omap_init_drm(void)
  41 +{
  42 + struct omap_hwmod *oh = NULL;
  43 + struct platform_device *pdev;
  44 +
  45 + /* lookup and populate the DMM information, if present - OMAP4+ */
  46 + oh = omap_hwmod_lookup("dmm");
  47 +
  48 + if (oh) {
  49 + pdev = omap_device_build(oh->name, -1, oh, NULL, 0, NULL, 0,
  50 + false);
  51 + WARN(IS_ERR(pdev), "Could not build omap_device for %s\n",
  52 + oh->name);
  53 + }
  54 +
  55 + return platform_device_register(&omap_drm_device);
  56 +
  57 +}
  58 +
  59 +arch_initcall(omap_init_drm);
  60 +
  61 +#endif
drivers/staging/omapdrm/omap_drv.h
... ... @@ -25,8 +25,8 @@
25 25 #include <linux/types.h>
26 26 #include <drm/drmP.h>
27 27 #include <drm/drm_crtc_helper.h>
  28 +#include <linux/platform_data/omap_drm.h>
28 29 #include "omap_drm.h"
29   -#include "omap_priv.h"
30 30  
31 31 #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__)
32 32 #define VERB(fmt, ...) if (0) DRM_DEBUG(fmt, ##__VA_ARGS__) /* verbose debug */
drivers/staging/omapdrm/omap_priv.h
1   -/*
2   - * include/drm/omap_priv.h
3   - *
4   - * Copyright (C) 2011 Texas Instruments
5   - * Author: Rob Clark <rob@ti.com>
6   - *
7   - * This program is free software; you can redistribute it and/or modify it
8   - * under the terms of the GNU General Public License version 2 as published by
9   - * the Free Software Foundation.
10   - *
11   - * This program is distributed in the hope that it will be useful, but WITHOUT
12   - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14   - * more details.
15   - *
16   - * You should have received a copy of the GNU General Public License along with
17   - * this program. If not, see <http://www.gnu.org/licenses/>.
18   - */
19   -
20   -#ifndef __OMAP_PRIV_H__
21   -#define __OMAP_PRIV_H__
22   -
23   -/* Non-userspace facing APIs
24   - */
25   -
26   -/* optional platform data to configure the default configuration of which
27   - * pipes/overlays/CRTCs are used.. if this is not provided, then instead the
28   - * first CONFIG_DRM_OMAP_NUM_CRTCS are used, and they are each connected to
29   - * one manager, with priority given to managers that are connected to
30   - * detected devices. Remaining overlays are used as video planes. This
31   - * should be a good default behavior for most cases, but yet there still
32   - * might be times when you wish to do something different.
33   - */
34   -struct omap_kms_platform_data {
35   - /* overlays to use as CRTCs: */
36   - int ovl_cnt;
37   - const int *ovl_ids;
38   -
39   - /* overlays to use as video planes: */
40   - int pln_cnt;
41   - const int *pln_ids;
42   -
43   - int mgr_cnt;
44   - const int *mgr_ids;
45   -
46   - int dev_cnt;
47   - const char **dev_names;
48   -};
49   -
50   -struct omap_drm_platform_data {
51   - struct omap_kms_platform_data *kms_pdata;
52   - struct omap_dmm_platform_data *dmm_pdata;
53   -};
54   -
55   -#endif /* __OMAP_DRM_H__ */
include/linux/platform_data/omap_drm.h
  1 +/*
  2 + * DRM/KMS platform data for TI OMAP platforms
  3 + *
  4 + * Copyright (C) 2012 Texas Instruments
  5 + * Author: Rob Clark <rob.clark@linaro.org>
  6 + *
  7 + * This program is free software; you can redistribute it and/or modify it
  8 + * under the terms of the GNU General Public License version 2 as published by
  9 + * the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful, but WITHOUT
  12 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  14 + * more details.
  15 + *
  16 + * You should have received a copy of the GNU General Public License along with
  17 + * this program. If not, see <http://www.gnu.org/licenses/>.
  18 + */
  19 +
  20 +#ifndef __PLATFORM_DATA_OMAP_DRM_H__
  21 +#define __PLATFORM_DATA_OMAP_DRM_H__
  22 +
  23 +/*
  24 + * Optional platform data to configure the default configuration of which
  25 + * pipes/overlays/CRTCs are used.. if this is not provided, then instead the
  26 + * first CONFIG_DRM_OMAP_NUM_CRTCS are used, and they are each connected to
  27 + * one manager, with priority given to managers that are connected to
  28 + * detected devices. Remaining overlays are used as video planes. This
  29 + * should be a good default behavior for most cases, but yet there still
  30 + * might be times when you wish to do something different.
  31 + */
  32 +struct omap_kms_platform_data {
  33 + /* overlays to use as CRTCs: */
  34 + int ovl_cnt;
  35 + const int *ovl_ids;
  36 +
  37 + /* overlays to use as video planes: */
  38 + int pln_cnt;
  39 + const int *pln_ids;
  40 +
  41 + int mgr_cnt;
  42 + const int *mgr_ids;
  43 +
  44 + int dev_cnt;
  45 + const char **dev_names;
  46 +};
  47 +
  48 +struct omap_drm_platform_data {
  49 + struct omap_kms_platform_data *kms_pdata;
  50 +};
  51 +
  52 +#endif /* __PLATFORM_DATA_OMAP_DRM_H__ */