All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 49/59] drm/arc: Inline arcpgu_crtc.c
Date: Fri, 24 Apr 2020 19:51:02 +0200	[thread overview]
Message-ID: <20200424175102.GF7074@ravnborg.org> (raw)
In-Reply-To: <20200415074034.175360-50-daniel.vetter@ffwll.ch>

Hi Daniel.

On Wed, Apr 15, 2020 at 09:40:24AM +0200, Daniel Vetter wrote:
> Really not big anymore.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

A few things below that maybe should be addressed. Otherwise:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

> ---
>  drivers/gpu/drm/arc/Makefile      |   2 +-
>  drivers/gpu/drm/arc/arcpgu.h      |   1 -
>  drivers/gpu/drm/arc/arcpgu_crtc.c | 166 ------------------------------
>  drivers/gpu/drm/arc/arcpgu_drv.c  | 147 +++++++++++++++++++++++++-
>  drivers/gpu/drm/arc/arcpgu_sim.c  |  12 ---
>  5 files changed, 146 insertions(+), 182 deletions(-)
>  delete mode 100644 drivers/gpu/drm/arc/arcpgu_crtc.c
> 
> diff --git a/drivers/gpu/drm/arc/Makefile b/drivers/gpu/drm/arc/Makefile
> index c7028b7427b3..c686e0287a71 100644
> --- a/drivers/gpu/drm/arc/Makefile
> +++ b/drivers/gpu/drm/arc/Makefile
> @@ -1,3 +1,3 @@
>  # SPDX-License-Identifier: GPL-2.0-only
> -arcpgu-y := arcpgu_crtc.o arcpgu_hdmi.o arcpgu_sim.o arcpgu_drv.o
> +arcpgu-y := arcpgu_hdmi.o arcpgu_sim.o arcpgu_drv.o
>  obj-$(CONFIG_DRM_ARCPGU) += arcpgu.o
> diff --git a/drivers/gpu/drm/arc/arcpgu.h b/drivers/gpu/drm/arc/arcpgu.h
> index b5c699d14f27..cee2448a07d6 100644
> --- a/drivers/gpu/drm/arc/arcpgu.h
> +++ b/drivers/gpu/drm/arc/arcpgu.h
> @@ -34,7 +34,6 @@ static inline u32 arc_pgu_read(struct arcpgu_drm_private *arcpgu,
>  	return ioread32(arcpgu->regs + reg);
>  }
>  
> -int arc_pgu_setup_pipe(struct drm_device *dev);
>  int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np);
>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np);
>  
> diff --git a/drivers/gpu/drm/arc/arcpgu_crtc.c b/drivers/gpu/drm/arc/arcpgu_crtc.c
> deleted file mode 100644
> index 4655f03e37f1..000000000000
> --- a/drivers/gpu/drm/arc/arcpgu_crtc.c
> +++ /dev/null
> @@ -1,166 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * ARC PGU DRM driver.
> - *
> - * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
> - */
> -
> -#include <drm/drm_atomic_helper.h>
> -#include <drm/drm_device.h>
> -#include <drm/drm_fb_cma_helper.h>
> -#include <drm/drm_gem_cma_helper.h>
> -#include <drm/drm_plane_helper.h>
> -#include <drm/drm_probe_helper.h>
> -#include <linux/clk.h>
> -#include <linux/platform_data/simplefb.h>
> -
> -#include "arcpgu.h"
> -#include "arcpgu_regs.h"
> -
> -#define ENCODE_PGU_XY(x, y)	((((x) - 1) << 16) | ((y) - 1))
> -
> -static const u32 arc_pgu_supported_formats[] = {
> -	DRM_FORMAT_RGB565,
> -	DRM_FORMAT_XRGB8888,
> -	DRM_FORMAT_ARGB8888,
> -};
> -
> -static void arc_pgu_set_pxl_fmt(struct arcpgu_drm_private *arcpgu)
> -{
> -	const struct drm_framebuffer *fb = arcpgu->pipe.plane.state->fb;
> -	uint32_t pixel_format = fb->format->format;
> -	u32 format = DRM_FORMAT_INVALID;
> -	int i;
> -	u32 reg_ctrl;
> -
> -	for (i = 0; i < ARRAY_SIZE(arc_pgu_supported_formats); i++) {
> -		if (arc_pgu_supported_formats[i] == pixel_format)
> -			format = arc_pgu_supported_formats[i];
> -	}
> -
> -	if (WARN_ON(format == DRM_FORMAT_INVALID))
> -		return;
> -
> -	reg_ctrl = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> -	if (format == DRM_FORMAT_RGB565)
> -		reg_ctrl &= ~ARCPGU_MODE_XRGB8888;
> -	else
> -		reg_ctrl |= ARCPGU_MODE_XRGB8888;
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, reg_ctrl);
> -}
> -
> -static const struct drm_crtc_funcs arc_pgu_crtc_funcs = {
> -	.destroy = drm_crtc_cleanup,
> -	.set_config = drm_atomic_helper_set_config,
> -	.page_flip = drm_atomic_helper_page_flip,
> -	.reset = drm_atomic_helper_crtc_reset,
> -	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> -	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> -};
> -
> -static enum drm_mode_status arc_pgu_mode_valid(struct drm_simple_display_pipe *pipe,
> -					       const struct drm_display_mode *mode)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -	long rate, clk_rate = mode->clock * 1000;
> -	long diff = clk_rate / 200; /* +-0.5% allowed by HDMI spec */
> -
> -	rate = clk_round_rate(arcpgu->clk, clk_rate);
> -	if ((max(rate, clk_rate) - min(rate, clk_rate) < diff) && (rate > 0))
> -		return MODE_OK;
> -
> -	return MODE_NOCLOCK;
> -}
> -
> -static void arc_pgu_mode_set(struct arcpgu_drm_private *arcpgu)
> -{
> -	struct drm_display_mode *m = &arcpgu->pipe.crtc.state->adjusted_mode;
> -	u32 val;
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_FMT,
> -		      ENCODE_PGU_XY(m->crtc_htotal, m->crtc_vtotal));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_HSYNC,
> -		      ENCODE_PGU_XY(m->crtc_hsync_start - m->crtc_hdisplay,
> -				    m->crtc_hsync_end - m->crtc_hdisplay));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_VSYNC,
> -		      ENCODE_PGU_XY(m->crtc_vsync_start - m->crtc_vdisplay,
> -				    m->crtc_vsync_end - m->crtc_vdisplay));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_ACTIVE,
> -		      ENCODE_PGU_XY(m->crtc_hblank_end - m->crtc_hblank_start,
> -				    m->crtc_vblank_end - m->crtc_vblank_start));
> -
> -	val = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> -
> -	if (m->flags & DRM_MODE_FLAG_PVSYNC)
> -		val |= ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST;
> -	else
> -		val &= ~(ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST);
> -
> -	if (m->flags & DRM_MODE_FLAG_PHSYNC)
> -		val |= ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST;
> -	else
> -		val &= ~(ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST);
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, val);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_STRIDE, 0);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_START_SET, 1);
> -
> -	arc_pgu_set_pxl_fmt(arcpgu);
> -
> -	clk_set_rate(arcpgu->clk, m->crtc_clock * 1000);
> -}
> -
> -static void arc_pgu_enable(struct drm_simple_display_pipe *pipe,
> -			   struct drm_crtc_state *crtc_state,
> -			   struct drm_plane_state *plane_state)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -
> -	arc_pgu_mode_set(arcpgu);
> -
> -	clk_prepare_enable(arcpgu->clk);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> -		      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) |
> -		      ARCPGU_CTRL_ENABLE_MASK);
> -}
> -
> -static void arc_pgu_disable(struct drm_simple_display_pipe *pipe)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -
> -	clk_disable_unprepare(arcpgu->clk);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> -			      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) &
> -			      ~ARCPGU_CTRL_ENABLE_MASK);
> -}
> -
> -static void arc_pgu_update(struct drm_simple_display_pipe *pipe,
> -			   struct drm_plane_state *state)
> -{
> -	struct arcpgu_drm_private *arcpgu;
> -	struct drm_gem_cma_object *gem;
> -
> -	arcpgu = pipe_to_arcpgu_priv(pipe);
> -	gem = drm_fb_cma_get_gem_obj(pipe->plane.state->fb, 0);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_BUF0_ADDR, gem->paddr);
> -}
> -
> -static const struct drm_simple_display_pipe_funcs arc_pgu_pipe_funcs = {
> -	.update = arc_pgu_update,
> -	.mode_valid = arc_pgu_mode_valid,
> -	.enable	= arc_pgu_enable,
> -	.disable = arc_pgu_disable,
> -};
> -
> -int arc_pgu_setup_pipe(struct drm_device *drm)
> -{
> -	struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm);
> -
> -	return drm_simple_display_pipe_init(drm, &arcpgu->pipe, &arc_pgu_pipe_funcs,
> -					    arc_pgu_supported_formats,
> -					    ARRAY_SIZE(arc_pgu_supported_formats),
> -					    NULL, NULL);
> -}
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index bf03eda532bc..2443e3c78a76 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -12,6 +12,7 @@
>  #include <drm/drm_drv.h>
>  #include <drm/drm_fb_cma_helper.h>
>  #include <drm/drm_fb_helper.h>
> +#include <drm/drm_fourcc.h>
>  #include <drm/drm_gem_cma_helper.h>
>  #include <drm/drm_gem_framebuffer_helper.h>
>  #include <drm/drm_of.h>
> @@ -24,6 +25,144 @@
>  #include "arcpgu.h"
>  #include "arcpgu_regs.h"
>  
> +#define ENCODE_PGU_XY(x, y)	((((x) - 1) << 16) | ((y) - 1))
> +
> +static const u32 arc_pgu_supported_formats[] = {
> +	DRM_FORMAT_RGB565,
> +	DRM_FORMAT_XRGB8888,
> +	DRM_FORMAT_ARGB8888,
> +};
> +
> +static void arc_pgu_set_pxl_fmt(struct arcpgu_drm_private *arcpgu)
> +{
> +	const struct drm_framebuffer *fb = arcpgu->pipe.plane.state->fb;
> +	uint32_t pixel_format = fb->format->format;
> +	u32 format = DRM_FORMAT_INVALID;
> +	int i;
> +	u32 reg_ctrl;
> +
> +	for (i = 0; i < ARRAY_SIZE(arc_pgu_supported_formats); i++) {
> +		if (arc_pgu_supported_formats[i] == pixel_format)
> +			format = arc_pgu_supported_formats[i];
> +	}
> +
> +	if (WARN_ON(format == DRM_FORMAT_INVALID))
> +		return;
> +
> +	reg_ctrl = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> +	if (format == DRM_FORMAT_RGB565)
> +		reg_ctrl &= ~ARCPGU_MODE_XRGB8888;
> +	else
> +		reg_ctrl |= ARCPGU_MODE_XRGB8888;
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, reg_ctrl);
> +}
> +
> +static const struct drm_crtc_funcs arc_pgu_crtc_funcs = {
> +	.destroy = drm_crtc_cleanup,
> +	.set_config = drm_atomic_helper_set_config,
> +	.page_flip = drm_atomic_helper_page_flip,
> +	.reset = drm_atomic_helper_crtc_reset,
> +	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> +	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> +};
> +
> +static enum drm_mode_status arc_pgu_mode_valid(struct drm_simple_display_pipe *pipe,
> +					       const struct drm_display_mode *mode)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +	long rate, clk_rate = mode->clock * 1000;
> +	long diff = clk_rate / 200; /* +-0.5% allowed by HDMI spec */
> +
> +	rate = clk_round_rate(arcpgu->clk, clk_rate);
> +	if ((max(rate, clk_rate) - min(rate, clk_rate) < diff) && (rate > 0))
> +		return MODE_OK;
> +
> +	return MODE_NOCLOCK;
> +}
> +
> +static void arc_pgu_mode_set(struct arcpgu_drm_private *arcpgu)
> +{
> +	struct drm_display_mode *m = &arcpgu->pipe.crtc.state->adjusted_mode;
> +	u32 val;
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_FMT,
> +		      ENCODE_PGU_XY(m->crtc_htotal, m->crtc_vtotal));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_HSYNC,
> +		      ENCODE_PGU_XY(m->crtc_hsync_start - m->crtc_hdisplay,
> +				    m->crtc_hsync_end - m->crtc_hdisplay));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_VSYNC,
> +		      ENCODE_PGU_XY(m->crtc_vsync_start - m->crtc_vdisplay,
> +				    m->crtc_vsync_end - m->crtc_vdisplay));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_ACTIVE,
> +		      ENCODE_PGU_XY(m->crtc_hblank_end - m->crtc_hblank_start,
> +				    m->crtc_vblank_end - m->crtc_vblank_start));
> +
> +	val = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> +
> +	if (m->flags & DRM_MODE_FLAG_PVSYNC)
> +		val |= ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST;
> +	else
> +		val &= ~(ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST);
> +
> +	if (m->flags & DRM_MODE_FLAG_PHSYNC)
> +		val |= ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST;
> +	else
> +		val &= ~(ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST);
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, val);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_STRIDE, 0);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_START_SET, 1);
> +
> +	arc_pgu_set_pxl_fmt(arcpgu);
> +
> +	clk_set_rate(arcpgu->clk, m->crtc_clock * 1000);
> +}
> +
> +static void arc_pgu_enable(struct drm_simple_display_pipe *pipe,
> +			   struct drm_crtc_state *crtc_state,
> +			   struct drm_plane_state *plane_state)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +
> +	arc_pgu_mode_set(arcpgu);
> +
> +	clk_prepare_enable(arcpgu->clk);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> +		      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) |
> +		      ARCPGU_CTRL_ENABLE_MASK);
> +}
> +
> +static void arc_pgu_disable(struct drm_simple_display_pipe *pipe)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +
> +	clk_disable_unprepare(arcpgu->clk);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> +			      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) &
> +			      ~ARCPGU_CTRL_ENABLE_MASK);
> +}
> +
> +static void arc_pgu_update(struct drm_simple_display_pipe *pipe,
> +			   struct drm_plane_state *state)
> +{
> +	struct arcpgu_drm_private *arcpgu;
> +	struct drm_gem_cma_object *gem;
> +
> +	arcpgu = pipe_to_arcpgu_priv(pipe);
> +	gem = drm_fb_cma_get_gem_obj(pipe->plane.state->fb, 0);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_BUF0_ADDR, gem->paddr);
> +}
> +
> +static const struct drm_simple_display_pipe_funcs arc_pgu_pipe_funcs = {
> +	.update = arc_pgu_update,
> +	.mode_valid = arc_pgu_mode_valid,
> +	.enable	= arc_pgu_enable,
> +	.disable = arc_pgu_disable,
> +};
> +
>  static const struct drm_mode_config_funcs arcpgu_drm_modecfg_funcs = {
>  	.fb_create  = drm_gem_fb_create,
>  	.atomic_check = drm_atomic_helper_check,
> @@ -70,8 +209,12 @@ static int arcpgu_load(struct arcpgu_drm_private *arcpgu)
>  	if (dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32)))
>  		return -ENODEV;
>  
> -	if (arc_pgu_setup_pipe(drm) < 0)
> -		return -ENODEV;
> +	ret = drm_simple_display_pipe_init(drm, &arcpgu->pipe, &arc_pgu_pipe_funcs,
> +					   arc_pgu_supported_formats,
> +					   ARRAY_SIZE(arc_pgu_supported_formats),
> +					   NULL, NULL);
> +	if (ret)
> +		return ret;

