All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: Mike Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	David Airlie <airlied@linux.ie>,
	Thierry Reding <thierry.reding@gmail.com>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Chen-Yu Tsai <wens@csie.org>, Hans de Goede <hdegoede@redhat.com>,
	Alexander Kaplan <alex@nextthing.co>,
	Wynter Woods <wynter@nextthing.co>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Rob Clark <robdclark@gmail.com>
Subject: Re: [PATCH 08/19] drm: Add Allwinner A10 Display Engine support
Date: Wed, 11 Nov 2015 14:14:12 -0800	[thread overview]
Message-ID: <20151111221412.GH6114@lukather> (raw)
In-Reply-To: <20151030144409.GZ16848@phenom.ffwll.local>

[-- Attachment #1: Type: text/plain, Size: 4112 bytes --]

Hi Daniel,

Thanks for your review!

On Fri, Oct 30, 2015 at 03:44:09PM +0100, Daniel Vetter wrote:
> > +static void sun4i_crtc_disable(struct drm_crtc *crtc)
> > +{
> > +	struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
> > +	struct sun4i_drv *drv = scrtc->drv;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling the CRTC\n");
> > +
> > +	if (!scrtc->enabled)
> > +		return;
> 
> Please don't do this - the atomic state should always reflect the true hw
> state (fix that up with either hw state readout or reset in the ->reset
> callbacks), and the atomic helpers guarantee that they'll never call you
> when not needed. If you don't trust them do a WARN_ON at least, but no
> early silent returns.
> 
> Personally I'd just rip it out, it's too much trouble. And for debugging
> the atomic helpers already trace it all (or at least should).

Ok. Is there a preferred way to do HW state readout, or should I just
add that to my probe?

> > +static int sun4i_drv_connector_plug_all(struct drm_device *drm)
> 
> Laurent Pinchart has this as a rfc patch for drm core, please coordinate
> with him and rebase on top of his patches.

Ack, I will.

> > +static int sun4i_drv_enable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Enabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, true);
> > +
> > +	return 0;
> 
> atomic helpers rely on enable_vblank failing correctly when the pipe is
> off and vlbanks will never happen. You probably need a correct error code
> here that checks crtc->state->active (well not that directly but something
> derived from it, since the pointer chase would be racy).

Ok.

> I know it's a bit a mess since we don't have kms-native vblank driver
> hooks yet and really the drm core should get this right for you. It'll
> happen eventually, but drm_irq.c is a bit moldy ;-)

I can't really use drm_irq anyway, since we don't have a single
interrupt for the VBLANK, but two, that we have to use depending on
the output.

> > +static void sun4i_drv_disable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, false);
> > +}
> > +
> > +static int sun4i_drv_load(struct drm_device *drm, unsigned long flags)
> 
> load/unload callbacks are depracated since fundamentally racy, and we
> can't fix that due to the pile of legacy dri1 drivers. Please use
> drm_dev_alloc/register/unregister/unref functions instead, with the
> load/unload code placed in between to avoid races with userspace seeing
> the device/driver (e.g. in sysfs) while it's in a partially defunct state.
> 
> Relevant kerneldoc has the details, at least in linux-next.

Ok.

