All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] omap2+: add drm device
@ 2012-01-13 20:41 Rob Clark
  2012-01-13 20:42 ` [PATCH 2/2] drm/omap: platform data structs moved to plat-omap Rob Clark
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Rob Clark @ 2012-01-13 20:41 UTC (permalink / raw)
  To: linux-omap, dri-devel
  Cc: patches, Greg KH, Tomi Valkeinen, Andy Gross, Rob Clark

From: Rob Clark <rob@ti.com>

Register OMAP DRM/KMS platform device, and reserve a CMA region for
the device to use for buffer allocation.

v1: initial patch
v2: move platform data structs into plat-omap to avoid having to
    #include headers from drivers/staging and cleanups

Signed-off-by: Rob Clark <rob@ti.com>
---
Note: after applying this patch there will be duplicate copies of the
platform data structs (until the 2nd patch is applied).  But I tested
to ensure this does not cause build breaks.  So the 2nd patch which
should go thru staging tree is safe to be held until this patch hits
Linus's master branch.

 arch/arm/plat-omap/Makefile           |    2 +-
 arch/arm/plat-omap/common.c           |    3 +-
 arch/arm/plat-omap/drm.c              |   83 +++++++++++++++++++++++++++++++++
 arch/arm/plat-omap/include/plat/drm.h |   70 +++++++++++++++++++++++++++
 4 files changed, 156 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/plat-omap/drm.c
 create mode 100644 arch/arm/plat-omap/include/plat/drm.h

diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index 9a58461..b86e6cb 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -4,7 +4,7 @@
 
 # Common support
 obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
-	 usb.o fb.o counter_32k.o
+	 usb.o fb.o counter_32k.o drm.o
 obj-m :=
 obj-n :=
 obj-  :=
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index 06383b5..0d87dab 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -21,10 +21,10 @@
 #include <plat/board.h>
 #include <plat/vram.h>
 #include <plat/dsp.h>
+#include <plat/drm.h>
 
 #include <plat/omap-secure.h>
 
-
 #define NO_LENGTH_CHECK 0xffffffff
 
 struct omap_board_config_kernel *omap_board_config __initdata;
@@ -65,6 +65,7 @@ const void *__init omap_get_var_config(u16 tag, size_t *len)
 
 void __init omap_reserve(void)
 {
+	omapdrm_reserve_vram();
 	omapfb_reserve_sdram_memblock();
 	omap_vram_reserve_sdram_memblock();
 	omap_dsp_reserve_sdram_memblock();
diff --git a/arch/arm/plat-omap/drm.c b/arch/arm/plat-omap/drm.c
new file mode 100644
index 0000000..aa0ba69
--- /dev/null
+++ b/arch/arm/plat-omap/drm.c
@@ -0,0 +1,83 @@
+/*
+ * 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>
+#ifdef CONFIG_CMA
+#  include <linux/dma-contiguous.h>
+#endif
+
+#include <plat/omap_device.h>
+#include <plat/omap_hwmod.h>
+
+#include <plat/drm.h>
+
+#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE)
+
+static struct omap_drm_platform_data omapdrm_platdata;
+static struct omap_dmm_platform_data dmm_platdata;
+
+static struct platform_device omap_drm_device = {
+		.dev = {
+			.coherent_dma_mask = DMA_BIT_MASK(32),
+			.platform_data = &omapdrm_platdata,
+		},
+		.name = "omapdrm",
+		.id = 0,
+};
+
+static int __init omap_init_gpu(void)
+{
+	struct omap_hwmod *oh = NULL;
+
+	/* lookup and populate the DMM information, if present - OMAP4+ */
+	oh = omap_hwmod_lookup("dmm");
+
+	if (oh) {
+		dmm_platdata.base = omap_hwmod_get_mpu_rt_va(oh);
+		dmm_platdata.irq = oh->mpu_irqs[0].irq;
+
+		if (dmm_platdata.base)
+			omapdrm_platdata.dmm_pdata = &dmm_platdata;
+	}
+
+	return platform_device_register(&omap_drm_device);
+}
+
+arch_initcall(omap_init_gpu);
+
+void omapdrm_reserve_vram(void)
+{
+#ifdef CONFIG_CMA
+	/*
+	 * Create private 32MiB contiguous memory area for omapdrm.0 device
+	 * TODO revisit size.. if uc/wc buffers are allocated from CMA pages
+	 * then the amount of memory we need goes up..
+	 */
+	dma_declare_contiguous(&omap_drm_device.dev, 32 * SZ_1M, 0, 0);
+#else
+#  warning "CMA is not enabled, there may be limitations about scanout buffer allocations on OMAP3 and earlier"
+#endif
+}
+
+#endif
diff --git a/arch/arm/plat-omap/include/plat/drm.h b/arch/arm/plat-omap/include/plat/drm.h
new file mode 100644
index 0000000..e29be29
--- /dev/null
+++ b/arch/arm/plat-omap/include/plat/drm.h
@@ -0,0 +1,70 @@
+/*
+ * 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/>.
+ */
+
+#ifndef __PLAT_OMAP_DRM_H__
+#define __PLAT_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;
+	struct omap_dmm_platform_data *dmm_pdata;
+};
+
+struct omap_dmm_platform_data {
+	void __iomem *base;
+	int irq;
+};
+
+#if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
+
+void omapdrm_reserve_vram(void);
+
+#else
+
+static inline void omapdrm_reserve_vram(void)
+{
+}
+
+#endif
+
+#endif /* __PLAT_OMAP_DRM_H__ */
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 2/2] drm/omap: platform data structs moved to plat-omap
  2012-01-13 20:41 [PATCH 1/2] omap2+: add drm device Rob Clark
@ 2012-01-13 20:42 ` Rob Clark
  2012-01-13 20:59 ` [PATCH 1/2] omap2+: add drm device Felipe Contreras
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 21+ messages in thread
From: Rob Clark @ 2012-01-13 20:42 UTC (permalink / raw)
  To: linux-omap, dri-devel
  Cc: patches, Greg KH, Tomi Valkeinen, Andy Gross, Rob Clark

From: Rob Clark <rob@ti.com>

Platform data structs populated when the platform device is registered
need to be #include'able under arch/arm/..., but having to #include
headers from drivers/staging is messy.  Instead these structs are
moved to arch/arm/plat-omap/include/plat.

Signed-off-by: Rob Clark <rob@ti.com>
---

 drivers/staging/omapdrm/omap_dmm_tiler.h |    5 ---
 drivers/staging/omapdrm/omap_drv.h       |    2 +-
 drivers/staging/omapdrm/omap_priv.h      |   55 ------------------------------
 3 files changed, 1 insertions(+), 61 deletions(-)
 delete mode 100644 drivers/staging/omapdrm/omap_priv.h

diff --git a/drivers/staging/omapdrm/omap_dmm_tiler.h b/drivers/staging/omapdrm/omap_dmm_tiler.h
index f87cb65..821d8e7 100644
--- a/drivers/staging/omapdrm/omap_dmm_tiler.h
+++ b/drivers/staging/omapdrm/omap_dmm_tiler.h
@@ -127,9 +127,4 @@ static inline bool validfmt(enum tiler_fmt fmt)
 	}
 }
 
-struct omap_dmm_platform_data {
-	void __iomem *base;
-	int irq;
-};
-
 #endif
diff --git a/drivers/staging/omapdrm/omap_drv.h b/drivers/staging/omapdrm/omap_drv.h
index 48f6fce..db275ca 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 <plat/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__ */
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 20:41 [PATCH 1/2] omap2+: add drm device Rob Clark
  2012-01-13 20:42 ` [PATCH 2/2] drm/omap: platform data structs moved to plat-omap Rob Clark
