[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