Detail. In the old code ant error was converted to -ENODEV.
The new code let the error code bubble up - which is better.
But this is a small change that is not in the changelog.


>  
>  	/*
>  	 * There is only one output port inside each device. It is linked with
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index afc34f8b4de0..1a63f0868504 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -45,10 +45,6 @@ static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>  
> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  {
>  	struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm);
> @@ -58,14 +54,6 @@ int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  
>  	encoder = &arcpgu->pipe.encoder;
>  
> -	encoder->possible_crtcs = 1;
> -	encoder->possible_clones = 0;
> -
> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
> -	if (ret)
> -		return ret;
> -

This looks like code that belongs in one of the former patches.
Not that it matters much but anyway.

	Sam

>  	connector = &arcpgu->sim_conn;
>  	drm_connector_helper_add(connector, &arcpgu_drm_connector_helper_funcs);
>  
> -- 
> 2.25.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH 49/59] drm/arc: Inline arcpgu_crtc.c
Date: Fri, 24 Apr 2020 19:51:02 +0200	[thread overview]
Message-ID: <20200424175102.GF7074@ravnborg.org> (raw)
In-Reply-To: <20200415074034.175360-50-daniel.vetter@ffwll.ch>

Hi Daniel.

On Wed, Apr 15, 2020 at 09:40:24AM +0200, Daniel Vetter wrote:
> Really not big anymore.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

A few things below that maybe should be addressed. Otherwise:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

> ---
>  drivers/gpu/drm/arc/Makefile      |   2 +-
>  drivers/gpu/drm/arc/arcpgu.h      |   1 -
>  drivers/gpu/drm/arc/arcpgu_crtc.c | 166 ------------------------------
>  drivers/gpu/drm/arc/arcpgu_drv.c  | 147 +++++++++++++++++++++++++-
>  drivers/gpu/drm/arc/arcpgu_sim.c  |  12 ---
>  5 files changed, 146 insertions(+), 182 deletions(-)
>  delete mode 100644 drivers/gpu/drm/arc/arcpgu_crtc.c
> 
> diff --git a/drivers/gpu/drm/arc/Makefile b/drivers/gpu/drm/arc/Makefile
> index c7028b7427b3..c686e0287a71 100644
> --- a/drivers/gpu/drm/arc/Makefile
> +++ b/drivers/gpu/drm/arc/Makefile
> @@ -1,3 +1,3 @@
>  # SPDX-License-Identifier: GPL-2.0-only
> -arcpgu-y := arcpgu_crtc.o arcpgu_hdmi.o arcpgu_sim.o arcpgu_drv.o
> +arcpgu-y := arcpgu_hdmi.o arcpgu_sim.o arcpgu_drv.o
>  obj-$(CONFIG_DRM_ARCPGU) += arcpgu.o
> diff --git a/drivers/gpu/drm/arc/arcpgu.h b/drivers/gpu/drm/arc/arcpgu.h
> index b5c699d14f27..cee2448a07d6 100644
> --- a/drivers/gpu/drm/arc/arcpgu.h
> +++ b/drivers/gpu/drm/arc/arcpgu.h
> @@ -34,7 +34,6 @@ static inline u32 arc_pgu_read(struct arcpgu_drm_private *arcpgu,
>  	return ioread32(arcpgu->regs + reg);
>  }
>  
> -int arc_pgu_setup_pipe(struct drm_device *dev);
>  int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np);
>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np);
>  
> diff --git a/drivers/gpu/drm/arc/arcpgu_crtc.c b/drivers/gpu/drm/arc/arcpgu_crtc.c
> deleted file mode 100644
> index 4655f03e37f1..000000000000
> --- a/drivers/gpu/drm/arc/arcpgu_crtc.c
> +++ /dev/null
> @@ -1,166 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * ARC PGU DRM driver.
> - *
> - * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
> - */
> -
> -#include <drm/drm_atomic_helper.h>
> -#include <drm/drm_device.h>
> -#include <drm/drm_fb_cma_helper.h>
> -#include <drm/drm_gem_cma_helper.h>
> -#include <drm/drm_plane_helper.h>
> -#include <drm/drm_probe_helper.h>
> -#include <linux/clk.h>
> -#include <linux/platform_data/simplefb.h>
> -
> -#include "arcpgu.h"
> -#include "arcpgu_regs.h"
> -
> -#define ENCODE_PGU_XY(x, y)	((((x) - 1) << 16) | ((y) - 1))
> -
> -static const u32 arc_pgu_supported_formats[] = {
> -	DRM_FORMAT_RGB565,
> -	DRM_FORMAT_XRGB8888,
> -	DRM_FORMAT_ARGB8888,
> -};
> -
> -static void arc_pgu_set_pxl_fmt(struct arcpgu_drm_private *arcpgu)
> -{
> -	const struct drm_framebuffer *fb = arcpgu->pipe.plane.state->fb;
> -	uint32_t pixel_format = fb->format->format;
> -	u32 format = DRM_FORMAT_INVALID;
> -	int i;
> -	u32 reg_ctrl;
> -
> -	for (i = 0; i < ARRAY_SIZE(arc_pgu_supported_formats); i++) {
> -		if (arc_pgu_supported_formats[i] == pixel_format)
> -			format = arc_pgu_supported_formats[i];
> -	}
> -
> -	if (WARN_ON(format == DRM_FORMAT_INVALID))
> -		return;
> -
> -	reg_ctrl = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> -	if (format == DRM_FORMAT_RGB565)
> -		reg_ctrl &= ~ARCPGU_MODE_XRGB8888;
> -	else
> -		reg_ctrl |= ARCPGU_MODE_XRGB8888;
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, reg_ctrl);
> -}
> -
> -static const struct drm_crtc_funcs arc_pgu_crtc_funcs = {
> -	.destroy = drm_crtc_cleanup,
> -	.set_config = drm_atomic_helper_set_config,
> -	.page_flip = drm_atomic_helper_page_flip,
> -	.reset = drm_atomic_helper_crtc_reset,
> -	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> -	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> -};
> -
> -static enum drm_mode_status arc_pgu_mode_valid(struct drm_simple_display_pipe *pipe,
> -					       const struct drm_display_mode *mode)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -	long rate, clk_rate = mode->clock * 1000;
> -	long diff = clk_rate / 200; /* +-0.5% allowed by HDMI spec */
> -
> -	rate = clk_round_rate(arcpgu->clk, clk_rate);
> -	if ((max(rate, clk_rate) - min(rate, clk_rate) < diff) && (rate > 0))
> -		return MODE_OK;
> -
> -	return MODE_NOCLOCK;
> -}
> -
> -static void arc_pgu_mode_set(struct arcpgu_drm_private *arcpgu)
> -{
> -	struct drm_display_mode *m = &arcpgu->pipe.crtc.state->adjusted_mode;
> -	u32 val;
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_FMT,
> -		      ENCODE_PGU_XY(m->crtc_htotal, m->crtc_vtotal));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_HSYNC,
> -		      ENCODE_PGU_XY(m->crtc_hsync_start - m->crtc_hdisplay,
> -				    m->crtc_hsync_end - m->crtc_hdisplay));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_VSYNC,
> -		      ENCODE_PGU_XY(m->crtc_vsync_start - m->crtc_vdisplay,
> -				    m->crtc_vsync_end - m->crtc_vdisplay));
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_ACTIVE,
> -		      ENCODE_PGU_XY(m->crtc_hblank_end - m->crtc_hblank_start,
> -				    m->crtc_vblank_end - m->crtc_vblank_start));
> -
> -	val = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> -
> -	if (m->flags & DRM_MODE_FLAG_PVSYNC)
> -		val |= ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST;
> -	else
> -		val &= ~(ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST);
> -
> -	if (m->flags & DRM_MODE_FLAG_PHSYNC)
> -		val |= ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST;
> -	else
> -		val &= ~(ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST);
> -
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, val);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_STRIDE, 0);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_START_SET, 1);
> -
> -	arc_pgu_set_pxl_fmt(arcpgu);
> -
> -	clk_set_rate(arcpgu->clk, m->crtc_clock * 1000);
> -}
> -
> -static void arc_pgu_enable(struct drm_simple_display_pipe *pipe,
> -			   struct drm_crtc_state *crtc_state,
> -			   struct drm_plane_state *plane_state)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -
> -	arc_pgu_mode_set(arcpgu);
> -
> -	clk_prepare_enable(arcpgu->clk);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> -		      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) |
> -		      ARCPGU_CTRL_ENABLE_MASK);
> -}
> -
> -static void arc_pgu_disable(struct drm_simple_display_pipe *pipe)
> -{
> -	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> -
> -	clk_disable_unprepare(arcpgu->clk);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> -			      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) &
> -			      ~ARCPGU_CTRL_ENABLE_MASK);
> -}
> -
> -static void arc_pgu_update(struct drm_simple_display_pipe *pipe,
> -			   struct drm_plane_state *state)
> -{
> -	struct arcpgu_drm_private *arcpgu;
> -	struct drm_gem_cma_object *gem;
> -
> -	arcpgu = pipe_to_arcpgu_priv(pipe);
> -	gem = drm_fb_cma_get_gem_obj(pipe->plane.state->fb, 0);
> -	arc_pgu_write(arcpgu, ARCPGU_REG_BUF0_ADDR, gem->paddr);
> -}
> -
> -static const struct drm_simple_display_pipe_funcs arc_pgu_pipe_funcs = {
> -	.update = arc_pgu_update,
> -	.mode_valid = arc_pgu_mode_valid,
> -	.enable	= arc_pgu_enable,
> -	.disable = arc_pgu_disable,
> -};
> -
> -int arc_pgu_setup_pipe(struct drm_device *drm)
> -{
> -	struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm);
> -
> -	return drm_simple_display_pipe_init(drm, &arcpgu->pipe, &arc_pgu_pipe_funcs,
> -					    arc_pgu_supported_formats,
> -					    ARRAY_SIZE(arc_pgu_supported_formats),
> -					    NULL, NULL);
> -}
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index bf03eda532bc..2443e3c78a76 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -12,6 +12,7 @@
>  #include <drm/drm_drv.h>
>  #include <drm/drm_fb_cma_helper.h>
>  #include <drm/drm_fb_helper.h>
> +#include <drm/drm_fourcc.h>
>  #include <drm/drm_gem_cma_helper.h>
>  #include <drm/drm_gem_framebuffer_helper.h>
>  #include <drm/drm_of.h>
> @@ -24,6 +25,144 @@
>  #include "arcpgu.h"
>  #include "arcpgu_regs.h"
>  
> +#define ENCODE_PGU_XY(x, y)	((((x) - 1) << 16) | ((y) - 1))
> +
> +static const u32 arc_pgu_supported_formats[] = {
> +	DRM_FORMAT_RGB565,
> +	DRM_FORMAT_XRGB8888,
> +	DRM_FORMAT_ARGB8888,
> +};
> +
> +static void arc_pgu_set_pxl_fmt(struct arcpgu_drm_private *arcpgu)
> +{
> +	const struct drm_framebuffer *fb = arcpgu->pipe.plane.state->fb;
> +	uint32_t pixel_format = fb->format->format;
> +	u32 format = DRM_FORMAT_INVALID;
> +	int i;
> +	u32 reg_ctrl;
> +
> +	for (i = 0; i < ARRAY_SIZE(arc_pgu_supported_formats); i++) {
> +		if (arc_pgu_supported_formats[i] == pixel_format)
> +			format = arc_pgu_supported_formats[i];
> +	}
> +
> +	if (WARN_ON(format == DRM_FORMAT_INVALID))
> +		return;
> +
> +	reg_ctrl = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> +	if (format == DRM_FORMAT_RGB565)
> +		reg_ctrl &= ~ARCPGU_MODE_XRGB8888;
> +	else
> +		reg_ctrl |= ARCPGU_MODE_XRGB8888;
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, reg_ctrl);
> +}
> +
> +static const struct drm_crtc_funcs arc_pgu_crtc_funcs = {
> +	.destroy = drm_crtc_cleanup,
> +	.set_config = drm_atomic_helper_set_config,
> +	.page_flip = drm_atomic_helper_page_flip,
> +	.reset = drm_atomic_helper_crtc_reset,
> +	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> +	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> +};
> +
> +static enum drm_mode_status arc_pgu_mode_valid(struct drm_simple_display_pipe *pipe,
> +					       const struct drm_display_mode *mode)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +	long rate, clk_rate = mode->clock * 1000;
> +	long diff = clk_rate / 200; /* +-0.5% allowed by HDMI spec */
> +
> +	rate = clk_round_rate(arcpgu->clk, clk_rate);
> +	if ((max(rate, clk_rate) - min(rate, clk_rate) < diff) && (rate > 0))
> +		return MODE_OK;
> +
> +	return MODE_NOCLOCK;
> +}
> +
> +static void arc_pgu_mode_set(struct arcpgu_drm_private *arcpgu)
> +{
> +	struct drm_display_mode *m = &arcpgu->pipe.crtc.state->adjusted_mode;
> +	u32 val;
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_FMT,
> +		      ENCODE_PGU_XY(m->crtc_htotal, m->crtc_vtotal));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_HSYNC,
> +		      ENCODE_PGU_XY(m->crtc_hsync_start - m->crtc_hdisplay,
> +				    m->crtc_hsync_end - m->crtc_hdisplay));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_VSYNC,
> +		      ENCODE_PGU_XY(m->crtc_vsync_start - m->crtc_vdisplay,
> +				    m->crtc_vsync_end - m->crtc_vdisplay));
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_ACTIVE,
> +		      ENCODE_PGU_XY(m->crtc_hblank_end - m->crtc_hblank_start,
> +				    m->crtc_vblank_end - m->crtc_vblank_start));
> +
> +	val = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL);
> +
> +	if (m->flags & DRM_MODE_FLAG_PVSYNC)
> +		val |= ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST;
> +	else
> +		val &= ~(ARCPGU_CTRL_VS_POL_MASK << ARCPGU_CTRL_VS_POL_OFST);
> +
> +	if (m->flags & DRM_MODE_FLAG_PHSYNC)
> +		val |= ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST;
> +	else
> +		val &= ~(ARCPGU_CTRL_HS_POL_MASK << ARCPGU_CTRL_HS_POL_OFST);
> +
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, val);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_STRIDE, 0);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_START_SET, 1);
> +
> +	arc_pgu_set_pxl_fmt(arcpgu);
> +
> +	clk_set_rate(arcpgu->clk, m->crtc_clock * 1000);
> +}
> +
> +static void arc_pgu_enable(struct drm_simple_display_pipe *pipe,
> +			   struct drm_crtc_state *crtc_state,
> +			   struct drm_plane_state *plane_state)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +
> +	arc_pgu_mode_set(arcpgu);
> +
> +	clk_prepare_enable(arcpgu->clk);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> +		      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) |
> +		      ARCPGU_CTRL_ENABLE_MASK);
> +}
> +
> +static void arc_pgu_disable(struct drm_simple_display_pipe *pipe)
> +{
> +	struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe);
> +
> +	clk_disable_unprepare(arcpgu->clk);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_CTRL,
> +			      arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) &
> +			      ~ARCPGU_CTRL_ENABLE_MASK);
> +}
> +
> +static void arc_pgu_update(struct drm_simple_display_pipe *pipe,
> +			   struct drm_plane_state *state)
> +{
> +	struct arcpgu_drm_private *arcpgu;
> +	struct drm_gem_cma_object *gem;
> +
> +	arcpgu = pipe_to_arcpgu_priv(pipe);
> +	gem = drm_fb_cma_get_gem_obj(pipe->plane.state->fb, 0);
> +	arc_pgu_write(arcpgu, ARCPGU_REG_BUF0_ADDR, gem->paddr);
> +}
> +
> +static const struct drm_simple_display_pipe_funcs arc_pgu_pipe_funcs = {
> +	.update = arc_pgu_update,
> +	.mode_valid = arc_pgu_mode_valid,
> +	.enable	= arc_pgu_enable,
> +	.disable = arc_pgu_disable,
> +};
> +
>  static const struct drm_mode_config_funcs arcpgu_drm_modecfg_funcs = {
>  	.fb_create  = drm_gem_fb_create,
>  	.atomic_check = drm_atomic_helper_check,
> @@ -70,8 +209,12 @@ static int arcpgu_load(struct arcpgu_drm_private *arcpgu)
>  	if (dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32)))
>  		return -ENODEV;
>  
> -	if (arc_pgu_setup_pipe(drm) < 0)
> -		return -ENODEV;
> +	ret = drm_simple_display_pipe_init(drm, &arcpgu->pipe, &arc_pgu_pipe_funcs,
> +					   arc_pgu_supported_formats,
> +					   ARRAY_SIZE(arc_pgu_supported_formats),
> +					   NULL, NULL);
> +	if (ret)
> +		return ret;

