All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steffen Trumtrar <s.trumtrar@pengutronix.de>
To: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: devicetree-discuss@lists.ozlabs.org,
	Rob Herring <robherring2@gmail.com>,
	linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Thierry Reding <thierry.reding@avionic-design.de>,
	Guennady Liakhovetski <g.liakhovetski@gmx.de>,
	linux-media@vger.kernel.org,
	Stephen Warren <swarren@wwwdotorg.org>,
	kernel@pengutronix.de,
	Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
	David Airlie <airlied@linux.ie>
Subject: Re: [PATCH v12 1/6] video: add display_timing and videomode
Date: Wed, 21 Nov 2012 16:11:03 +0000	[thread overview]
Message-ID: <20121121161103.GA12657@pengutronix.de> (raw)
In-Reply-To: <50ACBCE4.60701@ti.com>

Hi,

On Wed, Nov 21, 2012 at 01:37:08PM +0200, Tomi Valkeinen wrote:
> Hi,
> 
> On 2012-11-20 17:54, Steffen Trumtrar wrote:
> > Add display_timing structure and the according helper functions. This allows
> > the description of a display via its supported timing parameters.
> > 
> > Every timing parameter can be specified as a single value or a range
> > <min typ max>.
> > 
> > Also, add helper functions to convert from display timings to a generic videomode
> > structure. This videomode can then be converted to the corresponding subsystem
> > mode representation (e.g. fb_videomode).
> 
> Sorry for reviewing this so late.
> 
> One thing I'd like to see is some explanation of the structs involved.
> For example, in this patch you present structs videomode, display_timing
> and display_timings without giving any hint what they represent.
> 
> I'm not asking for you to write a long documentation, but perhaps the
> header files could include a few lines of comments above the structs,
> explaining the idea.
> 

Okay. Will do.

> > +void display_timings_release(struct display_timings *disp)
> > +{
> > +	if (disp->timings) {
> > +		unsigned int i;
> > +
> > +		for (i = 0; i < disp->num_timings; i++)
> > +			kfree(disp->timings[i]);
> > +		kfree(disp->timings);
> > +	}
> > +	kfree(disp);
> > +}
> > +EXPORT_SYMBOL_GPL(display_timings_release);
> 
> Perhaps this will become clearer after reading the following patches,
> but it feels a bit odd to add a release function, without anything in
> this patch that would actually allocate the timings.
> 

2/6 uses this function. And as this does not belong to the DT part, it
is added in this patch.

