[Intel-gfx] [PATCH 07/29] drm/i915/tc: Move the intel_tc_port struct declaration to intel_tc.c
Kahola, Mika
mika.kahola at intel.com
Fri Mar 24 13:08:58 UTC 2023
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Imre
> Deak
> Sent: Thursday, March 23, 2023 4:20 PM
> To: intel-gfx at lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 07/29] drm/i915/tc: Move the intel_tc_port struct
> declaration to intel_tc.c
>
> Move the intel_tc_port struct to intel_tc.c for better isolation. This requires
> allocating the struct dynamically.
>
Reviewed-by: Mika Kahola <mika.kahola at intel.com>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_ddi.c | 7 +--
> .../drm/i915/display/intel_display_types.h | 4 +-
> drivers/gpu/drm/i915/display/intel_tc.c | 45 +++++++++++++++++--
> drivers/gpu/drm/i915/display/intel_tc.h | 30 +------------
> 4 files changed, 49 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 73240cf78c8bf..dac3ec8fbbc11 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -3843,7 +3843,7 @@ static void intel_ddi_encoder_destroy(struct
> drm_encoder *encoder)
>
> intel_dp_encoder_flush_work(encoder);
> if (intel_phy_is_tc(i915, phy))
> - intel_tc_port_flush_work(dig_port);
> + intel_tc_port_cleanup(dig_port);
> intel_display_power_flush_work(i915);
>
> drm_encoder_cleanup(encoder);
> @@ -4284,7 +4284,7 @@ static void intel_ddi_encoder_shutdown(struct
> intel_encoder *encoder)
> if (!intel_phy_is_tc(i915, phy))
> return;
>
> - intel_tc_port_flush_work(dig_port);
> + intel_tc_port_cleanup(dig_port);
> }
>
> #define port_tc_name(port) ((port) - PORT_TC1 + '1') @@ -4541,7 +4541,8 @@
> void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
> is_legacy ? "legacy" : "non-legacy");
> }
>
> - intel_tc_port_init(dig_port, is_legacy);
> + if (intel_tc_port_init(dig_port, is_legacy) < 0)
> + goto err;
>
> encoder->update_prepare = intel_ddi_update_prepare;
> encoder->update_complete = intel_ddi_update_complete; diff -
> -git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 0130c7b7f0232..ce24e58b2a825 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -54,13 +54,13 @@
> #include "intel_display_power.h"
> #include "intel_dpll_mgr.h"
> #include "intel_wm_types.h"
> -#include "intel_tc.h"
>
> struct drm_printer;
> struct __intel_global_objs_state;
> struct intel_ddi_buf_trans;
> struct intel_fbc;
> struct intel_connector;
> +struct intel_tc_port;
>
> /*
> * Display related stuff
> @@ -1781,7 +1781,7 @@ struct intel_digital_port {
> intel_wakeref_t ddi_io_wakeref;
> intel_wakeref_t aux_wakeref;
>
> - struct intel_tc_port tc;
> + struct intel_tc_port *tc;
>
> /* protects num_hdcp_streams reference count, hdcp_port_data and
> hdcp_auth_status */
> struct mutex hdcp_mutex;
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
> b/drivers/gpu/drm/i915/display/intel_tc.c
> index 48a59a675cd57..2a04c5ea44ade 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.c
> +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> @@ -15,6 +15,28 @@
> #include "intel_mg_phy_regs.h"
> #include "intel_tc.h"
>
> +enum tc_port_mode {
> + TC_PORT_DISCONNECTED,
> + TC_PORT_TBT_ALT,
> + TC_PORT_DP_ALT,
> + TC_PORT_LEGACY,
> +};
> +
> +struct intel_tc_port {
> + struct intel_digital_port *dig_port;
> + struct mutex lock; /* protects the TypeC port mode */
> + intel_wakeref_t lock_wakeref;
> + enum intel_display_power_domain lock_power_domain;
> + struct delayed_work disconnect_phy_work;
> + int link_refcount;
> + bool legacy_port:1;
> + char port_name[8];
> + enum tc_port_mode mode;
> + enum tc_port_mode init_mode;
> + enum phy_fia phy_fia;
> + u8 phy_fia_idx;
> +};
> +
> static u32 tc_phy_hpd_live_status(struct intel_tc_port *tc); static bool
> tc_phy_is_ready(struct intel_tc_port *tc); static bool
> tc_phy_take_ownership(struct intel_tc_port *tc, bool take); @@ -36,7 +58,7
> @@ static const char *tc_port_mode_name(enum tc_port_mode mode)
>
> static struct intel_tc_port *to_tc_port(struct intel_digital_port *dig_port) {
> - return &dig_port->tc;
> + return dig_port->tc;
> }
>
> static struct drm_i915_private *tc_to_i915(struct intel_tc_port *tc) @@ -
> 1158,16 +1180,21 @@ tc_port_load_fia_params(struct drm_i915_private *i915,
> struct intel_tc_port *tc)
> }
> }
>
> -void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy)
> +int intel_tc_port_init(struct intel_digital_port *dig_port, bool
> +is_legacy)
> {
> struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> - struct intel_tc_port *tc = to_tc_port(dig_port);
> + struct intel_tc_port *tc;
> enum port port = dig_port->base.port;
> enum tc_port tc_port = intel_port_to_tc(i915, port);
>
> if (drm_WARN_ON(&i915->drm, tc_port == TC_PORT_NONE))
> - return;
> + return -EINVAL;
> +
> + tc = kzalloc(sizeof(*tc), GFP_KERNEL);
> + if (!tc)
> + return -ENOMEM;
>
> + dig_port->tc = tc;
> tc->dig_port = dig_port;
>
> snprintf(tc->port_name, sizeof(tc->port_name), @@ -1181,4 +1208,14
> @@ void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy)
> tc_port_load_fia_params(i915, tc);
>
> intel_tc_port_init_mode(dig_port);
> +
> + return 0;
> +}
> +
> +void intel_tc_port_cleanup(struct intel_digital_port *dig_port) {
> + intel_tc_port_flush_work(dig_port);
> +
> + kfree(dig_port->tc);
> + dig_port->tc = NULL;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.h
> b/drivers/gpu/drm/i915/display/intel_tc.h
> index cc3a7fd4ac102..dd0810f9ea95e 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.h
> +++ b/drivers/gpu/drm/i915/display/intel_tc.h
> @@ -6,39 +6,12 @@
> #ifndef __INTEL_TC_H__
> #define __INTEL_TC_H__
>
> -#include <linux/mutex.h>
> #include <linux/types.h>
>
> -#include "intel_display.h"
> -#include "intel_display_power.h"
> -#include "intel_wakeref.h"
> -
> struct intel_crtc_state;
> struct intel_digital_port;
> struct intel_encoder;
>
> -enum tc_port_mode {
> - TC_PORT_DISCONNECTED,
> - TC_PORT_TBT_ALT,
> - TC_PORT_DP_ALT,
> - TC_PORT_LEGACY,
> -};
> -
> -struct intel_tc_port {
> - struct intel_digital_port *dig_port;
> - struct mutex lock; /* protects the TypeC port mode */
> - intel_wakeref_t lock_wakeref;
> - enum intel_display_power_domain lock_power_domain;
> - struct delayed_work disconnect_phy_work;
> - int link_refcount;
> - bool legacy_port:1;
> - char port_name[8];
> - enum tc_port_mode mode;
> - enum tc_port_mode init_mode;
> - enum phy_fia phy_fia;
> - u8 phy_fia_idx;
> -};
> -
> bool intel_tc_port_in_tbt_alt_mode(struct intel_digital_port *dig_port); bool
> intel_tc_port_in_dp_alt_mode(struct intel_digital_port *dig_port); bool
> intel_tc_port_in_legacy_mode(struct intel_digital_port *dig_port); @@ -63,7
> +36,8 @@ void intel_tc_port_get_link(struct intel_digital_port *dig_port, void
> intel_tc_port_put_link(struct intel_digital_port *dig_port); bool
> intel_tc_port_ref_held(struct intel_digital_port *dig_port);
>
> -void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy);
> +int intel_tc_port_init(struct intel_digital_port *dig_port, bool
> +is_legacy); void intel_tc_port_cleanup(struct intel_digital_port
> +*dig_port);
>
> bool intel_tc_cold_requires_aux_pw(struct intel_digital_port *dig_port);
>
> --
> 2.37.1
More information about the Intel-gfx
mailing list