[PATCH 06/76] drm/amd/dal: Move gpio_service out of adapter_service

Harry Wentland harry.wentland at amd.com
Mon Nov 21 23:00:26 UTC 2016


Signed-off-by: Harry Wentland <harry.wentland at amd.com>
Acked-by: Harry Wentland <harry.wentland at 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



More information about the amd-gfx mailing list