@ 2012-01-13 20:59 ` Felipe Contreras
  2012-01-13 21:04   ` Rob Clark
  2012-01-13 21:19   ` Rob Clark
  2012-01-23 17:24 ` Cousson, Benoit
  2012-02-09 17:28 ` Greg KH
  3 siblings, 2 replies; 21+ messages in thread
From: Felipe Contreras @ 2012-01-13 20:59 UTC (permalink / raw)
  To: Rob Clark
  Cc: linux-omap, dri-devel, patches, Greg KH, Tomi Valkeinen,
	Andy Gross, Rob Clark

On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
> index 9a58461..b86e6cb 100644
> --- a/arch/arm/plat-omap/Makefile
> +++ b/arch/arm/plat-omap/Makefile
> @@ -4,7 +4,7 @@
>
>  # Common support
>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
> -        usb.o fb.o counter_32k.o
> +        usb.o fb.o counter_32k.o drm.o

Should be something like this:
obj-$(CONFIG_DRM_OMAP) += drm.o

No?

-- 
Felipe Contreras
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 20:59 ` [PATCH 1/2] omap2+: add drm device Felipe Contreras
@ 2012-01-13 21:04   ` Rob Clark
  2012-01-13 21:19   ` Rob Clark
  1 sibling, 0 replies; 21+ messages in thread
From: Rob Clark @ 2012-01-13 21:04 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: linux-omap, patches, Greg KH, dri-devel

On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>> index 9a58461..b86e6cb 100644
>> --- a/arch/arm/plat-omap/Makefile
>> +++ b/arch/arm/plat-omap/Makefile
>> @@ -4,7 +4,7 @@
>>
>>  # Common support
>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>> -        usb.o fb.o counter_32k.o
>> +        usb.o fb.o counter_32k.o drm.o
>
> Should be something like this:
> obj-$(CONFIG_DRM_OMAP) += drm.o
>
> No?

I think it would work either way.  Currently drm.c would be empty if
the driver isn't enabled in the kconfig.. if it is preferred to do
that in the Makefile, I could change it.

BR,
-R

> --
> Felipe Contreras
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 20:59 ` [PATCH 1/2] omap2+: add drm device Felipe Contreras
  2012-01-13 21:04   ` Rob Clark
@ 2012-01-13 21:19   ` Rob Clark
  2012-01-16 14:12     ` Felipe Contreras
  1 sibling, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-13 21:19 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: linux-omap, patches, Greg KH, dri-devel

On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>> index 9a58461..b86e6cb 100644
>> --- a/arch/arm/plat-omap/Makefile
>> +++ b/arch/arm/plat-omap/Makefile
>> @@ -4,7 +4,7 @@
>>
>>  # Common support
>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>> -        usb.o fb.o counter_32k.o
>> +        usb.o fb.o counter_32k.o drm.o
>
> Should be something like this:
> obj-$(CONFIG_DRM_OMAP) += drm.o

btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
plat-omap module?

BR,
-R

> No?
>
> --
> Felipe Contreras
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 21:19   ` Rob Clark
@ 2012-01-16 14:12     ` Felipe Contreras
  2012-01-16 16:37       ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Felipe Contreras @ 2012-01-16 14:12 UTC (permalink / raw)
  To: Rob Clark; +Cc: linux-omap, patches, Greg KH, dri-devel

