Re: [PATCH] omap2+: add drm device

Gross, Andy
2012-06-19T21:12:58Z

Tony,

Please queue this patch at your earliest convenience.

We had some discussion on the splitting out of the DMM/Tiler driver
from the omapdrm driver. There might be some interest in leveraging
the Tiler for omapfb. However, we agreed this can be deferred until
some other device (omapfb or otherwise) needs to use the Tiler.

Regards,

Andy Gross

On Mon, Jun 11, 2012 at 10:51 AM, Rob Clark <rob.clark@linaro.org> wrote:
>
> On Wed, May 23, 2012 at 3:08 PM, Andy Gross <andy.gross@ti.com> wrote:
> > 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>
>
> > ---
> >  arch/arm/mach-omap2/Makefile           |    4 ++
> >  arch/arm/mach-omap2/drm.c              |   61 ++++++++++++++++++++++++++++++++
> >  drivers/staging/omapdrm/omap_drv.h     |    2 +-
> >  drivers/staging/omapdrm/omap_priv.h    |   55 ----------------------------
> >  include/linux/platform_data/omap_drm.h |   52 +++++++++++++++++++++++++++
> >  5 files changed, 118 insertions(+), 56 deletions(-)
> >  create mode 100644 arch/arm/mach-omap2/drm.c
> >  delete mode 100644 drivers/staging/omapdrm/omap_priv.h
> >  create mode 100644 include/linux/platform_data/omap_drm.h
> >
> > diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> > index 49f92bc..c301ab7 100644
> > --- a/arch/arm/mach-omap2/Makefile
> > +++ b/arch/arm/mach-omap2/Makefile
> > @@ -187,6 +187,10 @@ ifneq ($(CONFIG_TIDSPBRIDGE),)
> >  obj-y                                  += dsp.o
> >  endif
> >
> > +ifneq ($(CONFIG_DRM_OMAP),)
> > +obj-y                                  += drm.o
> > +endif
> > +
> >  # Specific board support
> >  obj-$(CONFIG_MACH_OMAP_GENERIC)                += board-generic.o
> >  obj-$(CONFIG_MACH_OMAP_H4)             += board-h4.o
> > diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c
> > new file mode 100644
> > index 0000000..72e0f01b
> > --- /dev/null
> > +++ b/arch/arm/mach-omap2/drm.c
> > @@ -0,0 +1,61 @@
> > +/*
> > + * DRM/KMS device registration for TI OMAP platforms
> > + *
> > + * Copyright (C) 2012 Texas Instruments
> > + * Author: Rob Clark <rob.clark@linaro.org>
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License version 2 as published by
> > + * the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful, but WITHOUT
> > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> > + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> > + * more details.
> > + *
> > + * You should have received a copy of the GNU General Public License along with
> > + * this program.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#include <linux/module.h>
> > +#include <linux/kernel.h>
> > +#include <linux/mm.h>
> > +#include <linux/init.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/dma-mapping.h>
> > +
> > +#include <plat/omap_device.h>
> > +#include <plat/omap_hwmod.h>
> > +
> > +#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE)
> > +
> > +static struct platform_device omap_drm_device = {
> > +       .dev = {
> > +               .coherent_dma_mask = DMA_BIT_MASK(32),
> > +       },
> > +       .name = "omapdrm",
> > +       .id = 0,
> > +};
> > +
> > +static int __init omap_init_drm(void)
> > +{
> > +       struct omap_hwmod *oh = NULL;
> > +       struct platform_device *pdev;
> > +
> > +       /* lookup and populate the DMM information, if present - OMAP4+ */
> > +       oh = omap_hwmod_lookup("dmm");
> > +
> > +       if (oh) {
> > +               pdev = omap_device_build(oh->name, -1, oh, NULL, 0, NULL, 0,
> > +                                       false);
> > +               WARN(IS_ERR(pdev), "Could not build omap_device for %s\n",
> > +                       oh->name);
> > +       }
> > +
> > +       return platform_device_register(&omap_drm_device);
> > +
> > +}
> > +
> > +arch_initcall(omap_init_drm);
> > +
> > +#endif
> > diff --git a/drivers/staging/omapdrm/omap_drv.h b/drivers/staging/omapdrm/omap_drv.h
> > index b7e0f07..96296e0 100644
> > --- a/drivers/staging/omapdrm/omap_drv.h
> > +++ b/drivers/staging/omapdrm/omap_drv.h
> > @@ -25,8 +25,8 @@
> >  #include <linux/types.h>
> >  #include <drm/drmP.h>
> >  #include <drm/drm_crtc_helper.h>
> > +#include <linux/platform_data/omap_drm.h>
> >  #include "omap_drm.h"
> > -#include "omap_priv.h"
> >
> >  #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__)
> >  #define VERB(fmt, ...) if (0) DRM_DEBUG(fmt, ##__VA_ARGS__) /* verbose debug */
> > diff --git a/drivers/staging/omapdrm/omap_priv.h b/drivers/staging/omapdrm/omap_priv.h
> > deleted file mode 100644
> > index ef64414..0000000
> > --- a/drivers/staging/omapdrm/omap_priv.h
> > +++ /dev/null
> > @@ -1,55 +0,0 @@
> > -/*
> > - * include/drm/omap_priv.h
> > - *
> > - * Copyright (C) 2011 Texas Instruments
> > - * Author: Rob Clark <rob@ti.com>
> > - *
> > - * This program is free software; you can redistribute it and/or modify it
> > - * under the terms of the GNU General Public License version 2 as published by
> > - * the Free Software Foundation.
> > - *
> > - * This program is distributed in the hope that it will be useful, but WITHOUT
> > - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> > - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> > - * more details.
> > - *
> > - * You should have received a copy of the GNU General Public License along with
> > - * this program.  If not, see <http://www.gnu.org/licenses/>.
> > - */
> > -
> > -#ifndef __OMAP_PRIV_H__
> > -#define __OMAP_PRIV_H__
> > -
> > -/* Non-userspace facing APIs
> > - */
> > -
> > -/* optional platform data to configure the default configuration of which
> > - * pipes/overlays/CRTCs are used.. if this is not provided, then instead the
> > - * first CONFIG_DRM_OMAP_NUM_CRTCS are used, and they are each connected to
> > - * one manager, with priority given to managers that are connected to
> > - * detected devices.  Remaining overlays are used as video planes.  This
> > - * should be a good default behavior for most cases, but yet there still
> > - * might be times when you wish to do something different.
> > - */
> > -struct omap_kms_platform_data {
> > -       /* overlays to use as CRTCs: */
> > -       int ovl_cnt;
> > -       const int *ovl_ids;
> > -
> > -       /* overlays to use as video planes: */
> > -       int pln_cnt;
> > -       const int *pln_ids;
> > -
> > -       int mgr_cnt;
> > -       const int *mgr_ids;
> > -
> > -       int dev_cnt;
> > -       const char **dev_names;
> > -};
> > -
> > -struct omap_drm_platform_data {
> > -       struct omap_kms_platform_data *kms_pdata;
> > -       struct omap_dmm_platform_data *dmm_pdata;
> > -};
> > -
> > -#endif /* __OMAP_DRM_H__ */
> > diff --git a/include/linux/platform_data/omap_drm.h b/include/linux/platform_data/omap_drm.h
> > new file mode 100644
> > index 0000000..3da73bd
> > --- /dev/null
> > +++ b/include/linux/platform_data/omap_drm.h
> > @@ -0,0 +1,52 @@
> > +/*
> > + * DRM/KMS platform data for TI OMAP platforms
> > + *
> > + * Copyright (C) 2012 Texas Instruments
> > + * Author: Rob Clark <rob.clark@linaro.org>
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License version 2 as published by
> > + * the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful, but WITHOUT
> > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> > + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> > + * more details.
> > + *
> > + * You should have received a copy of the GNU General Public License along with
> > + * this program.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#ifndef __PLATFORM_DATA_OMAP_DRM_H__
> > +#define __PLATFORM_DATA_OMAP_DRM_H__
> > +
> > +/*
> > + * Optional platform data to configure the default configuration of which
> > + * pipes/overlays/CRTCs are used.. if this is not provided, then instead the
> > + * first CONFIG_DRM_OMAP_NUM_CRTCS are used, and they are each connected to
> > + * one manager, with priority given to managers that are connected to
> > + * detected devices.  Remaining overlays are used as video planes.  This
> > + * should be a good default behavior for most cases, but yet there still
> > + * might be times when you wish to do something different.
> > + */
> > +struct omap_kms_platform_data {
> > +       /* overlays to use as CRTCs: */
> > +       int ovl_cnt;
> > +       const int *ovl_ids;
> > +
> > +       /* overlays to use as video planes: */
> > +       int pln_cnt;
> > +       const int *pln_ids;
> > +
> > +       int mgr_cnt;
> > +       const int *mgr_ids;
> > +
> > +       int dev_cnt;
> > +       const char **dev_names;
> > +};
> > +
> > +struct omap_drm_platform_data {
> > +       struct omap_kms_platform_data *kms_pdata;
> > +};
> > +
> > +#endif /* __PLATFORM_DATA_OMAP_DRM_H__ */
> > --
> > 1.7.5.4
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html