From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "José Roberto de Souza" <jose.souza@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
intel-gfx@lists.freedesktop.org,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 1/2] drm/connector: Share with non-atomic drivers the function to get the single encoder
Date: Fri, 13 Sep 2019 14:58:08 +0300 [thread overview]
Message-ID: <20190913115808.GB1208@intel.com> (raw)
In-Reply-To: <20190912195132.62574-1-jose.souza@intel.com>
On Thu, Sep 12, 2019 at 12:51:31PM -0700, José Roberto de Souza wrote:
> This 3 non-atomic drivers all have the same function getting the
> only encoder available in the connector, also atomic drivers have
> this fallback. So moving it a common place and sharing between atomic
> and non-atomic drivers.
>
> While at it I also removed the mention of
> drm_atomic_helper_best_encoder() that was renamed in
> commit 297e30b5d9b6 ("drm/atomic-helper: Unexport
> drm_atomic_helper_best_encoder").
>
> v3: moving drm_connector_get_single_encoder to drm_kms_helper module
>
> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: dri-devel@lists.freedesktop.org
> Cc: intel-gfx@lists.freedesktop.org
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
lgtm
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/ast/ast_mode.c | 12 ------------
> drivers/gpu/drm/drm_atomic_helper.c | 15 ++-------------
> drivers/gpu/drm/drm_crtc_helper.c | 17 ++++++++++++++++-
> drivers/gpu/drm/drm_crtc_helper_internal.h | 3 +++
> drivers/gpu/drm/mgag200/mgag200_mode.c | 11 -----------
> drivers/gpu/drm/udl/udl_connector.c | 8 --------
> include/drm/drm_modeset_helper_vtables.h | 6 +++---
> 7 files changed, 24 insertions(+), 48 deletions(-)
>
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index d349c721501c..eef95e1af06b 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -687,17 +687,6 @@ static void ast_encoder_destroy(struct drm_encoder *encoder)
> kfree(encoder);
> }
>
> -
> -static struct drm_encoder *ast_best_single_encoder(struct drm_connector *connector)
> -{
> - int enc_id = connector->encoder_ids[0];
> - /* pick the encoder ids */
> - if (enc_id)
> - return drm_encoder_find(connector->dev, NULL, enc_id);
> - return NULL;
> -}
> -
> -
> static const struct drm_encoder_funcs ast_enc_funcs = {
> .destroy = ast_encoder_destroy,
> };
> @@ -847,7 +836,6 @@ static void ast_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
> .mode_valid = ast_mode_valid,
> .get_modes = ast_get_modes,
> - .best_encoder = ast_best_single_encoder,
> };
>
> static const struct drm_connector_funcs ast_connector_funcs = {
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 4706439fb490..9d7e4da6c292 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -97,17 +97,6 @@ drm_atomic_helper_plane_changed(struct drm_atomic_state *state,
> }
> }
>
> -/*
> - * For connectors that support multiple encoders, either the
> - * .atomic_best_encoder() or .best_encoder() operation must be implemented.
> - */
> -static struct drm_encoder *
> -pick_single_encoder_for_connector(struct drm_connector *connector)
> -{
> - WARN_ON(connector->encoder_ids[1]);
> - return drm_encoder_find(connector->dev, NULL, connector->encoder_ids[0]);
> -}
> -
> static int handle_conflicting_encoders(struct drm_atomic_state *state,
> bool disable_conflicting_encoders)
> {
> @@ -135,7 +124,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
> else if (funcs->best_encoder)
> new_encoder = funcs->best_encoder(connector);
> else
> - new_encoder = pick_single_encoder_for_connector(connector);
> + new_encoder = drm_connector_get_single_encoder(connector);
>
> if (new_encoder) {
> if (encoder_mask & drm_encoder_mask(new_encoder)) {
> @@ -359,7 +348,7 @@ update_connector_routing(struct drm_atomic_state *state,
> else if (funcs->best_encoder)
> new_encoder = funcs->best_encoder(connector);
> else
> - new_encoder = pick_single_encoder_for_connector(connector);
> + new_encoder = drm_connector_get_single_encoder(connector);
>
> if (!new_encoder) {
> DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n",
> diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
> index a51824a7e7c1..4a7447a53cea 100644
> --- a/drivers/gpu/drm/drm_crtc_helper.c
> +++ b/drivers/gpu/drm/drm_crtc_helper.c
> @@ -460,6 +460,17 @@ drm_crtc_helper_disable(struct drm_crtc *crtc)
> __drm_helper_disable_unused_functions(dev);
> }
>
> +/*
> + * For connectors that support multiple encoders, either the
> + * .atomic_best_encoder() or .best_encoder() operation must be implemented.
> + */
> +struct drm_encoder *
> +drm_connector_get_single_encoder(struct drm_connector *connector)
> +{
> + WARN_ON(connector->encoder_ids[1]);
> + return drm_encoder_find(connector->dev, NULL, connector->encoder_ids[0]);
> +}
> +
> /**
> * drm_crtc_helper_set_config - set a new config from userspace
> * @set: mode set configuration
> @@ -625,7 +636,11 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set,
> new_encoder = connector->encoder;
> for (ro = 0; ro < set->num_connectors; ro++) {
> if (set->connectors[ro] == connector) {
> - new_encoder = connector_funcs->best_encoder(connector);
> + if (connector_funcs->best_encoder)
> + new_encoder = connector_funcs->best_encoder(connector);
> + else
> + new_encoder = drm_connector_get_single_encoder(connector);
> +
> /* if we can't get an encoder for a connector
> we are setting now - then fail */
> if (new_encoder == NULL)
> diff --git a/drivers/gpu/drm/drm_crtc_helper_internal.h b/drivers/gpu/drm/drm_crtc_helper_internal.h
> index b5ac1581e623..f0a66ef47e5a 100644
> --- a/drivers/gpu/drm/drm_crtc_helper_internal.h
> +++ b/drivers/gpu/drm/drm_crtc_helper_internal.h
> @@ -75,3 +75,6 @@ enum drm_mode_status drm_encoder_mode_valid(struct drm_encoder *encoder,
> const struct drm_display_mode *mode);
> enum drm_mode_status drm_connector_mode_valid(struct drm_connector *connector,
> struct drm_display_mode *mode);
> +
> +struct drm_encoder *
> +drm_connector_get_single_encoder(struct drm_connector *connector);
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index 5e778b5f1a10..68226556044b 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1638,16 +1638,6 @@ static enum drm_mode_status mga_vga_mode_valid(struct drm_connector *connector,
> return MODE_OK;
> }
>
> -static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
> - *connector)
> -{
> - int enc_id = connector->encoder_ids[0];
> - /* pick the encoder ids */
> - if (enc_id)
> - return drm_encoder_find(connector->dev, NULL, enc_id);
> - return NULL;
> -}
> -
> static void mga_connector_destroy(struct drm_connector *connector)
> {
> struct mga_connector *mga_connector = to_mga_connector(connector);
> @@ -1659,7 +1649,6 @@ static void mga_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
> .get_modes = mga_vga_get_modes,
> .mode_valid = mga_vga_mode_valid,
> - .best_encoder = mga_connector_best_encoder,
> };
>
> static const struct drm_connector_funcs mga_vga_connector_funcs = {
> diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c
> index ddb61a60c610..b4ae3e89a7b4 100644
> --- a/drivers/gpu/drm/udl/udl_connector.c
> +++ b/drivers/gpu/drm/udl/udl_connector.c
> @@ -90,13 +90,6 @@ udl_detect(struct drm_connector *connector, bool force)
> return connector_status_connected;
> }
>
> -static struct drm_encoder*
> -udl_best_single_encoder(struct drm_connector *connector)
> -{
> - int enc_id = connector->encoder_ids[0];
> - return drm_encoder_find(connector->dev, NULL, enc_id);
> -}
> -
> static int udl_connector_set_property(struct drm_connector *connector,
> struct drm_property *property,
> uint64_t val)
> @@ -120,7 +113,6 @@ static void udl_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_helper_funcs udl_connector_helper_funcs = {
> .get_modes = udl_get_modes,
> .mode_valid = udl_mode_valid,
> - .best_encoder = udl_best_single_encoder,
> };
>
> static const struct drm_connector_funcs udl_connector_funcs = {
> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
> index 6b18c8adfe9d..b55412c6ce3a 100644
> --- a/include/drm/drm_modeset_helper_vtables.h
> +++ b/include/drm/drm_modeset_helper_vtables.h
> @@ -955,8 +955,8 @@ struct drm_connector_helper_funcs {
> * @atomic_best_encoder.
> *
> * You can leave this function to NULL if the connector is only
> - * attached to a single encoder and you are using the atomic helpers.
> - * In this case, the core will call drm_atomic_helper_best_encoder()
> + * attached to a single encoder.
> + * In this case, the core will call drm_connector_get_single_encoder()
> * for you.
> *
> * RETURNS:
> @@ -977,7 +977,7 @@ struct drm_connector_helper_funcs {
> *
> * This function is used by drm_atomic_helper_check_modeset().
> * If it is not implemented, the core will fallback to @best_encoder
> - * (or drm_atomic_helper_best_encoder() if @best_encoder is NULL).
> + * (or drm_connector_get_single_encoder() if @best_encoder is NULL).
> *
> * NOTE:
> *
> --
> 2.23.0
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-09-13 11:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-12 19:51 [PATCH 1/2] drm/connector: Share with non-atomic drivers the function to get the single encoder José Roberto de Souza
[not found] ` <20190912195132.62574-1-jose.souza-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2019-09-12 19:51 ` [PATCH 2/2] drm/connector: Allow max possible encoders to attach to a connector José Roberto de Souza
2019-09-12 21:45 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/connector: Share with non-atomic drivers the function to get the single encoder Patchwork
2019-09-12 21:47 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-09-12 22:21 ` ✓ Fi.CI.BAT: success " Patchwork
2019-09-13 11:58 ` Ville Syrjälä [this message]
2019-09-13 12:19 ` [PATCH 1/2] " Laurent Pinchart
2019-09-13 13:16 ` ✓ Fi.CI.IGT: success for series starting with [1/2] " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2019-09-11 17:56 [PATCH 1/2] " José Roberto de Souza
2019-09-11 18:10 ` Ville Syrjälä
2019-09-11 20:01 ` Souza, Jose
2019-09-11 20:13 ` Ville Syrjälä
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=20190913115808.GB1208@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jose.souza@intel.com \
--cc=laurent.pinchart@ideasonboard.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.