On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>> index 9a58461..b86e6cb 100644
>>> --- a/arch/arm/plat-omap/Makefile
>>> +++ b/arch/arm/plat-omap/Makefile
>>> @@ -4,7 +4,7 @@
>>>
>>>  # Common support
>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>> -        usb.o fb.o counter_32k.o
>>> +        usb.o fb.o counter_32k.o drm.o
>>
>> Should be something like this:
>> obj-$(CONFIG_DRM_OMAP) += drm.o
>
> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
> plat-omap module?

Yes, and platform drivers are supposed to be loaded automatically at
boot-time by udev (or similar).

-- 
Felipe Contreras
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 14:12     ` Felipe Contreras
@ 2012-01-16 16:37       ` Rob Clark
  2012-01-16 16:59         ` Felipe Contreras
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-16 16:37 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 8:12 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
>> <felipe.contreras@gmail.com> wrote:
>>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>>> index 9a58461..b86e6cb 100644
>>>> --- a/arch/arm/plat-omap/Makefile
>>>> +++ b/arch/arm/plat-omap/Makefile
>>>> @@ -4,7 +4,7 @@
>>>>
>>>>  # Common support
>>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>>> -        usb.o fb.o counter_32k.o
>>>> +        usb.o fb.o counter_32k.o drm.o
>>>
>>> Should be something like this:
>>> obj-$(CONFIG_DRM_OMAP) += drm.o
>>
>> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
>> plat-omap module?
>
> Yes, and platform drivers are supposed to be loaded automatically at
> boot-time by udev (or similar).

oh, but this won't work, because common.c has to call
omapdrm_reserve_vram() (similar to how omapfb_reserve_sdram_memblock()
works).. so I think it has to stay the way it is in this patch.

I guess this is the reason that omapfb (fb.c is the example I copied)
device is setup in the same way.

BR,
-R

> --
> Felipe Contreras
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 16:37       ` Rob Clark
@ 2012-01-16 16:59         ` Felipe Contreras
  2012-01-16 17:01           ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Felipe Contreras @ 2012-01-16 16:59 UTC (permalink / raw)
  To: Rob Clark; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 6:37 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Mon, Jan 16, 2012 at 8:12 AM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
>>> <felipe.contreras@gmail.com> wrote:
>>>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>>>> index 9a58461..b86e6cb 100644
>>>>> --- a/arch/arm/plat-omap/Makefile
>>>>> +++ b/arch/arm/plat-omap/Makefile
>>>>> @@ -4,7 +4,7 @@
>>>>>
>>>>>  # Common support
>>>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>>>> -        usb.o fb.o counter_32k.o
>>>>> +        usb.o fb.o counter_32k.o drm.o
>>>>
>>>> Should be something like this:
>>>> obj-$(CONFIG_DRM_OMAP) += drm.o
>>>
>>> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
>>> plat-omap module?
>>
>> Yes, and platform drivers are supposed to be loaded automatically at
>> boot-time by udev (or similar).
>
> oh, but this won't work, because common.c has to call
> omapdrm_reserve_vram() (similar to how omapfb_reserve_sdram_memblock()
> works).. so I think it has to stay the way it is in this patch.

#if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
extern void omapdrm_reserve_vram(void);
#else
static inline void omapdrm_reserve_vram(void) { }
#endif

Like how it's done with DSP stuff.

-- 
Felipe Contreras
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 16:59         ` Felipe Contreras
@ 2012-01-16 17:01           ` Rob Clark
  2012-01-16 20:37             ` Felipe Contreras
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-16 17:01 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Mon, Jan 16, 2012 at 6:37 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> On Mon, Jan 16, 2012 at 8:12 AM, Felipe Contreras
>> <felipe.contreras@gmail.com> wrote:
>>> On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
>>>> <felipe.contreras@gmail.com> wrote:
>>>>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>>>>> index 9a58461..b86e6cb 100644
>>>>>> --- a/arch/arm/plat-omap/Makefile
>>>>>> +++ b/arch/arm/plat-omap/Makefile
>>>>>> @@ -4,7 +4,7 @@
>>>>>>
>>>>>>  # Common support
>>>>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>>>>> -        usb.o fb.o counter_32k.o
>>>>>> +        usb.o fb.o counter_32k.o drm.o
>>>>>
>>>>> Should be something like this:
>>>>> obj-$(CONFIG_DRM_OMAP) += drm.o
>>>>
>>>> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
>>>> plat-omap module?
>>>
>>> Yes, and platform drivers are supposed to be loaded automatically at
>>> boot-time by udev (or similar).
>>
>> oh, but this won't work, because common.c has to call
>> omapdrm_reserve_vram() (similar to how omapfb_reserve_sdram_memblock()
>> works).. so I think it has to stay the way it is in this patch.
>
> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
> extern void omapdrm_reserve_vram(void);
> #else
> static inline void omapdrm_reserve_vram(void) { }
> #endif
>
> Like how it's done with DSP stuff.

right, but then you'd miss the omapdrm_reserve_vram() call at startup..

BR,
-R

> --
> Felipe Contreras
> --
> 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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 17:01           ` Rob Clark
@ 2012-01-16 20:37             ` Felipe Contreras
  2012-01-16 21:24               ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Felipe Contreras @ 2012-01-16 20:37 UTC (permalink / raw)
  To: Rob Clark; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Mon, Jan 16, 2012 at 6:37 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> On Mon, Jan 16, 2012 at 8:12 AM, Felipe Contreras
