From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Jyri Sarha <jsarha@ti.com>
Cc: tomi.valkeinen@ti.com, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v4 1/6] drm/omap: Get rid of DRM_OMAP_NUM_CRTCS config option
Date: Fri, 31 Mar 2017 00:58:38 +0300 [thread overview]
Message-ID: <8984062.M8p4ZOXebu@avalon> (raw)
In-Reply-To: <f5224faa1619edacbe13bb486387dc5ce3c12beb.1490366823.git.jsarha@ti.com>
Hi Jyri,
Thank you for the patch.
On Friday 24 Mar 2017 16:47:51 Jyri Sarha wrote:
> Allocate one CRTC for each connected output and get rid of
> DRM_OMAP_NUM_CRTCS config option. We still can not create more CRTCs
> than we have DSS display managers. We also reserve one overlay per
> CRTC for primary plane so we can not have more CRTCs than we have
> overlays either.
>
> Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/gpu/drm/omapdrm/Kconfig | 9 ------
> drivers/gpu/drm/omapdrm/omap_drv.c | 59 ++++++++---------------------------
> 2 files changed, 16 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/Kconfig
> b/drivers/gpu/drm/omapdrm/Kconfig index 556f81f..b3d08c5 100644
> --- a/drivers/gpu/drm/omapdrm/Kconfig
> +++ b/drivers/gpu/drm/omapdrm/Kconfig
> @@ -10,15 +10,6 @@ config DRM_OMAP
>
> if DRM_OMAP
>
> -config DRM_OMAP_NUM_CRTCS
> - int "Number of CRTCs"
> - range 1 10
> - default 1 if ARCH_OMAP2 || ARCH_OMAP3
> - default 2 if ARCH_OMAP4
> - help
> - Select the number of video overlays which can be used as
framebuffers.
> - The remaining overlays are reserved for video.
> -
> source "drivers/gpu/drm/omapdrm/dss/Kconfig"
> source "drivers/gpu/drm/omapdrm/displays/Kconfig"
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c
> b/drivers/gpu/drm/omapdrm/omap_drv.c index ad8d16c..b040f5f 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -34,11 +34,6 @@
> #define DRIVER_MINOR 0
> #define DRIVER_PATCHLEVEL 0
>
> -static int num_crtc = CONFIG_DRM_OMAP_NUM_CRTCS;
> -
> -MODULE_PARM_DESC(num_crtc, "Number of overlays to use as CRTCs");
> -module_param(num_crtc, int, 0600);
> -
> /*
> * mode config funcs
> */
> @@ -319,7 +314,7 @@ static int omap_modeset_init(struct drm_device *dev)
> struct omap_dss_device *dssdev = NULL;
> int num_ovls = priv->dispc_ops->get_num_ovls();
> int num_mgrs = priv->dispc_ops->get_num_mgrs();
> - int num_crtcs;
> + int num_crtcs = 0;
> int i, id = 0;
> int ret;
> u32 possible_crtcs;
> @@ -331,12 +326,15 @@ static int omap_modeset_init(struct drm_device *dev)
> return ret;
>
> /*
> - * We usually don't want to create a CRTC for each manager, at least
> - * not until we have a way to expose private planes to userspace.
> - * Otherwise there would not be enough video pipes left for drm
planes.
> - * We use the num_crtc argument to limit the number of crtcs we
create.
> + * Let's create one CRTC for each connected DSS device if we
> + * have display managers and overlays (for primary planes) for
> + * them.
> */
> - num_crtcs = min3(num_crtc, num_mgrs, num_ovls);
> + for_each_dss_dev(dssdev)
> + if (omapdss_device_is_connected(dssdev))
> + num_crtcs++;
> +
> + num_crtcs = min3(num_crtcs, num_mgrs, num_ovls);
> possible_crtcs = (1 << num_crtcs) - 1;
>
> dssdev = NULL;
> @@ -376,11 +374,9 @@ static int omap_modeset_init(struct drm_device *dev)
> drm_mode_connector_attach_encoder(connector, encoder);
>
> /*
> - * if we have reached the limit of the crtcs we are allowed to
> - * create, let's not try to look for a crtc for this
> - * panel/encoder and onwards, we will, of course, populate the
> - * the possible_crtcs field for all the encoders with the
final
> - * set of crtcs we create
> + * if we have reached the limit of the crtcs we can
> + * create, let's not try to create a crtc for this
> + * panel/encoder and onwards.
> */
> if (id == num_crtcs)
> continue;
> @@ -415,33 +411,6 @@ static int omap_modeset_init(struct drm_device *dev)
> }
>
> /*
> - * we have allocated crtcs according to the need of the
panels/encoders,
> - * adding more crtcs here if needed
> - */
> - for (; id < num_crtcs; id++) {
> -
> - /* find a free manager for this crtc */
> - for (i = 0; i < num_mgrs; i++) {
> - if (!channel_used(dev, i))
> - break;
> - }
> -
> - if (i == num_mgrs) {
> - /* this shouldn't really happen */
> - dev_err(dev->dev, "no managers left for crtc\n");
> - return -ENOMEM;
> - }
> -
> - ret = omap_modeset_create_crtc(dev, id, i,
> - possible_crtcs);
> - if (ret < 0) {
> - dev_err(dev->dev,
> - "could not create CRTC (channel %u)\n", i);
> - return ret;
> - }
> - }
> -
> - /*
> * Create normal planes for the remaining overlays:
> */
> for (; id < num_ovls; id++) {
> @@ -456,6 +425,10 @@ static int omap_modeset_init(struct drm_device *dev)
> priv->planes[priv->num_planes++] = plane;
> }
>
> + /*
> + * populate the the possible_crtcs field for all the encoders
> + * we created.
> + */
> for (i = 0; i < priv->num_encoders; i++) {
> struct drm_encoder *encoder = priv->encoders[i];
> struct omap_dss_device *dssdev =
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2017-03-30 21:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-24 14:47 [PATCH v4 0/6] drm/omap: Remove CONFIG_DRM_OMAP_NUM_CRTCS, cleanup & CTM Jyri Sarha
2017-03-24 14:47 ` [PATCH v4 1/6] drm/omap: Get rid of DRM_OMAP_NUM_CRTCS config option Jyri Sarha
2017-03-30 21:58 ` Laurent Pinchart [this message]
2017-03-24 14:47 ` [PATCH v4 2/6] drm/omap: Rename enum omap_plane to enum omap_plane_id Jyri Sarha
2017-03-30 22:09 ` Laurent Pinchart
2017-03-24 14:47 ` [PATCH v4 3/6] drm/omap: Fix one ugly indentation style break left by coccinelle Jyri Sarha
2017-03-30 22:10 ` Laurent Pinchart
2017-03-24 14:47 ` [PATCH v4 4/6] drm/omap: Remove the obsolete #define omap_plane _omap_plane hack Jyri Sarha
2017-03-30 22:11 ` Laurent Pinchart
2017-03-24 14:47 ` [PATCH v4 5/6] drm/omap: Major omap_modeset_init() cleanup Jyri Sarha
2017-03-24 14:47 ` [PATCH v4 6/6] drm/omap: Implement CTM property for CRTC using OVL managers CPR matrix Jyri Sarha
2017-03-30 22:44 ` Laurent Pinchart
2017-03-29 7:47 ` [PATCH v4 0/6] drm/omap: Remove CONFIG_DRM_OMAP_NUM_CRTCS, cleanup & CTM Tomi Valkeinen
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=8984062.M8p4ZOXebu@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jsarha@ti.com \
--cc=tomi.valkeinen@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.