> > diff --git a/drivers/video/videomode.c b/drivers/video/videomode.c
> > new file mode 100644
> > index 0000000..e24f879
> > --- /dev/null
> > +++ b/drivers/video/videomode.c
> > @@ -0,0 +1,46 @@
> > +/*
> > + * generic display timing functions
> > + *
> > + * Copyright (c) 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>, Pengutronix
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#include <linux/export.h>
> > +#include <linux/errno.h>
> > +#include <linux/display_timing.h>
> > +#include <linux/kernel.h>
> > +#include <linux/videomode.h>
> > +
> > +int videomode_from_timing(const struct display_timings *disp,
> > +			  struct videomode *vm, unsigned int index)
> > +{
> > +	struct display_timing *dt;
> > +
> > +	dt = display_timings_get(disp, index);
> > +	if (!dt)
> > +		return -EINVAL;
> > +
> > +	vm->pixelclock = display_timing_get_value(&dt->pixelclock, 0);
> > +	vm->hactive = display_timing_get_value(&dt->hactive, 0);
> > +	vm->hfront_porch = display_timing_get_value(&dt->hfront_porch, 0);
> > +	vm->hback_porch = display_timing_get_value(&dt->hback_porch, 0);
> > +	vm->hsync_len = display_timing_get_value(&dt->hsync_len, 0);
> > +
> > +	vm->vactive = display_timing_get_value(&dt->vactive, 0);
> > +	vm->vfront_porch = display_timing_get_value(&dt->vfront_porch, 0);
> > +	vm->vback_porch = display_timing_get_value(&dt->vback_porch, 0);
> > +	vm->vsync_len = display_timing_get_value(&dt->vsync_len, 0);
> 
> Shouldn't all these calls get the typical value, with index 1?
> 

Yes. I omitted the indexing until now. So it didn't matter what value was used.
But I will integrate it in the next version.

> > +
> > +	vm->vah = dt->vsync_pol_active;
> > +	vm->hah = dt->hsync_pol_active;
> > +	vm->de = dt->de_pol_active;
> > +	vm->pixelclk_pol = dt->pixelclk_pol;
> > +
> > +	vm->interlaced = dt->interlaced;
> > +	vm->doublescan = dt->doublescan;
> > +
> > +	return 0;
> > +}
> > +
> > +EXPORT_SYMBOL_GPL(videomode_from_timing);
> > diff --git a/include/linux/display_timing.h b/include/linux/display_timing.h
> > new file mode 100644
> > index 0000000..d5bf03f
> > --- /dev/null
> > +++ b/include/linux/display_timing.h
> > @@ -0,0 +1,70 @@
> > +/*
> > + * Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>
> > + *
> > + * description of display timings
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#ifndef __LINUX_DISPLAY_TIMINGS_H
> > +#define __LINUX_DISPLAY_TIMINGS_H
> > +
> > +#include <linux/types.h>
> 
> What is this needed for? u32? I don't see it defined in types.h
> 

Yes, u32. What would be the right header for that if not types.h?

> > +
> > +struct timing_entry {
> > +	u32 min;
> > +	u32 typ;
> > +	u32 max;
> > +};
> > +
> > +struct display_timing {
> > +	struct timing_entry pixelclock;
> > +
> > +	struct timing_entry hactive;
> > +	struct timing_entry hfront_porch;
> > +	struct timing_entry hback_porch;
> > +	struct timing_entry hsync_len;
> > +
> > +	struct timing_entry vactive;
> > +	struct timing_entry vfront_porch;
> > +	struct timing_entry vback_porch;
> > +	struct timing_entry vsync_len;
> > +
> > +	unsigned int vsync_pol_active;
> > +	unsigned int hsync_pol_active;
> > +	unsigned int de_pol_active;
> > +	unsigned int pixelclk_pol;
> > +	bool interlaced;
> > +	bool doublescan;
> > +};
> > +
> > +struct display_timings {
> > +	unsigned int num_timings;
> > +	unsigned int native_mode;
> > +
> > +	struct display_timing **timings;
> > +};
> > +
> > +/*
> > + * placeholder function until ranges are really needed
> > + * the index parameter should then be used to select one of [min typ max]
> > + */
> > +static inline u32 display_timing_get_value(const struct timing_entry *te,
> > +					   unsigned int index)
> > +{
> > +	return te->typ;
> > +}
> 
> Why did you opt for a placeholder here? It feels trivial to me to have
> support to get the min/typ/max value properly.
> 

I will add that in the next version.