>>> <felipe.contreras@gmail.com> wrote:
>>>> On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>>>>>> index 9a58461..b86e6cb 100644
>>>>>>> --- a/arch/arm/plat-omap/Makefile
>>>>>>> +++ b/arch/arm/plat-omap/Makefile
>>>>>>> @@ -4,7 +4,7 @@
>>>>>>>
>>>>>>>  # Common support
>>>>>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>>>>>> -        usb.o fb.o counter_32k.o
>>>>>>> +        usb.o fb.o counter_32k.o drm.o
>>>>>>
>>>>>> Should be something like this:
>>>>>> obj-$(CONFIG_DRM_OMAP) += drm.o
>>>>>
>>>>> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
>>>>> plat-omap module?
>>>>
>>>> Yes, and platform drivers are supposed to be loaded automatically at
>>>> boot-time by udev (or similar).
>>>
>>> oh, but this won't work, because common.c has to call
>>> omapdrm_reserve_vram() (similar to how omapfb_reserve_sdram_memblock()
>>> works).. so I think it has to stay the way it is in this patch.
>>
>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>> extern void omapdrm_reserve_vram(void);
>> #else
>> static inline void omapdrm_reserve_vram(void) { }
>> #endif
>>
>> Like how it's done with DSP stuff.
>
> right, but then you'd miss the omapdrm_reserve_vram() call at startup..

Why?

-- 
Felipe Contreras
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 20:37             ` Felipe Contreras
@ 2012-01-16 21:24               ` Rob Clark
  2012-01-24 15:33                 ` Felipe Contreras
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-16 21:24 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>> <felipe.contreras@gmail.com> wrote:
>>> On Mon, Jan 16, 2012 at 6:37 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>> On Mon, Jan 16, 2012 at 8:12 AM, Felipe Contreras
>>>> <felipe.contreras@gmail.com> wrote:
>>>>> On Fri, Jan 13, 2012 at 11:19 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>> On Fri, Jan 13, 2012 at 2:59 PM, Felipe Contreras
>>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>>> On Fri, Jan 13, 2012 at 10:41 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>>>> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
>>>>>>>> index 9a58461..b86e6cb 100644
>>>>>>>> --- a/arch/arm/plat-omap/Makefile
>>>>>>>> +++ b/arch/arm/plat-omap/Makefile
>>>>>>>> @@ -4,7 +4,7 @@
>>>>>>>>
>>>>>>>>  # Common support
>>>>>>>>  obj-y := common.o sram.o clock.o devices.o dma.o mux.o \
>>>>>>>> -        usb.o fb.o counter_32k.o
>>>>>>>> +        usb.o fb.o counter_32k.o drm.o
>>>>>>>
>>>>>>> Should be something like this:
>>>>>>> obj-$(CONFIG_DRM_OMAP) += drm.o
>>>>>>
>>>>>> btw, how does that work if CONFIG_DRM_OMAP=m?  Do you end up w/ a
>>>>>> plat-omap module?
>>>>>
>>>>> Yes, and platform drivers are supposed to be loaded automatically at
>>>>> boot-time by udev (or similar).
>>>>
>>>> oh, but this won't work, because common.c has to call
>>>> omapdrm_reserve_vram() (similar to how omapfb_reserve_sdram_memblock()
>>>> works).. so I think it has to stay the way it is in this patch.
>>>
>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>> extern void omapdrm_reserve_vram(void);
>>> #else
>>> static inline void omapdrm_reserve_vram(void) { }
>>> #endif
>>>
>>> Like how it's done with DSP stuff.
>>
>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>
> Why?

I guess drm.o is ending up in a module, but the code that calls that
(in common.c) is not in a module, so you get an unresolved symbol at
link

BR,
-R

> --
> Felipe Contreras
> --
> 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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 20:41 [PATCH 1/2] omap2+: add drm device Rob Clark
  2012-01-13 20:42 ` [PATCH 2/2] drm/omap: platform data structs moved to plat-omap Rob Clark
  2012-01-13 20:59 ` [PATCH 1/2] omap2+: add drm device Felipe Contreras
@ 2012-01-23 17:24 ` Cousson, Benoit
  2012-01-23 17:48   ` Rob Clark
  2012-02-17 21:14   ` Gross, Andy
  2012-02-09 17:28 ` Greg KH
  3 siblings, 2 replies; 21+ messages in thread
From: Cousson, Benoit @ 2012-01-23 17:24 UTC (permalink / raw)
  To: Rob Clark
  Cc: linux-omap, dri-devel, patches, Greg KH, Tomi Valkeinen,
	Andy Gross, Rob Clark

Hi Rob,

On 1/13/2012 9:41 PM, Rob Clark wrote:
> From: Rob Clark<rob@ti.com>

[...]

> +static int __init omap_init_gpu(void)

Why is the function to init drm device is named gpu?

> +{
> +	struct omap_hwmod *oh = NULL;
> +
> +	/* lookup and populate the DMM information, if present - OMAP4+ */
> +	oh = omap_hwmod_lookup("dmm");
> +
> +	if (oh) {
> +		dmm_platdata.base = omap_hwmod_get_mpu_rt_va(oh);
> +		dmm_platdata.irq = oh->mpu_irqs[0].irq;

These are internal hwmod attributes that should not be retrieved here. 
They are included in the device resources and this is up to the driver 
to get them using the platform_get_resource.

> +
> +		if (dmm_platdata.base)
> +			omapdrm_platdata.dmm_pdata =&dmm_platdata;

pdata is supposed to be used for storing board level information, and we 
are in the process of removing all of them for device tree adaptation. 
So you should not use that at all in this case if this is not strictly 
needed.

> +	}
> +
> +	return platform_device_register(&omap_drm_device);

This is not the proper way to init a device nowadays.

If you want to take advantage of the pm functionality, you should create 
an omap_device.
Please have a look at the other OMAP devices creation code (GPIO, UART...).

> +}
> +
> +arch_initcall(omap_init_gpu);
> +
> +void omapdrm_reserve_vram(void)
> +{
> +#ifdef CONFIG_CMA
> +	/*
> +	 * Create private 32MiB contiguous memory area for omapdrm.0 device
> +	 * TODO revisit size.. if uc/wc buffers are allocated from CMA pages
> +	 * then the amount of memory we need goes up..
> +	 */
> +	dma_declare_contiguous(&omap_drm_device.dev, 32 * SZ_1M, 0, 0);
> +#else
> +#  warning "CMA is not enabled, there may be limitations about scanout buffer allocations on OMAP3 and earlier"
> +#endif
> +}
> +
> +#endif
> diff --git a/arch/arm/plat-omap/include/plat/drm.h b/arch/arm/plat-omap/include/plat/drm.h
> new file mode 100644
> index 0000000..e29be29
> --- /dev/null
> +++ b/arch/arm/plat-omap/include/plat/drm.h

Ideally, platform data should not exist anymore in a device tree world, 
but meanwhile there is a directory to store them:
include/linux/platform_data

> @@ -0,0 +1,70 @@
> +/*
> + * 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/>.
> + */
> +
> +#ifndef __PLAT_OMAP_DRM_H__
> +#define __PLAT_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;
> +	struct omap_dmm_platform_data *dmm_pdata;
> +};

Since the dmm_platform_data should not exist in theory, it should not be 
used by this structure either.

Where is the driver that will use these devices?

Regards,
Benoit

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-23 17:24 ` Cousson, Benoit
@ 2012-01-23 17:48   ` Rob Clark
  2012-02-17 21:14   ` Gross, Andy
  1 sibling, 0 replies; 21+ messages in thread
