diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1021-drm-amd-display-add-aux-arbitration-logic.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1021-drm-amd-display-add-aux-arbitration-logic.patch | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1021-drm-amd-display-add-aux-arbitration-logic.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1021-drm-amd-display-add-aux-arbitration-logic.patch deleted file mode 100644 index d2c5e0a2..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1021-drm-amd-display-add-aux-arbitration-logic.patch +++ /dev/null @@ -1,110 +0,0 @@ -From c8e0ca2f9c11bf72eb8bffbc7250c1fa3952350c Mon Sep 17 00:00:00 2001 -From: Charlene Liu <charlene.liu@amd.com> -Date: Thu, 24 Aug 2017 17:12:48 -0400 -Subject: [PATCH 1021/4131] drm/amd/display: add aux arbitration logic - -Change-Id: I10e9c69f5557a7ee030b423703a7aa677fd3f4d9 -Signed-off-by: Charlene Liu <charlene.liu@amd.com> -Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> -Acked-by: Harry Wentland <Harry.Wentland@amd.com> ---- - drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.c | 6 +++++ - drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.h | 2 ++ - .../display/dc/i2caux/dce110/aux_engine_dce110.c | 30 ++++++++++++++++++++-- - 3 files changed, 36 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.c b/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.c -index 667660f..3c9608c 100644 ---- a/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.c -+++ b/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.c -@@ -69,6 +69,12 @@ bool dal_aux_engine_acquire( - struct aux_engine *aux_engine = FROM_ENGINE(engine); - - enum gpio_result result; -+ if (aux_engine->funcs->is_engine_available) { -+ /*check whether SW could use the engine*/ -+ if (!aux_engine->funcs->is_engine_available(aux_engine)) { -+ return false; -+ } -+ } - - result = dal_ddc_open(ddc, GPIO_MODE_HARDWARE, - GPIO_DDC_CONFIG_TYPE_MODE_AUX); -diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.h b/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.h -index b5d6c79..40b2028 100644 ---- a/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.h -+++ b/drivers/gpu/drm/amd/display/dc/i2caux/aux_engine.h -@@ -86,6 +86,8 @@ struct aux_engine_funcs { - enum aux_channel_operation_result (*get_channel_status)( - struct aux_engine *engine, - uint8_t *returned_bytes); -+ bool (*is_engine_available) ( -+ struct aux_engine *engine); - }; - - struct aux_engine { -diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c -index f49fd1a..98ce0fe 100644 ---- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c -+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c -@@ -93,15 +93,36 @@ static void destroy( - } - - #define SW_CAN_ACCESS_AUX 1 -+#define DMCU_CAN_ACCESS_AUX 2 - -+static bool is_engine_available( -+ struct aux_engine *engine) -+{ -+ struct aux_engine_dce110 *aux110 = FROM_AUX_ENGINE(engine); -+ -+ uint32_t value = REG_READ(AUX_ARB_CONTROL); -+ uint32_t field = get_reg_field_value( -+ value, -+ AUX_ARB_CONTROL, -+ AUX_REG_RW_CNTL_STATUS); -+ -+ return (field != DMCU_CAN_ACCESS_AUX); -+} - static bool acquire_engine( - struct aux_engine *engine) - { - struct aux_engine_dce110 *aux110 = FROM_AUX_ENGINE(engine); - -+ uint32_t value = REG_READ(AUX_ARB_CONTROL); -+ uint32_t field = get_reg_field_value( -+ value, -+ AUX_ARB_CONTROL, -+ AUX_REG_RW_CNTL_STATUS); -+ if (field == DMCU_CAN_ACCESS_AUX) -+ return false; - /* enable AUX before request SW to access AUX */ -- uint32_t value = REG_READ(AUX_CONTROL); -- uint32_t field = get_reg_field_value(value, -+ value = REG_READ(AUX_CONTROL); -+ field = get_reg_field_value(value, - AUX_CONTROL, - AUX_EN); - -@@ -395,6 +416,7 @@ static const struct aux_engine_funcs aux_engine_funcs = { - .submit_channel_request = submit_channel_request, - .process_channel_reply = process_channel_reply, - .get_channel_status = get_channel_status, -+ .is_engine_available = is_engine_available, - }; - - static const struct engine_funcs engine_funcs = { -@@ -425,6 +447,10 @@ static bool construct( - static void destruct( - struct aux_engine_dce110 *engine) - { -+ struct aux_engine_dce110 *aux110 = engine; -+/*temp w/a, to do*/ -+ REG_UPDATE(AUX_ARB_CONTROL, AUX_DMCU_DONE_USING_AUX_REG, 1); -+ REG_UPDATE(AUX_ARB_CONTROL, AUX_SW_DONE_USING_AUX_REG, 1); - dal_aux_engine_destruct(&engine->base); - } - --- -2.7.4 - |