> > +static inline struct display_timing *display_timings_get(const struct
> > +							 display_timings *disp,
> > +							 unsigned int index)
> > +{
> > +	if (disp->num_timings > index)
> > +		return disp->timings[index];
> > +	else
> > +		return NULL;
> > +}
> > +
> > +void display_timings_release(struct display_timings *disp);
> > +
> > +#endif
> > diff --git a/include/linux/videomode.h b/include/linux/videomode.h
> > new file mode 100644
> > index 0000000..5d3e796
> > --- /dev/null
> > +++ b/include/linux/videomode.h
> > @@ -0,0 +1,40 @@
> > +/*
> > + * Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>
> > + *
> > + * generic videomode description
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#ifndef __LINUX_VIDEOMODE_H
> > +#define __LINUX_VIDEOMODE_H
> > +
> > +#include <linux/display_timing.h>
> 
> This is not needed, just add:
> 
> struct display_timings;
> 

Okay.

> > +struct videomode {
> > +	u32 pixelclock;
> > +	u32 refreshrate;
> > +
> > +	u32 hactive;
> > +	u32 hfront_porch;
> > +	u32 hback_porch;
> > +	u32 hsync_len;
> > +
> > +	u32 vactive;
> > +	u32 vfront_porch;
> > +	u32 vback_porch;
> > +	u32 vsync_len;
> > +
> > +	u32 hah;
> > +	u32 vah;
> > +	u32 de;
> > +	u32 pixelclk_pol;
> > +
> > +	bool interlaced;
> > +	bool doublescan;
> > +};
> > +
> > +int videomode_from_timing(const struct display_timings *disp,
> > +			  struct videomode *vm, unsigned int index);
> > +
> 
> Are this and the few other functions above meant to be used from
> drivers? If so, some explanation of the parameters here would be nice.
> If they are just framework internal, they don't probably need that.
>

Okay. I will add some more documentation.

Regards,
Steffen


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

WARNING: multiple messages have this Message-ID (diff)
From: Steffen Trumtrar <s.trumtrar@pengutronix.de>
To: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: devicetree-discuss@lists.ozlabs.org,
	Rob Herring <robherring2@gmail.com>,
	linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Thierry Reding <thierry.reding@avionic-design.de>,
	Guennady Liakhovetski <g.liakhovetski@gmx.de>,
	linux-media@vger.kernel.org,
	Stephen Warren <swarren@wwwdotorg.org>,
	kernel@pengutronix.de,
	Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
	David Airlie <airlied@linux.ie>
Subject: Re: [PATCH v12 1/6] video: add display_timing and videomode
Date: Wed, 21 Nov 2012 17:11:03 +0100	[thread overview]
Message-ID: <20121121161103.GA12657@pengutronix.de> (raw)
In-Reply-To: <50ACBCE4.60701@ti.com>

Hi,

On Wed, Nov 21, 2012 at 01:37:08PM +0200, Tomi Valkeinen wrote:
> Hi,
> 
> On 2012-11-20 17:54, Steffen Trumtrar wrote:
> > Add display_timing structure and the according helper functions. This allows
> > the description of a display via its supported timing parameters.
> > 
> > Every timing parameter can be specified as a single value or a range
> > <min typ max>.
> > 
> > Also, add helper functions to convert from display timings to a generic videomode
> > structure. This videomode can then be converted to the corresponding subsystem
> > mode representation (e.g. fb_videomode).
> 
> Sorry for reviewing this so late.
> 
> One thing I'd like to see is some explanation of the structs involved.
> For example, in this patch you present structs videomode, display_timing
> and display_timings without giving any hint what they represent.
> 
> I'm not asking for you to write a long documentation, but perhaps the
> header files could include a few lines of comments above the structs,
> explaining the idea.
> 

Okay. Will do.

> > +void display_timings_release(struct display_timings *disp)
> > +{
> > +	if (disp->timings) {
> > +		unsigned int i;
> > +
> > +		for (i = 0; i < disp->num_timings; i++)
> > +			kfree(disp->timings[i]);
> > +		kfree(disp->timings);
> > +	}
> > +	kfree(disp);
> > +}
> > +EXPORT_SYMBOL_GPL(display_timings_release);
> 
> Perhaps this will become clearer after reading the following patches,
> but it feels a bit odd to add a release function, without anything in
> this patch that would actually allocate the timings.
> 

2/6 uses this function. And as this does not belong to the DT part, it
is added in this patch.

> > diff --git a/drivers/video/videomode.c b/drivers/video/videomode.c
> > new file mode 100644
> > index 0000000..e24f879
> > --- /dev/null
> > +++ b/drivers/video/videomode.c
> > @@ -0,0 +1,46 @@
> > +/*
> > + * generic display timing functions
> > + *
> > + * Copyright (c) 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>, Pengutronix
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#include <linux/export.h>
> > +#include <linux/errno.h>
> > +#include <linux/display_timing.h>
> > +#include <linux/kernel.h>
> > +#include <linux/videomode.h>
> > +
> > +int videomode_from_timing(const struct display_timings *disp,
> > +			  struct videomode *vm, unsigned int index)
> > +{
> > +	struct display_timing *dt;
> > +
> > +	dt = display_timings_get(disp, index);
> > +	if (!dt)
> > +		return -EINVAL;
> > +
> > +	vm->pixelclock = display_timing_get_value(&dt->pixelclock, 0);
> > +	vm->hactive = display_timing_get_value(&dt->hactive, 0);
> > +	vm->hfront_porch = display_timing_get_value(&dt->hfront_porch, 0);
> > +	vm->hback_porch = display_timing_get_value(&dt->hback_porch, 0);
> > +	vm->hsync_len = display_timing_get_value(&dt->hsync_len, 0);
> > +
> > +	vm->vactive = display_timing_get_value(&dt->vactive, 0);
> > +	vm->vfront_porch = display_timing_get_value(&dt->vfront_porch, 0);
> > +	vm->vback_porch = display_timing_get_value(&dt->vback_porch, 0);
> > +	vm->vsync_len = display_timing_get_value(&dt->vsync_len, 0);
> 
> Shouldn't all these calls get the typical value, with index 1?
> 

Yes. I omitted the indexing until now. So it didn't matter what value was used.
But I will integrate it in the next version.

> > +
> > +	vm->vah = dt->vsync_pol_active;
> > +	vm->hah = dt->hsync_pol_active;
> > +	vm->de = dt->de_pol_active;
> > +	vm->pixelclk_pol = dt->pixelclk_pol;
> > +
> > +	vm->interlaced = dt->interlaced;
> > +	vm->doublescan = dt->doublescan;
> > +
> > +	return 0;
> > +}
> > +
> > +EXPORT_SYMBOL_GPL(videomode_from_timing);
> > diff --git a/include/linux/display_timing.h b/include/linux/display_timing.h
> > new file mode 100644
> > index 0000000..d5bf03f
> > --- /dev/null
> > +++ b/include/linux/display_timing.h
> > @@ -0,0 +1,70 @@
> > +/*
> > + * Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>
> > + *
> > + * description of display timings
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#ifndef __LINUX_DISPLAY_TIMINGS_H
> > +#define __LINUX_DISPLAY_TIMINGS_H
> > +
> > +#include <linux/types.h>
> 
> What is this needed for? u32? I don't see it defined in types.h
> 

Yes, u32. What would be the right header for that if not types.h?

> > +
> > +struct timing_entry {
> > +	u32 min;
> > +	u32 typ;
> > +	u32 max;
> > +};
> > +
> > +struct display_timing {
> > +	struct timing_entry pixelclock;
> > +
> > +	struct timing_entry hactive;
> > +	struct timing_entry hfront_porch;
> > +	struct timing_entry hback_porch;
> > +	struct timing_entry hsync_len;
> > +
> > +	struct timing_entry vactive;
> > +	struct timing_entry vfront_porch;
> > +	struct timing_entry vback_porch;
> > +	struct timing_entry vsync_len;
> > +
> > +	unsigned int vsync_pol_active;
> > +	unsigned int hsync_pol_active;
> > +	unsigned int de_pol_active;
> > +	unsigned int pixelclk_pol;
> > +	bool interlaced;
> > +	bool doublescan;
> > +};
> > +
> > +struct display_timings {
> > +	unsigned int num_timings;
> > +	unsigned int native_mode;
> > +
> > +	struct display_timing **timings;
> > +};
> > +
> > +/*
> > + * placeholder function until ranges are really needed
> > + * the index parameter should then be used to select one of [min typ max]
> > + */
> > +static inline u32 display_timing_get_value(const struct timing_entry *te,
> > +					   unsigned int index)
> > +{
> > +	return te->typ;
> > +}
> 
> Why did you opt for a placeholder here? It feels trivial to me to have
> support to get the min/typ/max value properly.
> 

