Signed-off-by: Harry Wentland <harry.wentl...@amd.com>
Acked-by: Harry Wentland <harry.wentl...@amd.com>
---
 .../gpu/drm/amd/dal/dc/adapter/adapter_service.c   | 16 ---------------
 .../gpu/drm/amd/dal/dc/adapter/adapter_service.h   | 24 ----------------------
 drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c      |  2 +-
 drivers/gpu/drm/amd/dal/dc/core/dc.c               | 20 +++++++++++++++++-
 drivers/gpu/drm/amd/dal/dc/core/dc_link.c          |  2 +-
 drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c      |  2 +-
 drivers/gpu/drm/amd/dal/dc/dc_types.h              |  1 +
 drivers/gpu/drm/amd/dal/dc/dce/dce_link_encoder.c  |  2 +-
 .../amd/dal/include/adapter_service_interface.h    | 20 +++++++++++++++++-
 9 files changed, 43 insertions(+), 46 deletions(-)

diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c 
b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
index 119b763b2e90..6d2f5762ef63 100644
--- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
@@ -610,7 +610,6 @@ static void adapter_service_destruct(
        struct dc_bios *dcb = as->ctx->dc_bios;
 
        dal_i2caux_destroy(&as->i2caux);
-       dal_gpio_service_destroy(&as->gpio_service);
        dal_asic_capability_destroy(&as->asic_cap);
 
        dcb->funcs->destroy_integrated_info(dcb, &as->integrated_info);
@@ -674,18 +673,6 @@ static bool adapter_service_construct(
 
        dcb = as->ctx->dc_bios;
 
-
-       /* Create GPIO service */
-       as->gpio_service = dal_gpio_service_create(
-                       dce_version,
-                       as->dce_environment,
-                       as->ctx);
-
-       if (!as->gpio_service) {
-               ASSERT_CRITICAL(false);
-               goto failed_to_create_gpio_service;
-       }
-
        /* Create I2C AUX */
        as->i2caux = dal_i2caux_create(as, as->ctx);
 
@@ -714,9 +701,6 @@ failed_to_generate_features:
        dal_i2caux_destroy(&as->i2caux);
 
 failed_to_create_i2caux:
-       dal_gpio_service_destroy(&as->gpio_service);
-
-failed_to_create_gpio_service:
        dal_asic_capability_destroy(&as->asic_cap);
 
        return false;
diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h 
b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h
index 0e651206af16..823322bfc3a2 100644
--- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h
+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h
@@ -30,29 +30,5 @@
 #include "dc_bios_types.h"
 #include "include/adapter_service_interface.h"
 
-#define SIZEOF_BACKLIGHT_LUT 101
-
-/*
- * Forward declaration
- */
-struct gpio_service;
-struct asic_cap;
-
-/* Adapter service */
-struct adapter_service {
-       struct dc_context *ctx;
-       struct asic_capability *asic_cap;
-       enum dce_environment dce_environment;
-       struct gpio_service *gpio_service;
-       struct i2caux *i2caux;
-       struct integrated_info *integrated_info;
-       uint32_t platform_methods_mask;
-       uint32_t ac_level_percentage;
-       uint32_t dc_level_percentage;
-       uint32_t backlight_caps_initialized;
-       uint32_t backlight_8bit_lut[SIZEOF_BACKLIGHT_LUT];
-       uint32_t adapter_feature_set[FEATURE_MAXIMUM/32];
-       uint32_t default_values[FEATURE_MAXIMUM];
-};
 
 #endif /* __DAL_ADAPTER_SERVICE_H__ */
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c 
b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
index 0647156f313c..1080c6c5527b 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
@@ -2932,7 +2932,7 @@ static bool i2c_read(
                i2c_info->i2c_hw_assist,
                i2c_info->i2c_line };
 
-       ddc = dal_gpio_create_ddc(as->gpio_service,
+       ddc = dal_gpio_create_ddc(as->ctx->gpio_service,
                i2c_info->gpio_info.clk_a_register_index,
                (1 << i2c_info->gpio_info.clk_a_shift), &hw_info);
 
diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c 
b/drivers/gpu/drm/amd/dal/dc/core/dc.c
index c66cb6607752..e4990983924e 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c
@@ -537,7 +537,7 @@ static bool construct(struct core_dc *dc,
 
                if (!dc_ctx->dc_bios) {
                        ASSERT_CRITICAL(false);
-                       goto as_fail;
+                       goto bios_fail;
                }
 
                dc_ctx->created_bios = true;
@@ -554,6 +554,17 @@ static bool construct(struct core_dc *dc,
                }
        }
 
+       /* Create GPIO service */
+       dc_ctx->gpio_service = dal_gpio_service_create(
+                       dc_version,
+                       as->dce_environment,
+                       as->ctx);
+
+       if (!dc_ctx->gpio_service) {
+               ASSERT_CRITICAL(false);
+               goto gpio_fail;
+       }
+
        dc->res_pool = dc_create_resource_pool(
                        as,
                        dc,
@@ -574,9 +585,15 @@ static bool construct(struct core_dc *dc,
 create_links_fail:
        dc->res_pool->funcs->destroy(&dc->res_pool);
 create_resource_fail:
+       if (dc->ctx->gpio_service)
+               dal_gpio_service_destroy(&dc_ctx->gpio_service);
+gpio_fail:
        if (as)
                dal_adapter_service_destroy(&as);
 as_fail:
+       if (dc->ctx->created_bios)
+               dal_bios_parser_destroy(&dc->ctx->dc_bios);
+bios_fail:
        dal_logger_destroy(&dc_ctx->logger);
 logger_fail:
        dm_free(dc->current_context);
@@ -588,6 +605,7 @@ ctx_fail:
 
 static void destruct(struct core_dc *dc)
 {
+       dal_gpio_service_destroy(&dc->ctx->gpio_service);
        resource_validate_ctx_destruct(dc->current_context);
        dm_free(dc->current_context);
        dm_free(dc->temp_flip_context);
diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c 
b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
index c2eb27a257d6..fb902558d6a2 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
@@ -110,7 +110,7 @@ static struct gpio *get_hpd_gpio(const struct core_link 
*link)
        }
 
        return dal_gpio_service_create_irq(
-               link->adapter_srv->gpio_service,
+               link->ctx->gpio_service,
                pin_info.offset,
                pin_info.mask);
 }
diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c 
b/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
index ffcd2a10d6f6..fd60a4c6d2a3 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
@@ -280,7 +280,7 @@ static bool construct(
        enum connector_id connector_id =
                dal_graphics_object_id_get_connector_id(init_data->id);
 
-       struct gpio_service *gpio_service = init_data->as->gpio_service;
+       struct gpio_service *gpio_service = init_data->ctx->gpio_service;
        struct graphics_object_i2c_info i2c_info;
        struct gpio_ddc_hw_info hw_info;
        struct dc_bios *dcb = init_data->ctx->dc_bios;
diff --git a/drivers/gpu/drm/amd/dal/dc/dc_types.h 
b/drivers/gpu/drm/amd/dal/dc/dc_types.h
index c71f81f0cd95..573db6ef5a1d 100644
--- a/drivers/gpu/drm/amd/dal/dc/dc_types.h
+++ b/drivers/gpu/drm/amd/dal/dc/dc_types.h
@@ -75,6 +75,7 @@ struct dc_context {
 
        struct dc_bios *dc_bios;
        bool created_bios;
+       struct gpio_service *gpio_service;
 };
 
 /*
diff --git a/drivers/gpu/drm/amd/dal/dc/dce/dce_link_encoder.c 
b/drivers/gpu/drm/amd/dal/dc/dce/dce_link_encoder.c
index 8a9060601005..ae9de4824378 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce/dce_link_encoder.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce/dce_link_encoder.c
@@ -582,7 +582,7 @@ static struct gpio *get_hpd_gpio(const struct link_encoder 
*enc)
        }
 
        return dal_gpio_service_create_irq(
-               enc->adapter_service->gpio_service,
+               enc->ctx->gpio_service,
                pin_info.offset,
                pin_info.mask);
 }
diff --git a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h 
b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
index 52bf06b8b507..052cd9ab5cf3 100644
--- a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
+++ b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
@@ -33,9 +33,11 @@
 #include "dal_types.h"
 #include "asic_capability_types.h"
 
+#define SIZEOF_BACKLIGHT_LUT 101
+
 /* forward declaration */
 struct i2caux;
-struct adapter_service;
+struct asic_cap;
 
 /*
  * enum adapter_feature_id
@@ -293,6 +295,22 @@ enum adapter_feature_id {
        FEATURE_MAXIMUM
 };
 
+/* Adapter service */
+struct adapter_service {
+       struct dc_context *ctx;
+       struct asic_capability *asic_cap;
+       enum dce_environment dce_environment;
+       struct i2caux *i2caux;
+       struct integrated_info *integrated_info;
+       uint32_t platform_methods_mask;
+       uint32_t ac_level_percentage;
+       uint32_t dc_level_percentage;
+       uint32_t backlight_caps_initialized;
+       uint32_t backlight_8bit_lut[SIZEOF_BACKLIGHT_LUT];
+       uint32_t adapter_feature_set[FEATURE_MAXIMUM/32];
+       uint32_t default_values[FEATURE_MAXIMUM];
+};
+
 /* Adapter Service type of DRR support*/
 enum as_drr_support {
        AS_DRR_SUPPORT_DISABLED = 0x0,
-- 
2.10.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to