All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: 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: Mon, 16 Nov 2015 16:04:08 +0100	[thread overview]
Message-ID: <20151116150408.GT16848@phenom.ffwll.local> (raw)
In-Reply-To: <20151111221412.GH6114@lukather>

On Wed, Nov 11, 2015 at 02:14:12PM -0800, Maxime Ripard wrote:
> Hi Daniel,
> 
> Thanks for your review!

Back from vacation, sorry for the delay.

> 
> 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?

There's no preferred way yet (i.e. something supported in a standard
fashion through helpers). I'd place it in your various ->reset hooks
though. The idea from atomic helpers is that ->reset should make sure that
atomic state structures (i.e. drm_crtc/connector/plane_state or your
driver-specific subclasses of them) should match with the hw state. Either
by resetting the hw or by reading out the hw state inte freshly-allocated
structures.

> > > +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.

drm_irq has 2 parts: irq handling, which only supports 1 hw irq line, and
which is totally optional.

2nd part is the vblank support (all the drm_vblank and drm_crtc_vblank_)
functions, which are completely agnostic to how exactly your hw signals a
vblank for a given output. Those are mandatory if you want to support
vblanks (and really, you want to support vblanks). So whether you have 2
hw irq lines or 1 hw irq line with some additional status register doesn't
matter, since the hw irq -> logical drm_crtc mapping for vblank events is
done in the driver.

Yes I know we should split up the various bits in drm_irq, it's on my todo
;-)

> > > +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.

Yeah that's what I suspected, so sun4i_backend_commit definitely needs to
be moved to atomic_flush.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>
To: Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: 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: Mon, 16 Nov 2015 16:04:08 +0100	[thread overview]
Message-ID: <20151116150408.GT16848@phenom.ffwll.local> (raw)
In-Reply-To: <20151111221412.GH6114@lukather>

On Wed, Nov 11, 2015 at 02:14:12PM -0800, Maxime Ripard wrote:
> Hi Daniel,
> 
> Thanks for your review!

Back from vacation, sorry for the delay.

> 
> 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?

There's no preferred way yet (i.e. something supported in a standard
fashion through helpers). I'd place it in your various ->reset hooks
though. The idea from atomic helpers is that ->reset should make sure that
atomic state structures (i.e. drm_crtc/connector/plane_state or your
driver-specific subclasses of them) should match with the hw state. Either
by resetting the hw or by reading out the hw state inte freshly-allocated
structures.

> > > +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.

drm_irq has 2 parts: irq handling, which only supports 1 hw irq line, and
which is totally optional.

2nd part is the vblank support (all the drm_vblank and drm_crtc_vblank_)
functions, which are completely agnostic to how exactly your hw signals a
vblank for a given output. Those are mandatory if you want to support
vblanks (and really, you want to support vblanks). So whether you have 2
hw irq lines or 1 hw irq line with some additional status register doesn't
matter, since the hw irq -> logical drm_crtc mapping for vblank events is
done in the driver.

Yes I know we should split up the various bits in drm_irq, it's on my todo
;-)

> > > +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.

Yeah that's what I suspected, so sun4i_backend_commit definitely needs to
be moved to atomic_flush.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: daniel@ffwll.ch (Daniel Vetter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/19] drm: Add Allwinner A10 Display Engine support
Date: Mon, 16 Nov 2015 16:04:08 +0100	[thread overview]
Message-ID: <20151116150408.GT16848@phenom.ffwll.local> (raw)
In-Reply-To: <20151111221412.GH6114@lukather>

On Wed, Nov 11, 2015 at 02:14:12PM -0800, Maxime Ripard wrote:
> Hi Daniel,
> 
> Thanks for your review!

Back from vacation, sorry for the delay.

> 
> 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?

There's no preferred way yet (i.e. something supported in a standard
fashion through helpers). I'd place it in your various ->reset hooks
though. The idea from atomic helpers is that ->reset should make sure that
atomic state structures (i.e. drm_crtc/connector/plane_state or your
driver-specific subclasses of them) should match with the hw state. Either
by resetting the hw or by reading out the hw state inte freshly-allocated
structures.

> > > +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.

drm_irq has 2 parts: irq handling, which only supports 1 hw irq line, and
which is totally optional.

2nd part is the vblank support (all the drm_vblank and drm_crtc_vblank_)
functions, which are completely agnostic to how exactly your hw signals a
vblank for a given output. Those are mandatory if you want to support
vblanks (and really, you want to support vblanks). So whether you have 2
hw irq lines or 1 hw irq line with some additional status register doesn't
matter, since the hw irq -> logical drm_crtc mapping for vblank events is
done in the driver.

Yes I know we should split up the various bits in drm_irq, it's on my todo
;-)

> > > +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.

Yeah that's what I suspected, so sun4i_backend_commit definitely needs to
be moved to atomic_flush.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2015-11-16 15:04 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
2015-11-11 22:14       ` Maxime Ripard
2015-11-11 22:14       ` Maxime Ripard
2015-11-16 15:04       ` Daniel Vetter [this message]
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=20151116150408.GT16848@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --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=maxime.ripard@free-electrons.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.