> > +static void sun4i_backend_layer_atomic_update(struct drm_plane *plane,
> > +					      struct drm_plane_state *old_state)
> > +{
> > +	struct sun4i_layer *layer = plane_to_sun4i_layer(plane);
> > +	struct sun4i_drv *drv = layer->drv;
> > +	struct sun4i_backend *backend = drv->backend;
> > +
> > +	sun4i_backend_update_layer_coord(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_formats(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_buffer(backend, layer->id, plane);
> > +	sun4i_backend_layer_enable(backend, layer->id, true);
> > +	sun4i_backend_commit(backend);
> 
> Not idea how exactly your hw works, but the call to sun4i_backend_commit
> probably should be in the crtc->atomic_flush function, to make sure that
> plane updates across multiple planes are indeed atomic.

The hardware will not take the register writes into account until a
bit is set (in the _commit function), so I guess putting it in
atomic_flush makes sense.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Mike Turquette
	<mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
	Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Alexander Kaplan <alex-MflLfwwFzuz+yO7R74ARew@public.gmane.org>,
	Wynter Woods <wynter-MflLfwwFzuz+yO7R74ARew@public.gmane.org>,
	Boris Brezillon
	<boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Thomas Petazzoni
	<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Rob Clark <robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH 08/19] drm: Add Allwinner A10 Display Engine support
Date: Wed, 11 Nov 2015 14:14:12 -0800	[thread overview]
Message-ID: <20151111221412.GH6114@lukather> (raw)
In-Reply-To: <20151030144409.GZ16848-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 4001 bytes --]

Hi Daniel,

Thanks for your review!

On Fri, Oct 30, 2015 at 03:44:09PM +0100, Daniel Vetter wrote:
> > +static void sun4i_crtc_disable(struct drm_crtc *crtc)
> > +{
> > +	struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
> > +	struct sun4i_drv *drv = scrtc->drv;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling the CRTC\n");
> > +
> > +	if (!scrtc->enabled)
> > +		return;
> 
> Please don't do this - the atomic state should always reflect the true hw
> state (fix that up with either hw state readout or reset in the ->reset
> callbacks), and the atomic helpers guarantee that they'll never call you
> when not needed. If you don't trust them do a WARN_ON at least, but no
> early silent returns.
> 
> Personally I'd just rip it out, it's too much trouble. And for debugging
> the atomic helpers already trace it all (or at least should).

Ok. Is there a preferred way to do HW state readout, or should I just
add that to my probe?

> > +static int sun4i_drv_connector_plug_all(struct drm_device *drm)
> 
> Laurent Pinchart has this as a rfc patch for drm core, please coordinate
> with him and rebase on top of his patches.

Ack, I will.

> > +static int sun4i_drv_enable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Enabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, true);
> > +
> > +	return 0;
> 
> atomic helpers rely on enable_vblank failing correctly when the pipe is
> off and vlbanks will never happen. You probably need a correct error code
> here that checks crtc->state->active (well not that directly but something
> derived from it, since the pointer chase would be racy).

Ok.

> I know it's a bit a mess since we don't have kms-native vblank driver
> hooks yet and really the drm core should get this right for you. It'll
> happen eventually, but drm_irq.c is a bit moldy ;-)

I can't really use drm_irq anyway, since we don't have a single
interrupt for the VBLANK, but two, that we have to use depending on
the output.

> > +static void sun4i_drv_disable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, false);
> > +}
> > +
> > +static int sun4i_drv_load(struct drm_device *drm, unsigned long flags)
> 
> load/unload callbacks are depracated since fundamentally racy, and we
> can't fix that due to the pile of legacy dri1 drivers. Please use
> drm_dev_alloc/register/unregister/unref functions instead, with the
> load/unload code placed in between to avoid races with userspace seeing
> the device/driver (e.g. in sysfs) while it's in a partially defunct state.
> 
> Relevant kerneldoc has the details, at least in linux-next.

Ok.