I will add that in the next version.

> > +static inline struct display_timing *display_timings_get(const struct
> > +							 display_timings *disp,
> > +							 unsigned int index)
> > +{
> > +	if (disp->num_timings > index)
> > +		return disp->timings[index];
> > +	else
> > +		return NULL;
> > +}
> > +
> > +void display_timings_release(struct display_timings *disp);
> > +
> > +#endif
> > diff --git a/include/linux/videomode.h b/include/linux/videomode.h
> > new file mode 100644
> > index 0000000..5d3e796
> > --- /dev/null
> > +++ b/include/linux/videomode.h
> > @@ -0,0 +1,40 @@
> > +/*
> > + * Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>
> > + *
> > + * generic videomode description
> > + *
> > + * This file is released under the GPLv2
> > + */
> > +
> > +#ifndef __LINUX_VIDEOMODE_H
> > +#define __LINUX_VIDEOMODE_H
> > +
> > +#include <linux/display_timing.h>
> 
> This is not needed, just add:
> 
> struct display_timings;
> 

Okay.

> > +struct videomode {
> > +	u32 pixelclock;
> > +	u32 refreshrate;
> > +
> > +	u32 hactive;
> > +	u32 hfront_porch;
> > +	u32 hback_porch;
> > +	u32 hsync_len;
> > +
> > +	u32 vactive;
> > +	u32 vfront_porch;
> > +	u32 vback_porch;
> > +	u32 vsync_len;
> > +
> > +	u32 hah;
> > +	u32 vah;
> > +	u32 de;
> > +	u32 pixelclk_pol;
> > +
> > +	bool interlaced;
> > +	bool doublescan;
> > +};
> > +
> > +int videomode_from_timing(const struct display_timings *disp,
> > +			  struct videomode *vm, unsigned int index);
> > +
> 
> Are this and the few other functions above meant to be used from
> drivers? If so, some explanation of the parameters here would be nice.
> If they are just framework internal, they don't probably need that.
>