From: Rob Clark @ 2012-01-23 17:48 UTC (permalink / raw)
  To: Cousson, Benoit
  Cc: linux-omap, dri-devel, patches, Greg KH, Tomi Valkeinen, Andy Gross

On Mon, Jan 23, 2012 at 11:24 AM, Cousson, Benoit <b-cousson@ti.com> wrote:
> Hi Rob,
>
> On 1/13/2012 9:41 PM, Rob Clark wrote:
>>
>> From: Rob Clark<rob@ti.com>
>
>
> [...]
>
>> +static int __init omap_init_gpu(void)
>
>
> Why is the function to init drm device is named gpu?
>

drm drivers are typically gpu drivers (although due to lack of opensrc
pvr userspace most of the actual gpu bits are stripped out)

The function can be renamed.. the name is really not too important
since it is only used within this file

>> +{
>> +       struct omap_hwmod *oh = NULL;
>> +
>> +       /* lookup and populate the DMM information, if present - OMAP4+ */
>> +       oh = omap_hwmod_lookup("dmm");
>> +
>> +       if (oh) {
>> +               dmm_platdata.base = omap_hwmod_get_mpu_rt_va(oh);
>> +               dmm_platdata.irq = oh->mpu_irqs[0].irq;
>
>
> These are internal hwmod attributes that should not be retrieved here. They
> are included in the device resources and this is up to the driver to get
> them using the platform_get_resource.
>


hmm, I don't claim to be a hwmod expert, but how is the platform
device mapped back to the needed resources then?

Andy looked more at that part so I'll let him comment.


>> +
>> +               if (dmm_platdata.base)
>> +                       omapdrm_platdata.dmm_pdata =&dmm_platdata;
>
>
> pdata is supposed to be used for storing board level information, and we are
> in the process of removing all of them for device tree adaptation. So you
> should not use that at all in this case if this is not strictly needed.
>
>
>> +       }
>> +
>> +       return platform_device_register(&omap_drm_device);
>
>
> This is not the proper way to init a device nowadays.
>
> If you want to take advantage of the pm functionality, you should create an
> omap_device.
> Please have a look at the other OMAP devices creation code (GPIO, UART...).
>


Because omapdss is a separate layer below omapdrm, there really isn't
any PM in omapdrm (yet).  We do need to add support to restore the LUT
on resume although there are some complications when it comes to
correct sequence, ie. ensure LUT is reprogrammed before DSS overlays
are enabled, or IVAHD, etc, is allowed to start accessing buffer.
(But at least it should be possible to do correctly now, compared to
old state where there was a separate standalone tiler driver.)



>> +}
>> +
>> +arch_initcall(omap_init_gpu);
>> +
>> +void omapdrm_reserve_vram(void)
>> +{
>> +#ifdef CONFIG_CMA
>> +       /*
>> +        * Create private 32MiB contiguous memory area for omapdrm.0
>> device
>> +        * TODO revisit size.. if uc/wc buffers are allocated from CMA
>> pages
>> +        * then the amount of memory we need goes up..
>> +        */
>> +       dma_declare_contiguous(&omap_drm_device.dev, 32 * SZ_1M, 0, 0);
>> +#else
>> +#  warning "CMA is not enabled, there may be limitations about scanout
>> buffer allocations on OMAP3 and earlier"
>> +#endif
>> +}
>> +
>> +#endif
>> diff --git a/arch/arm/plat-omap/include/plat/drm.h
>> b/arch/arm/plat-omap/include/plat/drm.h
>> new file mode 100644
>> index 0000000..e29be29
>> --- /dev/null
>> +++ b/arch/arm/plat-omap/include/plat/drm.h
>
>
> Ideally, platform data should not exist anymore in a device tree world, but
> meanwhile there is a directory to store them:
> include/linux/platform_data
>
>
>> @@ -0,0 +1,70 @@
>> +/*
>> + * 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/>.
>> + */
>> +
>> +#ifndef __PLAT_OMAP_DRM_H__
>> +#define __PLAT_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;
>> +       struct omap_dmm_platform_data *dmm_pdata;
>> +};
>
>
> Since the dmm_platform_data should not exist in theory, it should not be
> used by this structure either.
>
> Where is the driver that will use these devices?