> > +static void sun4i_backend_layer_atomic_update(struct drm_plane *plane,
> > +					      struct drm_plane_state *old_state)
> > +{
> > +	struct sun4i_layer *layer = plane_to_sun4i_layer(plane);
> > +	struct sun4i_drv *drv = layer->drv;
> > +	struct sun4i_backend *backend = drv->backend;
> > +
> > +	sun4i_backend_update_layer_coord(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_formats(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_buffer(backend, layer->id, plane);
> > +	sun4i_backend_layer_enable(backend, layer->id, true);
> > +	sun4i_backend_commit(backend);
> 
> Not idea how exactly your hw works, but the call to sun4i_backend_commit
> probably should be in the crtc->atomic_flush function, to make sure that
> plane updates across multiple planes are indeed atomic.

The hardware will not take the register writes into account until a
bit is set (in the _commit function), so I guess putting it in
atomic_flush makes sense.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: maxime.ripard@free-electrons.com (Maxime Ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/19] drm: Add Allwinner A10 Display Engine support
Date: Wed, 11 Nov 2015 14:14:12 -0800	[thread overview]
Message-ID: <20151111221412.GH6114@lukather> (raw)
In-Reply-To: <20151030144409.GZ16848@phenom.ffwll.local>

Hi Daniel,

Thanks for your review!

On Fri, Oct 30, 2015 at 03:44:09PM +0100, Daniel Vetter wrote:
> > +static void sun4i_crtc_disable(struct drm_crtc *crtc)
> > +{
> > +	struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
> > +	struct sun4i_drv *drv = scrtc->drv;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling the CRTC\n");
> > +
> > +	if (!scrtc->enabled)
> > +		return;
> 
> Please don't do this - the atomic state should always reflect the true hw
> state (fix that up with either hw state readout or reset in the ->reset
> callbacks), and the atomic helpers guarantee that they'll never call you
> when not needed. If you don't trust them do a WARN_ON at least, but no
> early silent returns.
> 
> Personally I'd just rip it out, it's too much trouble. And for debugging
> the atomic helpers already trace it all (or at least should).

Ok. Is there a preferred way to do HW state readout, or should I just
add that to my probe?

> > +static int sun4i_drv_connector_plug_all(struct drm_device *drm)
> 
> Laurent Pinchart has this as a rfc patch for drm core, please coordinate
> with him and rebase on top of his patches.

Ack, I will.

> > +static int sun4i_drv_enable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Enabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, true);
> > +
> > +	return 0;
> 
> atomic helpers rely on enable_vblank failing correctly when the pipe is
> off and vlbanks will never happen. You probably need a correct error code
> here that checks crtc->state->active (well not that directly but something
> derived from it, since the pointer chase would be racy).

Ok.

> I know it's a bit a mess since we don't have kms-native vblank driver
> hooks yet and really the drm core should get this right for you. It'll
> happen eventually, but drm_irq.c is a bit moldy ;-)

I can't really use drm_irq anyway, since we don't have a single
interrupt for the VBLANK, but two, that we have to use depending on
the output.

> > +static void sun4i_drv_disable_vblank(struct drm_device *drm, int pipe)
> > +{
> > +	struct sun4i_drv *drv = drm->dev_private;
> > +	struct sun4i_tcon *tcon = drv->tcon;
> > +
> > +	DRM_DEBUG_DRIVER("Disabling VBLANK on pipe %d\n", pipe);
> > +
> > +	sun4i_tcon_enable_vblank(tcon, false);
> > +}
> > +
> > +static int sun4i_drv_load(struct drm_device *drm, unsigned long flags)
> 
> load/unload callbacks are depracated since fundamentally racy, and we
> can't fix that due to the pile of legacy dri1 drivers. Please use
> drm_dev_alloc/register/unregister/unref functions instead, with the
> load/unload code placed in between to avoid races with userspace seeing
> the device/driver (e.g. in sysfs) while it's in a partially defunct state.
> 
> Relevant kerneldoc has the details, at least in linux-next.

Ok.

> > +static void sun4i_backend_layer_atomic_update(struct drm_plane *plane,
> > +					      struct drm_plane_state *old_state)
> > +{
> > +	struct sun4i_layer *layer = plane_to_sun4i_layer(plane);
> > +	struct sun4i_drv *drv = layer->drv;
> > +	struct sun4i_backend *backend = drv->backend;
> > +
> > +	sun4i_backend_update_layer_coord(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_formats(backend, layer->id, plane);
> > +	sun4i_backend_update_layer_buffer(backend, layer->id, plane);
> > +	sun4i_backend_layer_enable(backend, layer->id, true);
> > +	sun4i_backend_commit(backend);
> 
> Not idea how exactly your hw works, but the call to sun4i_backend_commit
> probably should be in the crtc->atomic_flush function, to make sure that
> plane updates across multiple planes are indeed atomic.

The hardware will not take the register writes into account until a
bit is set (in the _commit function), so I guess putting it in
atomic_flush makes sense.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151111/9c71edcb/attachment.sig>

  reply	other threads:[~2015-11-11 22:14 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-30 14:20 [PATCH 00/19] drm: Add Allwinner A10 display engine support Maxime Ripard
2015-10-30 14:20 ` Maxime Ripard
2015-10-30 14:20 ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 01/19] clk: sunxi: Add display clock Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 21:29   ` Stephen Boyd
2015-10-30 21:29     ` Stephen Boyd
2015-11-06 23:39     ` Maxime Ripard
2015-11-06 23:39       ` Maxime Ripard
2015-11-06 23:39       ` Maxime Ripard
2015-11-12 20:31       ` Stephen Boyd
2015-11-12 20:31         ` Stephen Boyd
2015-11-19 15:42         ` Maxime Ripard
2015-11-19 15:42           ` Maxime Ripard
2015-11-19 15:42           ` Maxime Ripard
2015-10-31 10:28   ` Chen-Yu Tsai
2015-10-31 10:28     ` Chen-Yu Tsai
2015-10-31 10:28     ` Chen-Yu Tsai
2015-11-06 19:42     ` Maxime Ripard
2015-11-06 19:42       ` Maxime Ripard
2015-11-06 19:42       ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 02/19] clk: sunxi: Add PLL3 clock Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 21:32   ` Stephen Boyd
2015-10-30 21:32     ` Stephen Boyd
2015-10-30 21:32     ` Stephen Boyd
2015-10-30 14:20 ` [PATCH 03/19] clk: sunxi: Add TCON channel0 clock Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-31 10:19   ` Chen-Yu Tsai
2015-10-31 10:19     ` Chen-Yu Tsai
2015-11-06 22:11     ` Maxime Ripard
2015-11-06 22:11       ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 04/19] clk: sunxi: Add TCON channel1 clock Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 21:37   ` Stephen Boyd
2015-10-30 21:37     ` Stephen Boyd
2015-11-07  0:11     ` Maxime Ripard
2015-11-07  0:11       ` Maxime Ripard
2015-11-07  0:11       ` Maxime Ripard
2015-10-31  9:53   ` Chen-Yu Tsai
2015-10-31  9:53     ` Chen-Yu Tsai
2015-10-31  9:53     ` Chen-Yu Tsai
2015-11-07  0:01     ` Maxime Ripard
2015-11-07  0:01       ` Maxime Ripard
2015-11-07  0:01       ` Maxime Ripard
2015-11-09  3:36       ` Chen-Yu Tsai
2015-11-09  3:36         ` Chen-Yu Tsai
2015-11-09  3:36         ` Chen-Yu Tsai
2015-11-19 15:35         ` Maxime Ripard
2015-11-19 15:35           ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 05/19] clk: sunxi: add DRAM gates Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-11-09  4:18   ` Chen-Yu Tsai
2015-11-09  4:18     ` Chen-Yu Tsai
2015-11-09  4:18     ` Chen-Yu Tsai
2015-11-13  8:08     ` Chen-Yu Tsai
2015-11-13  8:08       ` Chen-Yu Tsai
2015-11-13  8:08       ` Chen-Yu Tsai
2015-11-19 15:43       ` Maxime Ripard
2015-11-19 15:43         ` Maxime Ripard
2015-11-19 15:43         ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 06/19] clk: sunxi: Add Allwinner R8 AHB gates support Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 16:01   ` Chen-Yu Tsai
2015-10-30 16:01     ` Chen-Yu Tsai
2015-10-30 16:01     ` Chen-Yu Tsai
2015-10-30 16:33     ` Hans de Goede
2015-10-30 16:33       ` Hans de Goede
2015-10-30 16:33       ` Hans de Goede
2015-10-30 14:20 ` [PATCH 07/19] drm/panel: simple: Add timings for the Olimex LCD-OLinuXino-4.3TS Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 17:32   ` Thierry Reding
2015-10-30 17:32     ` Thierry Reding
2015-10-30 17:32     ` Thierry Reding
2015-11-07  0:44     ` Maxime Ripard
2015-11-07  0:44       ` Maxime Ripard
2015-11-07  0:44       ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 08/19] drm: Add Allwinner A10 Display Engine support Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:44   ` Daniel Vetter
2015-10-30 14:44     ` Daniel Vetter
2015-11-11 22:14     ` Maxime Ripard [this message]
2015-11-11 22:14       ` Maxime Ripard
2015-11-11 22:14       ` Maxime Ripard
2015-11-16 15:04       ` Daniel Vetter
2015-11-16 15:04         ` Daniel Vetter
2015-11-16 15:04         ` Daniel Vetter
2015-10-30 14:20 ` [PATCH 09/19] drm: sun4i: Add DT bindings documentation Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 16:40   ` Rob Herring
2015-10-30 16:40     ` Rob Herring
2015-10-30 16:40     ` Rob Herring
2015-10-30 17:37     ` Thierry Reding
2015-10-30 17:37       ` Thierry Reding
2015-10-30 17:37       ` Thierry Reding
2015-10-30 17:37       ` Thierry Reding
2015-11-01 14:28       ` Rob Herring
2015-11-01 14:28         ` Rob Herring
2015-11-01 14:28         ` Rob Herring
2015-11-01 14:28         ` Rob Herring
2015-11-06 22:32     ` Maxime Ripard
2015-11-06 22:32       ` Maxime Ripard
2015-11-06 22:32       ` Maxime Ripard
2015-11-06 22:32       ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 10/19] drm: sun4i: Add RGB output Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 11/19] drm: sun4i: Add composite output Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-11-02  2:53   ` [linux-sunxi] " Jonathan Liu
2015-11-02  2:53     ` Jonathan Liu
2015-11-02  2:53     ` Jonathan Liu
2015-11-07  0:35     ` [linux-sunxi] " Maxime Ripard
2015-11-07  0:35       ` Maxime Ripard
2015-11-07  0:35       ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 12/19] drm: sun4i: tv: Add PAL output standard Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20 ` [PATCH 13/19] drm: sun4i: tv: Add NTSC " Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:20   ` Maxime Ripard
2015-10-30 14:21 ` [PATCH 14/19] ARM: sun5i: dt: Add pll3 and pll7 clocks Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-11-09  4:24   ` Chen-Yu Tsai
2015-11-09  4:24     ` Chen-Yu Tsai
2015-11-09  4:24     ` Chen-Yu Tsai
2015-10-30 14:21 ` [PATCH 15/19] ARM: sun5i: dt: Add display and TCON clocks Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21 ` [PATCH 16/19] ARM: sun5i: dt: Add DRAM gates Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21 ` [PATCH 17/19] ARM: sun5i: dt: Add display blocks to the DTSI Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21 ` [PATCH 18/19] ARM: sun5i: r8: Add AHB gates " Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21 ` [PATCH 19/19] ARM: sun5i: chip: Enable the TV Encoder Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 14:21   ` Maxime Ripard
2015-10-30 15:20   ` Chen-Yu Tsai
2015-10-30 15:20     ` Chen-Yu Tsai
2015-11-06 19:37     ` Maxime Ripard
2015-11-06 19:37       ` Maxime Ripard
2015-11-06 19:37       ` Maxime Ripard
2015-10-30 14:52 ` [PATCH 00/19] drm: Add Allwinner A10 display engine support Daniel Vetter
2015-10-30 14:52   ` Daniel Vetter
2015-10-30 14:52   ` Daniel Vetter
2015-11-12  5:12   ` Maxime Ripard
2015-11-12  5:12     ` Maxime Ripard
2015-11-12  5:12     ` Maxime Ripard
2015-10-30 15:02 ` Stefan Monnier
2015-11-09  3:43 ` Chen-Yu Tsai
2015-11-09  3:43   ` Chen-Yu Tsai
2015-11-09  3:43   ` Chen-Yu Tsai

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=20151111221412.GH6114@lukather \
    --to=maxime.ripard@free-electrons.com \
    --cc=airlied@linux.ie \
    --cc=alex@nextthing.co \
    --cc=boris.brezillon@free-electrons.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=mturquette@baylibre.com \
    --cc=robdclark@gmail.com \
    --cc=sboyd@codeaurora.org \
    --cc=thierry.reding@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=wens@csie.org \
    --cc=wynter@nextthing.co \
    /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.