Okay. I will add some more documentation.

Regards,
Steffen


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2012-11-21 16:11 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-20 15:54 [PATCH v12 0/6] of: add display helper Steffen Trumtrar
2012-11-20 15:54 ` Steffen Trumtrar
2012-11-20 15:54 ` [PATCH v12 1/6] video: add display_timing and videomode Steffen Trumtrar
2012-11-20 15:54   ` Steffen Trumtrar
     [not found]   ` <1353426896-6045-2-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 11:37     ` Tomi Valkeinen
2012-11-21 11:37       ` Tomi Valkeinen
2012-11-21 11:37       ` Tomi Valkeinen
2012-11-21 16:11       ` Steffen Trumtrar [this message]
2012-11-21 16:11         ` Steffen Trumtrar
     [not found]         ` <20121121161103.GA12657-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 16:42           ` Tomi Valkeinen
2012-11-21 16:42             ` Tomi Valkeinen
2012-11-21 16:42             ` Tomi Valkeinen
2012-11-20 15:54 ` [PATCH v12 2/6] video: add of helper for videomode Steffen Trumtrar
2012-11-20 15:54   ` Steffen Trumtrar
     [not found]   ` <1353426896-6045-3-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 10:12     ` Manjunathappa, Prakash
2012-11-21 10:12       ` Manjunathappa, Prakash
2012-11-21 10:12       ` Manjunathappa, Prakash
2012-11-21 11:48       ` Steffen Trumtrar
2012-11-21 11:48         ` Steffen Trumtrar
2012-11-21 11:52         ` Thierry Reding
2012-11-21 11:52           ` Thierry Reding
2012-11-21 15:03           ` Rob Herring
2012-11-21 15:03             ` Rob Herring
     [not found]             ` <50ACED4A.5040806-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-11-21 15:13               ` Thierry Reding
2012-11-21 15:13                 ` Thierry Reding
2012-11-21 15:13                 ` Thierry Reding
2012-11-22  9:10               ` Steffen Trumtrar
2012-11-22  9:10                 ` Steffen Trumtrar
2012-11-22  9:10                 ` Steffen Trumtrar
2012-11-21 12:22     ` Tomi Valkeinen
2012-11-21 12:22       ` Tomi Valkeinen
2012-11-21 12:22       ` Tomi Valkeinen
2012-11-20 15:54 ` [PATCH v12 4/6] fbmon: add of_videomode helpers Steffen Trumtrar
2012-11-20 15:54   ` Steffen Trumtrar
     [not found]   ` <1353426896-6045-5-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 12:49     ` Tomi Valkeinen
2012-11-21 12:49       ` Tomi Valkeinen
2012-11-21 12:49       ` Tomi Valkeinen
2012-11-21 13:08       ` Laurent Pinchart
2012-11-21 13:08         ` Laurent Pinchart
2012-11-21 16:24       ` Steffen Trumtrar
2012-11-21 16:24         ` Steffen Trumtrar
2012-11-21 16:47         ` Tomi Valkeinen
2012-11-21 16:47           ` Tomi Valkeinen
2012-11-21 16:47           ` Tomi Valkeinen
2012-11-20 15:54 ` [PATCH v12 5/6] drm_modes: add videomode helpers Steffen Trumtrar
2012-11-20 15:54   ` Steffen Trumtrar
2012-11-21 12:50   ` Tomi Valkeinen
2012-11-21 12:50     ` Tomi Valkeinen
2012-11-21 12:50     ` Tomi Valkeinen
     [not found] ` <1353426896-6045-1-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-20 15:54   ` [PATCH v12 3/6] fbmon: " Steffen Trumtrar
2012-11-20 15:54     ` Steffen Trumtrar
2012-11-20 15:54     ` Steffen Trumtrar
2012-11-21 10:09     ` Manjunathappa, Prakash
2012-11-21 11:09       ` Leela Krishna Amudala
2012-11-21 11:21         ` Leela Krishna Amudala
2012-11-21 11:58         ` Steffen Trumtrar
2012-11-21 11:58           ` Steffen Trumtrar
2012-11-21 12:27     ` Tomi Valkeinen
2012-11-21 12:27       ` Tomi Valkeinen
2012-11-21 12:27       ` Tomi Valkeinen
     [not found]     ` <1353426896-6045-4-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 22:02       ` Laurent Pinchart
2012-11-21 22:02         ` Laurent Pinchart
2012-11-21 22:02         ` Laurent Pinchart
2012-11-22  6:20         ` Sascha Hauer
2012-11-22  6:20           ` Sascha Hauer
2012-11-22  6:20           ` Sascha Hauer
     [not found]           ` <20121122062000.GW10369-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-22  8:50             ` Laurent Pinchart