Detail. In the old code ant error was converted to -ENODEV.
The new code let the error code bubble up - which is better.
But this is a small change that is not in the changelog.


>  
>  	/*
>  	 * There is only one output port inside each device. It is linked with
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index afc34f8b4de0..1a63f0868504 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -45,10 +45,6 @@ static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>  
> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  {
>  	struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm);
> @@ -58,14 +54,6 @@ int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  
>  	encoder = &arcpgu->pipe.encoder;
>  
> -	encoder->possible_crtcs = 1;
> -	encoder->possible_clones = 0;
> -
> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
> -	if (ret)
> -		return ret;
> -

This looks like code that belongs in one of the former patches.
Not that it matters much but anyway.

	Sam

>  	connector = &arcpgu->sim_conn;
>  	drm_connector_helper_add(connector, &arcpgu_drm_connector_helper_funcs);
>  
> -- 
> 2.25.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-04-24 17:51 UTC|newest]

Thread overview: 317+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-15  7:39 [PATCH 00/59] devm_drm_dev_alloc, v2 Daniel Vetter
2020-04-15  7:39 ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 01/59] drm: Add devm_drm_dev_alloc macro Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-20 13:36   ` Thomas Zimmermann
2020-04-20 13:36     ` [Intel-gfx] " Thomas Zimmermann
2020-04-21 10:45     ` Daniel Vetter
2020-04-21 10:45       ` [Intel-gfx] " Daniel Vetter
2020-04-21 14:03       ` Thomas Zimmermann
2020-04-21 14:03         ` [Intel-gfx] " Thomas Zimmermann
2020-04-21 20:32         ` Sam Ravnborg
2020-04-21 20:32           ` [Intel-gfx] " Sam Ravnborg
2020-04-28 13:06           ` Daniel Vetter
2020-04-28 13:06             ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 02/59] drm/vboxvideo: drop DRM_MTRR_WC #define Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:01   ` Hans de Goede
2020-04-15 15:01     ` [Intel-gfx] " Hans de Goede
2020-04-15  7:39 ` [PATCH 03/59] drm/vboxvideo: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:02   ` Hans de Goede
2020-04-15 15:02     ` [Intel-gfx] " Hans de Goede
2020-04-24 16:33   ` Sam Ravnborg
2020-04-24 16:33     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:39 ` [PATCH 04/59] drm/vboxvideo: Stop using drm_device->dev_private Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:02   ` Hans de Goede
2020-04-15 15:02     ` [Intel-gfx] " Hans de Goede
2020-04-15  7:39 ` [PATCH 05/59] drm/vboxvidoe: use managed pci functions Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:03   ` Hans de Goede
2020-04-15 15:03     ` [Intel-gfx] " Hans de Goede
2020-04-15 17:44     ` Daniel Vetter
2020-04-15 17:44       ` [Intel-gfx] " Daniel Vetter
2020-04-20 13:16       ` Hans de Goede
2020-04-20 13:16         ` [Intel-gfx] " Hans de Goede
2020-04-15 17:32   ` Thomas Zimmermann
2020-04-15 17:32     ` [Intel-gfx] " Thomas Zimmermann
2020-04-15  7:39 ` [PATCH 06/59] drm/vboxvideo: Use devm_gen_pool_create Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:04   ` Hans de Goede
2020-04-15 15:04     ` [Intel-gfx] " Hans de Goede
2020-04-15  7:39 ` [PATCH 07/59] drm/v3d: Don't set drm_device->dev_private Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 08/59] drm/v3d: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 09/59] drm/v3d: Delete v3d_dev->dev Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 10/59] drm/v3d: Delete v3d_dev->pdev Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 11/59] drm/udl: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:55   ` Thomas Zimmermann
2020-04-15  7:55     ` [Intel-gfx] " Thomas Zimmermann
2020-04-24 14:55   ` Sam Ravnborg
2020-04-24 14:55     ` [Intel-gfx] " Sam Ravnborg
2020-04-28 13:18     ` Daniel Vetter
2020-04-28 13:18       ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 12/59] drm/udl: don't set drm_device->dev_private Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 13/59] drm/st7735r: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 14/59] drm/st7586: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 15/59] drm/repaper: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 16/59] drm/mi0283qt: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 17/59] drm/ili9486: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 18/59] drm/ili9341: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 19/59] drm/ili9225: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 20/59] drm/hx8357d: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:39 ` [PATCH 21/59] drm/gm12u320: " Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:04   ` Hans de Goede
2020-04-15 15:04     ` [Intel-gfx] " Hans de Goede
2020-04-15  7:39 ` [PATCH 22/59] drm/gm12u320: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-15 15:05   ` Hans de Goede
2020-04-15 15:05     ` [Intel-gfx] " Hans de Goede
2020-04-15  7:39 ` [PATCH 23/59] drm/tidss: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-21 11:03   ` Tomi Valkeinen
2020-04-21 11:03     ` [Intel-gfx] " Tomi Valkeinen
2020-04-15  7:39 ` [PATCH 24/59] drm/tidss: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:39   ` [Intel-gfx] " Daniel Vetter
2020-04-21 11:05   ` Tomi Valkeinen
2020-04-21 11:05     ` [Intel-gfx] " Tomi Valkeinen
2020-04-15  7:40 ` [PATCH 25/59] drm/tidss: Delete tidss->saved_state Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-21 11:05   ` Tomi Valkeinen
2020-04-21 11:05     ` [Intel-gfx] " Tomi Valkeinen
2020-04-15  7:40 ` [PATCH 26/59] drm/qxl: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-24 15:09   ` Sam Ravnborg
2020-04-24 15:09     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 15:09     ` Sam Ravnborg
2020-04-28 14:00     ` Daniel Vetter
2020-04-28 14:00       ` [Intel-gfx] " Daniel Vetter
2020-04-28 14:00       ` Daniel Vetter
2020-04-28 17:00       ` Sam Ravnborg
2020-04-28 17:00         ` [Intel-gfx] " Sam Ravnborg
2020-04-28 17:00         ` Sam Ravnborg
2020-04-28 18:04         ` Daniel Vetter
2020-04-28 18:04           ` [Intel-gfx] " Daniel Vetter
2020-04-28 18:04           ` Daniel Vetter
2020-04-15  7:40 ` [PATCH 27/59] drm/qxl: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-24 15:12   ` Sam Ravnborg
2020-04-24 15:12     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 15:12     ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 28/59] drm/mcde: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15 12:20   ` Linus Walleij
2020-04-15 12:20     ` [Intel-gfx] " Linus Walleij
2020-04-15  7:40 ` [PATCH 29/59] drm/mcde: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 30/59] drm/ingenic: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 31/59] drm/ingenic: Don't set drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 32/59] drm/komeda: use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 33/59] drm/armada: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 34/59] drm/armada: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 35/59] drm/cirrus: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-15  7:40 ` [PATCH 36/59] drm/cirrus: Don't use drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-15  7:40 ` [PATCH 37/59] drm/cirrus: Move to drm/tiny Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-15  8:01   ` Thomas Zimmermann
2020-04-15  8:01     ` [Intel-gfx] " Thomas Zimmermann
2020-04-15  8:01     ` Thomas Zimmermann
2020-04-15  8:19     ` Daniel Vetter
2020-04-15  8:19       ` [Intel-gfx] " Daniel Vetter
2020-04-15  8:19       ` Daniel Vetter
2020-04-15  8:46       ` Thomas Zimmermann
2020-04-15  8:46         ` [Intel-gfx] " Thomas Zimmermann
2020-04-15  8:46         ` Thomas Zimmermann
2020-04-15  9:31         ` Daniel Vetter
2020-04-15  9:31           ` [Intel-gfx] " Daniel Vetter
2020-04-15  9:31           ` Daniel Vetter
2020-04-21  7:37   ` Gerd Hoffmann
2020-04-21  7:37     ` [Intel-gfx] " Gerd Hoffmann
2020-04-21  7:37     ` Gerd Hoffmann
2020-04-24 16:37   ` Sam Ravnborg
2020-04-24 16:37     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 16:37     ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 38/59] drm/i915: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-28 18:52   ` Daniel Vetter
2020-04-28 18:52     ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 39/59] drm/arcpgu: Switch to devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 16:43   ` Sam Ravnborg
2020-04-24 16:43     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 40/59] drm/arcpgu: Stop using drm_device->dev_private Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 16:46   ` Sam Ravnborg
2020-04-24 16:46     ` [Intel-gfx] " Sam Ravnborg
2020-09-04 13:42     ` Daniel Vetter
2020-09-04 13:42       ` [Intel-gfx] " Daniel Vetter
2020-09-04 14:42       ` Sam Ravnborg
2020-09-04 14:42         ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 41/59] drm/arcpgu: Delete arcpgu_priv->fb Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 16:47   ` Sam Ravnborg
2020-04-24 16:47     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 42/59] drm/arc: Embedded a drm_simple_display_pipe Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:34   ` Sam Ravnborg
2020-04-24 17:34     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 43/59] drm/arc: Embedd a drm_connector for sim case Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:34   ` Sam Ravnborg
2020-04-24 17:34     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 44/59] drm/arc: Drop surplus connector registration Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 16:51   ` Sam Ravnborg
2020-04-24 16:51     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 45/59] drm/arc: Use drmm_mode_config_cleanup Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:36   ` Sam Ravnborg
2020-04-24 17:36     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 46/59] drm/arc: Align with simple pipe helpers Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-25 12:24   ` Sam Ravnborg
2020-04-25 12:24     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 47/59] drm/arc: Convert to drm_simple_kms_pipe_helper Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:40   ` Sam Ravnborg
2020-04-24 17:40     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 48/59] drm/arc: Drop fb/crtc check in arc_pgu_update Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:45   ` Sam Ravnborg
2020-04-24 17:45     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 49/59] drm/arc: Inline arcpgu_crtc.c Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:51   ` Sam Ravnborg [this message]
2020-04-24 17:51     ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 50/59] drm/arc: Inline arcpgu_drm_hdmi_init Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:54   ` Sam Ravnborg
2020-04-24 17:54     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 51/59] drm/arc: Inline remaining files Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:56   ` Sam Ravnborg
2020-04-24 17:56     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 52/59] drm/arc: Initialize sim connector before display pipe Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-24 17:58   ` Sam Ravnborg
2020-04-24 17:58     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 53/59] drm/arc: Move to drm/tiny Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  8:04   ` Thomas Zimmermann
2020-04-15  8:04     ` [Intel-gfx] " Thomas Zimmermann
2020-04-15  8:22     ` Daniel Vetter
2020-04-15  8:22       ` [Intel-gfx] " Daniel Vetter
2020-04-15  9:45   ` Sam Ravnborg
2020-04-15  9:45     ` [Intel-gfx] " Sam Ravnborg
2020-04-15 12:02     ` Alexey Brodkin
2020-04-15 12:02       ` [Intel-gfx] " Alexey Brodkin
2020-04-15 12:20       ` Daniel Vetter
2020-04-15 12:20         ` [Intel-gfx] " Daniel Vetter
2020-04-28 14:08         ` Daniel Vetter
2020-04-28 14:08           ` [Intel-gfx] " Daniel Vetter
2020-05-08 13:56           ` Alexey Brodkin
2020-05-08 13:56             ` [Intel-gfx] " Alexey Brodkin
2020-05-08 18:07             ` Daniel Vetter
2020-05-08 18:07               ` [Intel-gfx] " Daniel Vetter
2020-06-04  8:05               ` Daniel Vetter
2020-06-04  8:05                 ` [Intel-gfx] " Daniel Vetter
2020-06-04 10:38                 ` Eugeniy Paltsev
2020-06-04 10:38                   ` [Intel-gfx] " Eugeniy Paltsev
2020-06-04 11:19                   ` Daniel Vetter
2020-06-04 11:19                     ` [Intel-gfx] " Daniel Vetter
2020-06-04 19:00                     ` Eugeniy Paltsev
2020-06-04 19:00                       ` [Intel-gfx] " Eugeniy Paltsev
2020-06-05 19:55                       ` Daniel Vetter
2020-06-05 19:55                         ` [Intel-gfx] " Daniel Vetter
2020-06-09 12:08                         ` Eugeniy Paltsev
2020-06-09 12:08                           ` [Intel-gfx] " Eugeniy Paltsev
2020-06-09 13:02                           ` Daniel Vetter
2020-06-09 13:02                             ` [Intel-gfx] " Daniel Vetter
2020-07-17  9:04                             ` Daniel Vetter
2020-07-17  9:04                               ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 54/59] drm/aspeed: Drop aspeed_gfx->fbdev Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-24 18:00   ` Sam Ravnborg
2020-04-24 18:00     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 18:00     ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 55/59] drm/aspeed: Use devm_drm_dev_alloc Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-24 18:02   ` Sam Ravnborg
2020-04-24 18:02     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 18:02     ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 56/59] drm/aspeed: Use managed drmm_mode_config_cleanup Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-24 18:10   ` Sam Ravnborg
2020-04-24 18:10     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 18:10     ` Sam Ravnborg
2020-04-28 14:12     ` Daniel Vetter
2020-04-28 14:12       ` [Intel-gfx] " Daniel Vetter
2020-04-28 14:12       ` Daniel Vetter
2020-04-28 17:03       ` Sam Ravnborg
2020-04-28 17:03         ` [Intel-gfx] " Sam Ravnborg
2020-04-28 17:03         ` Sam Ravnborg
2020-04-15  7:40 ` [PATCH 57/59] drm/ast: Use managed pci functions Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:52   ` Thomas Zimmermann
2020-04-15  7:52     ` [Intel-gfx] " Thomas Zimmermann
2020-04-15  8:09     ` Daniel Vetter
2020-04-15  8:09       ` [Intel-gfx] " Daniel Vetter
2020-04-15  8:17       ` Daniel Vetter
2020-04-15  8:17         ` [Intel-gfx] " Daniel Vetter
2020-04-15 12:23         ` Daniel Vetter
2020-04-15 12:23           ` [Intel-gfx] " Daniel Vetter
2020-06-11 12:04   ` Thomas Zimmermann
2020-06-11 12:04     ` [Intel-gfx] " Thomas Zimmermann
2020-06-16 11:55     ` Daniel Vetter
2020-06-16 11:55       ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40 ` [PATCH 58/59] drm/ast: Drop explicit connector register/unregister Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:53   ` Thomas Zimmermann
2020-04-15  7:53     ` [Intel-gfx] " Thomas Zimmermann
2020-04-24 18:11   ` Sam Ravnborg
2020-04-24 18:11     ` [Intel-gfx] " Sam Ravnborg
2020-04-15  7:40 ` [PATCH 59/59] drm/bochs: Remove explicit drm_connector_register Daniel Vetter
2020-04-15  7:40   ` [Intel-gfx] " Daniel Vetter
2020-04-15  7:40   ` Daniel Vetter
2020-04-21  7:39   ` Gerd Hoffmann
2020-04-21  7:39     ` [Intel-gfx] " Gerd Hoffmann
2020-04-21  7:39     ` Gerd Hoffmann
2020-04-24 18:11   ` Sam Ravnborg
2020-04-24 18:11     ` [Intel-gfx] " Sam Ravnborg
2020-04-24 18:11     ` Sam Ravnborg
2020-04-15  8:04 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for devm_drm_dev_alloc, v2 Patchwork
2020-04-15  8:23 ` [Intel-gfx] ✗ Fi.CI.DOCS: " Patchwork
2020-04-15  8:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-04-15 23:45 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-06-04 11:58 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for devm_drm_dev_alloc, v2 (rev2) Patchwork
2020-06-04 19:36 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for devm_drm_dev_alloc, v2 (rev3) Patchwork

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=20200424175102.GF7074@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.