drivers/staging/omapdrm

BR,
-R

> Regards,
> Benoit
>
> --
> 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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-16 21:24               ` Rob Clark
@ 2012-01-24 15:33                 ` Felipe Contreras
  2012-01-24 15:54                   ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Felipe Contreras @ 2012-01-24 15:33 UTC (permalink / raw)
  To: Rob Clark; +Cc: Greg KH, linux-omap, dri-devel, patches

On Mon, Jan 16, 2012 at 11:24 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>>> <felipe.contreras@gmail.com> wrote:
>>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>>> extern void omapdrm_reserve_vram(void);
>>>> #else
>>>> static inline void omapdrm_reserve_vram(void) { }
>>>> #endif
>>>>
>>>> Like how it's done with DSP stuff.
>>>
>>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>>
>> Why?
>
> I guess drm.o is ending up in a module, but the code that calls that
> (in common.c) is not in a module, so you get an unresolved symbol at
> link

Right... But that code can be moved as well. Just like with the bridge.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-24 15:33                 ` Felipe Contreras
@ 2012-01-24 15:54                   ` Rob Clark
  2012-01-25  2:17                     ` Felipe Contreras
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-24 15:54 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Tue, Jan 24, 2012 at 9:33 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Mon, Jan 16, 2012 at 11:24 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
>> <felipe.contreras@gmail.com> wrote:
>>> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>>>> <felipe.contreras@gmail.com> wrote:
>>>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>>>> extern void omapdrm_reserve_vram(void);
>>>>> #else
>>>>> static inline void omapdrm_reserve_vram(void) { }
>>>>> #endif
>>>>>
>>>>> Like how it's done with DSP stuff.
>>>>
>>>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>>>
>>> Why?
>>
>> I guess drm.o is ending up in a module, but the code that calls that
>> (in common.c) is not in a module, so you get an unresolved symbol at
>> link
>
> Right... But that code can be moved as well. Just like with the bridge.

Hmm, looks like for dsp bridge the memory reservation is moved to
devices.c.  Although I'm not entirely sure how that is better... and
there is precedent for both approaches, ie. omapfb works like omapdrm,
and tidspbridge works as you suggest.

seems a bit bikeshed'ish to me

BR,
-R

> --
> Felipe Contreras

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-24 15:54                   ` Rob Clark
@ 2012-01-25  2:17                     ` Felipe Contreras
  2012-01-25  2:32                       ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Felipe Contreras @ 2012-01-25  2:17 UTC (permalink / raw)
  To: Rob Clark; +Cc: Greg KH, linux-omap, dri-devel, patches

On Tue, Jan 24, 2012 at 5:54 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Tue, Jan 24, 2012 at 9:33 AM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Mon, Jan 16, 2012 at 11:24 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
>>> <felipe.contreras@gmail.com> wrote:
>>>> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>>>>> extern void omapdrm_reserve_vram(void);
>>>>>> #else
>>>>>> static inline void omapdrm_reserve_vram(void) { }
>>>>>> #endif
>>>>>>
>>>>>> Like how it's done with DSP stuff.
>>>>>
>>>>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>>>>
>>>> Why?
>>>
>>> I guess drm.o is ending up in a module, but the code that calls that
>>> (in common.c) is not in a module, so you get an unresolved symbol at
>>> link
>>
>> Right... But that code can be moved as well. Just like with the bridge.
>
> Hmm, looks like for dsp bridge the memory reservation is moved to
> devices.c.  Although I'm not entirely sure how that is better... and
> there is precedent for both approaches, ie. omapfb works like omapdrm,
> and tidspbridge works as you suggest.
>
> seems a bit bikeshed'ish to me

I will send a patch to fix omapfb, perhaps after that it will be a bit
more clear how it should be done :) (if it gets accepted)

-- 
Felipe Contreras
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-25  2:17                     ` Felipe Contreras
@ 2012-01-25  2:32                       ` Rob Clark
  2012-01-25 13:51                         ` Rob Clark
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Clark @ 2012-01-25  2:32 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Tue, Jan 24, 2012 at 8:17 PM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Tue, Jan 24, 2012 at 5:54 PM, Rob Clark <rob.clark@linaro.org> wrote:
>> On Tue, Jan 24, 2012 at 9:33 AM, Felipe Contreras
>> <felipe.contreras@gmail.com> wrote:
>>> On Mon, Jan 16, 2012 at 11:24 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>> On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
>>>> <felipe.contreras@gmail.com> wrote:
>>>>> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>>>>>> extern void omapdrm_reserve_vram(void);
>>>>>>> #else
>>>>>>> static inline void omapdrm_reserve_vram(void) { }
>>>>>>> #endif
>>>>>>>
>>>>>>> Like how it's done with DSP stuff.
>>>>>>
>>>>>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>>>>>
>>>>> Why?
>>>>
>>>> I guess drm.o is ending up in a module, but the code that calls that
>>>> (in common.c) is not in a module, so you get an unresolved symbol at
>>>> link
>>>
>>> Right... But that code can be moved as well. Just like with the bridge.
>>
>> Hmm, looks like for dsp bridge the memory reservation is moved to
>> devices.c.  Although I'm not entirely sure how that is better... and
>> there is precedent for both approaches, ie. omapfb works like omapdrm,
>> and tidspbridge works as you suggest.
>>
>> seems a bit bikeshed'ish to me
>
> I will send a patch to fix omapfb, perhaps after that it will be a bit
> more clear how it should be done :) (if it gets accepted)