2012-11-22  8:50               ` Laurent Pinchart
2012-11-22  8:50               ` Laurent Pinchart
2012-11-22  8:53               ` Sascha Hauer
2012-11-22  8:53                 ` Sascha Hauer
2012-11-22  8:53                 ` Sascha Hauer
     [not found]                 ` <20121122085342.GB10369-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-22  9:07                   ` Laurent Pinchart
2012-11-22  9:07                     ` Laurent Pinchart
2012-11-22  9:07                     ` Laurent Pinchart
2012-11-22 11:23                     ` Steffen Trumtrar
2012-11-22 11:23                       ` Steffen Trumtrar
2012-11-22 11:23                       ` Steffen Trumtrar
2012-11-20 15:54   ` [PATCH v12 6/6] drm_modes: add of_videomode helpers Steffen Trumtrar
2012-11-20 15:54     ` Steffen Trumtrar
2012-11-20 15:54     ` Steffen Trumtrar
     [not found]     ` <1353426896-6045-7-git-send-email-s.trumtrar-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-21 12:52       ` Tomi Valkeinen
2012-11-21 12:52         ` Tomi Valkeinen
2012-11-21 12:52         ` Tomi Valkeinen
2012-11-20 16:13 ` [PATCH v12 0/6] of: add display helper Laurent Pinchart
2012-11-20 16:13   ` Laurent Pinchart
2012-11-20 18:11   ` Robert Schwebel
2012-11-20 18:11     ` Robert Schwebel
2012-11-20 19:35     ` Thierry Reding
2012-11-20 19:35       ` Thierry Reding
2012-11-21  8:28       ` Steffen Trumtrar
2012-11-21  8:28         ` Steffen Trumtrar
2012-11-21 13:18         ` Laurent Pinchart
2012-11-21 13:18           ` Laurent Pinchart
2012-11-21  7:41   ` Steffen Trumtrar
2012-11-21  7:41     ` Steffen Trumtrar
2012-11-21  7:41     ` Steffen Trumtrar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121121161103.GA12657@pengutronix.de \
    --to=s.trumtrar@pengutronix.de \
    --cc=FlorianSchandinat@gmx.de \
    --cc=airlied@linux.ie \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=g.liakhovetski@gmx.de \
    --cc=kernel@pengutronix.de \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=robherring2@gmail.com \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@avionic-design.de \
    --cc=tomi.valkeinen@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.