ok, but the thing I don't like is it splits up the drm device setup
from the omapdrm_reserve_vram() part (and similarly for omapfb),

but if this is the consensus of how it should be done, well.. when in
Rome, and all that

BR,
-R

> --
> Felipe Contreras
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-25  2:32                       ` Rob Clark
@ 2012-01-25 13:51                         ` Rob Clark
  0 siblings, 0 replies; 21+ messages in thread
From: Rob Clark @ 2012-01-25 13:51 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Greg KH, linux-omap, dri-devel, patches

On Tue, Jan 24, 2012 at 8:32 PM, Rob Clark <rob.clark@linaro.org> wrote:
> On Tue, Jan 24, 2012 at 8:17 PM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> On Tue, Jan 24, 2012 at 5:54 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>> On Tue, Jan 24, 2012 at 9:33 AM, Felipe Contreras
>>> <felipe.contreras@gmail.com> wrote:
>>>> On Mon, Jan 16, 2012 at 11:24 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>> On Mon, Jan 16, 2012 at 2:37 PM, Felipe Contreras
>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>> On Mon, Jan 16, 2012 at 7:01 PM, Rob Clark <rob.clark@linaro.org> wrote:
>>>>>>> On Mon, Jan 16, 2012 at 10:59 AM, Felipe Contreras
>>>>>>> <felipe.contreras@gmail.com> wrote:
>>>>>>>> #if defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE)
>>>>>>>> extern void omapdrm_reserve_vram(void);
>>>>>>>> #else
>>>>>>>> static inline void omapdrm_reserve_vram(void) { }
>>>>>>>> #endif
>>>>>>>>
>>>>>>>> Like how it's done with DSP stuff.
>>>>>>>
>>>>>>> right, but then you'd miss the omapdrm_reserve_vram() call at startup..
>>>>>>
>>>>>> Why?
>>>>>
>>>>> I guess drm.o is ending up in a module, but the code that calls that
>>>>> (in common.c) is not in a module, so you get an unresolved symbol at
>>>>> link
>>>>
>>>> Right... But that code can be moved as well. Just like with the bridge.
>>>
>>> Hmm, looks like for dsp bridge the memory reservation is moved to
>>> devices.c.  Although I'm not entirely sure how that is better... and
>>> there is precedent for both approaches, ie. omapfb works like omapdrm,
>>> and tidspbridge works as you suggest.
>>>
>>> seems a bit bikeshed'ish to me
>>
>> I will send a patch to fix omapfb, perhaps after that it will be a bit
>> more clear how it should be done :) (if it gets accepted)
>
> ok, but the thing I don't like is it splits up the drm device setup
> from the omapdrm_reserve_vram() part (and similarly for omapfb),
>
> but if this is the consensus of how it should be done, well.. when in
> Rome, and all that

oh, sorry, I am mistaken, the oampdrm_reserve_vram() cannot be split
into devices.c, since you need the 'struct device *' to register the
CMA region.  I'd ask that you don't patch omapfb to "fix" it because
this would have to be undone once CMA is merged (since we should then
remove omap_vram and other carveout mechanism and use CMA instead)

BR,
-R

> BR,
> -R
>
>> --
>> Felipe Contreras
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-13 20:41 [PATCH 1/2] omap2+: add drm device Rob Clark
                   ` (2 preceding siblings ...)
  2012-01-23 17:24 ` Cousson, Benoit
@ 2012-02-09 17:28 ` Greg KH
  2012-02-09 17:41   ` Rob Clark
  3 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2012-02-09 17:28 UTC (permalink / raw)
  To: Rob Clark
  Cc: linux-omap, dri-devel, patches, Tomi Valkeinen, Andy Gross, Rob Clark

On Fri, Jan 13, 2012 at 02:41:59PM -0600, Rob Clark wrote:
> From: Rob Clark <rob@ti.com>
> 
> Register OMAP DRM/KMS platform device, and reserve a CMA region for
> the device to use for buffer allocation.
> 
> v1: initial patch
> v2: move platform data structs into plat-omap to avoid having to
>     #include headers from drivers/staging and cleanups
> 
> Signed-off-by: Rob Clark <rob@ti.com>
> ---
> Note: after applying this patch there will be duplicate copies of the
> platform data structs (until the 2nd patch is applied).  But I tested
> to ensure this does not cause build breaks.  So the 2nd patch which
> should go thru staging tree is safe to be held until this patch hits
> Linus's master branch.
> 
>  arch/arm/plat-omap/Makefile           |    2 +-
>  arch/arm/plat-omap/common.c           |    3 +-
>  arch/arm/plat-omap/drm.c              |   83 +++++++++++++++++++++++++++++++++
>  arch/arm/plat-omap/include/plat/drm.h |   70 +++++++++++++++++++++++++++
>  4 files changed, 156 insertions(+), 2 deletions(-)
>  create mode 100644 arch/arm/plat-omap/drm.c
>  create mode 100644 arch/arm/plat-omap/include/plat/drm.h

Did this ever get applied?  As I can't apply 2/2 without it, please feel
free to add:
	Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

to 2/2 when some dri/omap developer commits this one.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-02-09 17:28 ` Greg KH
@ 2012-02-09 17:41   ` Rob Clark
  0 siblings, 0 replies; 21+ messages in thread
From: Rob Clark @ 2012-02-09 17:41 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-omap, dri-devel, patches, Tomi Valkeinen, Andy Gross, Rob Clark

On Thu, Feb 9, 2012 at 11:28 AM, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Fri, Jan 13, 2012 at 02:41:59PM -0600, Rob Clark wrote:
>> From: Rob Clark <rob@ti.com>
>>
>> Register OMAP DRM/KMS platform device, and reserve a CMA region for
>> the device to use for buffer allocation.
>>
>> v1: initial patch
>> v2: move platform data structs into plat-omap to avoid having to
>>     #include headers from drivers/staging and cleanups
>>
>> Signed-off-by: Rob Clark <rob@ti.com>
>> ---
>> Note: after applying this patch there will be duplicate copies of the
>> platform data structs (until the 2nd patch is applied).  But I tested
>> to ensure this does not cause build breaks.  So the 2nd patch which
>> should go thru staging tree is safe to be held until this patch hits
>> Linus's master branch.
>>
>>  arch/arm/plat-omap/Makefile           |    2 +-
>>  arch/arm/plat-omap/common.c           |    3 +-
>>  arch/arm/plat-omap/drm.c              |   83 +++++++++++++++++++++++++++++++++
>>  arch/arm/plat-omap/include/plat/drm.h |   70 +++++++++++++++++++++++++++
>>  4 files changed, 156 insertions(+), 2 deletions(-)
>>  create mode 100644 arch/arm/plat-omap/drm.c
>>  create mode 100644 arch/arm/plat-omap/include/plat/drm.h
>
> Did this ever get applied?

Not yet, there was requested some omap hwmod related changes for how
the driver gets SoC version specific information (irq, base addr), so
I'll resubmit again the device file registration (and the 2nd patch)
but that might have to be for 3.4

You can drop the existing 2/2 patch

BR,
-R


> As I can't apply 2/2 without it, please feel
> free to add:
>        Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> to 2/2 when some dri/omap developer commits this one.
>
> thanks,
>
> greg k-h
--
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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/2] omap2+: add drm device
  2012-01-23 17:24 ` Cousson, Benoit
  2012-01-23 17:48   ` Rob Clark
@ 2012-02-17 21:14   ` Gross, Andy
  1 sibling, 0 replies; 21+ messages in thread
From: Gross, Andy @ 2012-02-17 21:14 UTC (permalink / raw)
  To: Cousson, Benoit
  Cc: patches, Greg KH, dri-devel, Rob Clark, Rob Clark, linux-omap


[-- Attachment #1.1: Type: text/plain, Size: 1526 bytes --]

On Mon, Jan 23, 2012 at 11:24 AM, Cousson, Benoit <b-cousson@ti.com> wrote:

>
>> +       if (oh) {
>> +               dmm_platdata.base = omap_hwmod_get_mpu_rt_va(oh);
>> +               dmm_platdata.irq = oh->mpu_irqs[0].irq;
>>
>
> These are internal hwmod attributes that should not be retrieved here.
> They are included in the device resources and this is up to the driver to
> get them using the platform_get_resource.


Yeah this can be removed and I can switch to platform_get_resource.



>  +
>> +               if (dmm_platdata.base)
>> +                       omapdrm_platdata.dmm_pdata =&dmm_platdata;
>>
>
> pdata is supposed to be used for storing board level information, and we
> are in the process of removing all of them for device tree adaptation. So
> you should not use that at all in this case if this is not strictly needed.


Noted.  I'll just remove it.  I was planning ahead when I added this, but I
can cross that bridge when I get there.


>
>  +       }
>> +
>> +       return platform_device_register(&**omap_drm_device);
>>
>
> This is not the proper way to init a device nowadays.
>
> If you want to take advantage of the pm functionality, you should create
> an omap_device.
> Please have a look at the other OMAP devices creation code (GPIO, UART...).


It was my understanding that you needed a hwmod entry that corresponded to
the device if you wanted to use omap_device_build().  In the case of
omap_drm, we don't have a hwmod entry.  We do have an entry for DMM.


Regards,

Andy Gross

[-- Attachment #1.2: Type: text/html, Size: 2626 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2012-02-17 21:14 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-13 20:41 [PATCH 1/2] omap2+: add drm device Rob Clark
2012-01-13 20:42 ` [PATCH 2/2] drm/omap: platform data structs moved to plat-omap Rob Clark
2012-01-13 20:59 ` [PATCH 1/2] omap2+: add drm device Felipe Contreras
2012-01-13 21:04   ` Rob Clark
2012-01-13 21:19   ` Rob Clark
2012-01-16 14:12     ` Felipe Contreras
2012-01-16 16:37       ` Rob Clark
2012-01-16 16:59         ` Felipe Contreras
2012-01-16 17:01           ` Rob Clark
2012-01-16 20:37             ` Felipe Contreras
2012-01-16 21:24               ` Rob Clark
2012-01-24 15:33                 ` Felipe Contreras
2012-01-24 15:54                   ` Rob Clark
2012-01-25  2:17                     ` Felipe Contreras
2012-01-25  2:32                       ` Rob Clark
2012-01-25 13:51                         ` Rob Clark
2012-01-23 17:24 ` Cousson, Benoit
2012-01-23 17:48   ` Rob Clark
2012-02-17 21:14   ` Gross, Andy
2012-02-09 17:28 ` Greg KH
2012-02-09 17:41   ` Rob Clark

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.