[PATCH 16/76] drm/amd/dal: refactor bios scratch register access
Harry Wentland
harry.wentland at amd.com
Mon Nov 21 23:00:36 UTC 2016
From: Tony Cheng <tony.cheng at amd.com>
- offset of scratch register stored in dc_bios and assigned by resource.
- common code to set various of bits to communicate with bios.
Signed-off-by: Tony Cheng <tony.cheng at amd.com>
Acked-by: Harry Wentland <harry.wentland at amd.com>
---
drivers/gpu/drm/amd/dal/dc/bios/Makefile | 6 --
drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c | 14 +--
.../gpu/drm/amd/dal/dc/bios/bios_parser_helper.c | 65 +++++++-----
.../gpu/drm/amd/dal/dc/bios/bios_parser_helper.h | 26 +----
.../gpu/drm/amd/dal/dc/bios/dce110/bios_dce110.h | 6 --
.../dal/dc/bios/dce110/bios_parser_helper_dce110.c | 118 ---------------------
.../dal/dc/bios/dce110/bios_parser_helper_dce110.h | 34 ------
.../dal/dc/bios/dce112/bios_parser_helper_dce112.c | 81 --------------
.../dal/dc/bios/dce112/bios_parser_helper_dce112.h | 34 ------
.../dal/dc/bios/dce80/bios_parser_helper_dce80.c | 67 ------------
.../dal/dc/bios/dce80/bios_parser_helper_dce80.h | 33 ------
drivers/gpu/drm/amd/dal/dc/dc_bios_types.h | 5 +
.../gpu/drm/amd/dal/dc/dce100/dce100_resource.c | 7 ++
.../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 4 +-
.../gpu/drm/amd/dal/dc/dce110/dce110_resource.c | 6 ++
.../gpu/drm/amd/dal/dc/dce112/dce112_resource.c | 7 ++
drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c | 7 ++
17 files changed, 80 insertions(+), 440 deletions(-)
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_dce110.h
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.c
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.h
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.c
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.h
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.c
delete mode 100644 drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.h
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/Makefile b/drivers/gpu/drm/amd/dal/dc/bios/Makefile
index 328215a1c00b..20480d6e2a02 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/Makefile
+++ b/drivers/gpu/drm/amd/dal/dc/bios/Makefile
@@ -13,18 +13,12 @@ AMD_DAL_FILES += $(AMD_DAL_BIOS)
###############################################################################
# All DCE8.x are derived from DCE8.0, so 8.0 MUST be defined if ANY of
# DCE8.x is compiled.
-AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce80/bios_parser_helper_dce80.o
-
AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce80/command_table_helper_dce80.o
###############################################################################
# DCE 11x
###############################################################################
-AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce110/bios_parser_helper_dce110.o
-
AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce110/command_table_helper_dce110.o
ccflags-y += -DLATEST_ATOM_BIOS_SUPPORT
-AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce112/bios_parser_helper_dce112.o
-
AMD_DAL_FILES += $(AMDDALPATH)/dc/bios/dce112/command_table_helper_dce112.o
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 1080c6c5527b..79669d9516cb 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
@@ -37,7 +37,6 @@
#include "command_table.h"
#include "bios_parser_helper.h"
-#include "dce110/bios_dce110.h"
#include "command_table_helper.h"
#include "bios_parser.h"
#include "bios_parser_types_internal.h"
@@ -3667,10 +3666,7 @@ static void bios_parser_post_init(struct dc_bios *dcb,
static bool bios_parser_is_accelerated_mode(
struct dc_bios *dcb)
{
- struct bios_parser *bp = BP_FROM_DCB(dcb);
-
- return bp->bios_helper->is_accelerated_mode(
- bp->base.ctx);
+ bios_is_accelerated_mode(dcb);
}
/**
@@ -3686,10 +3682,7 @@ static void bios_parser_set_scratch_critical_state(
struct dc_bios *dcb,
bool state)
{
- struct bios_parser *bp = BP_FROM_DCB(dcb);
-
- dce110_set_scratch_critical_state(
- bp->base.ctx, state);
+ bios_set_scratch_critical_state(dcb, state);
}
/*
@@ -4127,7 +4120,7 @@ static const struct dc_vbios_funcs vbios_funcs = {
.get_encoder_cap_info = bios_parser_get_encoder_cap_info,
/* bios scratch register communication */
- .is_accelerated_mode = bios_parser_is_accelerated_mode,
+ .is_accelerated_mode = bios_is_accelerated_mode,
.set_scratch_critical_state = bios_parser_set_scratch_critical_state,
@@ -4243,7 +4236,6 @@ static bool bios_parser_construct(
else
return false;
- dal_bios_parser_init_bios_helper(bp, dce_version);
dal_bios_parser_init_cmd_tbl(bp);
dal_bios_parser_init_cmd_tbl_helper(&bp->cmd_helper, dce_version);
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.c b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.c
index 15d57badd716..8e56d2f25dea 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.c
+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.c
@@ -33,33 +33,6 @@
#include "command_table.h"
#include "bios_parser_types_internal.h"
-bool dal_bios_parser_init_bios_helper(
- struct bios_parser *bp,
- enum dce_version version)
-{
- switch (version) {
- case DCE_VERSION_8_0:
- bp->bios_helper = dal_bios_parser_helper_dce80_get_table();
- return true;
- case DCE_VERSION_10_0:
- bp->bios_helper = dal_bios_parser_helper_dce110_get_table();
- return true;
-
- case DCE_VERSION_11_0:
- bp->bios_helper = dal_bios_parser_helper_dce110_get_table();
- return true;
-
- case DCE_VERSION_11_2:
- bp->bios_helper = dal_bios_parser_helper_dce112_get_table();
- return true;
-
- default:
- BREAK_TO_DEBUGGER();
- return false;
- }
-}
-
-
uint8_t *get_image(struct dc_bios *bp,
uint32_t offset,
uint32_t size)
@@ -69,3 +42,41 @@ uint8_t *get_image(struct dc_bios *bp,
else
return NULL;
}
+
+#include "reg_helper.h"
+
+#define CTX \
+ bios->ctx
+#define REG(reg)\
+ (bios->regs->reg)
+
+#undef FN
+#define FN(reg_name, field_name) \
+ ATOM_ ## field_name ## _SHIFT, ATOM_ ## field_name
+
+bool bios_is_accelerated_mode(
+ struct dc_bios *bios)
+{
+ uint32_t acc_mode;
+ REG_GET(BIOS_SCRATCH_6, S6_ACC_MODE, &acc_mode);
+ return (acc_mode == 1);
+}
+
+
+void bios_set_scratch_acc_mode_change(
+ struct dc_bios *bios)
+{
+ REG_UPDATE(BIOS_SCRATCH_6, S6_ACC_MODE, 1);
+}
+
+
+void bios_set_scratch_critical_state(
+ struct dc_bios *bios,
+ bool state)
+{
+ uint32_t critial_state = state ? 1 : 0;
+ REG_UPDATE(BIOS_SCRATCH_6, S6_CRITICAL_STATE, critial_state);
+}
+
+
+
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.h b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.h
index 3b70a123f3f3..a8fbb82b8c8e 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.h
+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser_helper.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-16 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -26,31 +26,15 @@
#ifndef __DAL_BIOS_PARSER_HELPER_H__
#define __DAL_BIOS_PARSER_HELPER_H__
-#include "dce80/bios_parser_helper_dce80.h"
-
-#include "dce110/bios_parser_helper_dce110.h"
-
-#include "dce112/bios_parser_helper_dce112.h"
-
struct bios_parser;
-struct bios_parser_helper {
- bool (*is_accelerated_mode)(
- struct dc_context *ctx);
-};
-
-bool dal_bios_parser_init_bios_helper(
- struct bios_parser *bp,
- enum dce_version ver);
-
-
uint8_t *get_image(struct dc_bios *bp, uint32_t offset,
uint32_t size);
-#define GET_IMAGE(type, offset) ((type *) get_image(&bp->base, offset, sizeof(type)))
-
-
-
+bool bios_is_accelerated_mode(struct dc_bios *bios);
+void bios_set_scratch_acc_mode_change(struct dc_bios *bios);
+void bios_set_scratch_critical_state(struct dc_bios *bios, bool state);
+#define GET_IMAGE(type, offset) ((type *) get_image(&bp->base, offset, sizeof(type)))
#endif
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_dce110.h b/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_dce110.h
deleted file mode 100644
index fd8629603aa6..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_dce110.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef BIOS_DCE110_H
-#define BIOS_DCE110_H
-void dce110_set_scratch_critical_state(struct dc_context *ctx,
- bool state);
-void dce110_set_scratch_acc_mode_change(struct dc_context *ctx);
-#endif
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.c b/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.c
deleted file mode 100644
index 5b7c13f59b8c..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dm_services.h"
-
-#include "atom.h"
-
-#include "include/bios_parser_types.h"
-#include "include/adapter_service_types.h"
-#include "include/logger_interface.h"
-
-#include "../bios_parser_helper.h"
-
-#include "dce/dce_11_0_d.h"
-#include "bif/bif_5_1_d.h"
-
-/**
- * set_scratch_acc_mode_change
- *
- * @brief
- * set Accelerated Mode in VBIOS scratch register, VBIOS will clean it when
- * VGA/non-Accelerated mode is set
- *
- * @param
- * struct dc_context *ctx - [in] DAL context
- */
-void dce110_set_scratch_acc_mode_change(struct dc_context *ctx)
-{
- uint32_t addr = mmBIOS_SCRATCH_6;
- uint32_t value = 0;
-
- value = dm_read_reg(ctx, addr);
-
- value |= ATOM_S6_ACC_MODE;
-
- dm_write_reg(ctx, addr, value);
-}
-
-/*
- * is_accelerated_mode
- *
- * @brief
- * set Accelerated Mode in VBIOS scratch register, VBIOS will clean it when
- * VGA/non-Accelerated mode is set
- *
- * @param
- * struct dc_context *ctx
- *
- * @return
- * true if in acceleration mode, false otherwise.
- */
-static bool is_accelerated_mode(
- struct dc_context *ctx)
-{
- uint32_t addr = mmBIOS_SCRATCH_6;
- uint32_t value = dm_read_reg(ctx, addr);
-
- return (value & ATOM_S6_ACC_MODE) ? true : false;
-}
-
-#define BIOS_SCRATCH0_DAC_B_SHIFT 8
-
-void dce110_set_scratch_critical_state(struct dc_context *ctx,
- bool state)
-{
- uint32_t addr = mmBIOS_SCRATCH_6;
- uint32_t value = dm_read_reg(ctx, addr);
-
- if (state)
- value |= ATOM_S6_CRITICAL_STATE;
- else
- value &= ~ATOM_S6_CRITICAL_STATE;
-
- dm_write_reg(ctx, addr, value);
-}
-
-/* function table */
-static const struct bios_parser_helper bios_parser_helper_funcs = {
- .is_accelerated_mode = is_accelerated_mode,
-};
-
-/*
- * dal_bios_parser_dce110_init_bios_helper
- *
- * @brief
- * Initialize BIOS helper functions
- *
- * @param
- * const struct command_table_helper **h - [out] struct of functions
- *
- */
-
-const struct bios_parser_helper *dal_bios_parser_helper_dce110_get_table()
-{
- return &bios_parser_helper_funcs;
-}
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.h b/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.h
deleted file mode 100644
index 915f31ab9c1a..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce110/bios_parser_helper_dce110.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DAL_BIOS_PARSER_HELPER_DCE110_H__
-#define __DAL_BIOS_PARSER_HELPER_DCE110_H__
-
-struct bios_parser_helper;
-
-/* Initialize BIOS helper functions */
-const struct bios_parser_helper *dal_bios_parser_helper_dce110_get_table(void);
-
-#endif /* __DAL_BIOS_PARSER_HELPER_DCE110_H__ */
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.c b/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.c
deleted file mode 100644
index 0e3b1e6525bc..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dm_services.h"
-
-#include "atom.h"
-
-#include "include/bios_parser_types.h"
-#include "include/adapter_service_types.h"
-#include "include/logger_interface.h"
-
-#include "../bios_parser_helper.h"
-
-#include "dce/dce_11_0_d.h"
-#include "bif/bif_5_1_d.h"
-
-
-/*
- * is_accelerated_mode
- *
- * @brief
- * set Accelerated Mode in VBIOS scratch register, VBIOS will clean it when
- * VGA/non-Accelerated mode is set
- *
- * @param
- * struct dc_context *ctx
- *
- * @return
- * true if in acceleration mode, false otherwise.
- */
-static bool is_accelerated_mode(
- struct dc_context *ctx)
-{
- uint32_t addr = mmBIOS_SCRATCH_6;
- uint32_t value = dm_read_reg(ctx, addr);
-
- return (value & ATOM_S6_ACC_MODE) ? true : false;
-}
-
-/* function table */
-static const struct bios_parser_helper bios_parser_helper_funcs = {
- .is_accelerated_mode = is_accelerated_mode,
-};
-
-/*
- * dal_bios_parser_dce112_init_bios_helper
- *
- * @brief
- * Initialize BIOS helper functions
- *
- * @param
- * const struct command_table_helper **h - [out] struct of functions
- *
- */
-
-const struct bios_parser_helper *dal_bios_parser_helper_dce112_get_table()
-{
- return &bios_parser_helper_funcs;
-}
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.h b/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.h
deleted file mode 100644
index 044327ea250b..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce112/bios_parser_helper_dce112.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DAL_BIOS_PARSER_HELPER_DCE112_H__
-#define __DAL_BIOS_PARSER_HELPER_DCE112_H__
-
-struct bios_parser_helper;
-
-/* Initialize BIOS helper functions */
-const struct bios_parser_helper *dal_bios_parser_helper_dce112_get_table(void);
-
-#endif /* __DAL_BIOS_PARSER_HELPER_DCE110_H__ */
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.c b/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.c
deleted file mode 100644
index a919e626d4ec..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dm_services.h"
-
-#include "atom.h"
-
-#include "dce/dce_8_0_d.h"
-#include "bif/bif_4_1_d.h"
-
-#include "include/grph_object_id.h"
-#include "include/grph_object_defs.h"
-#include "include/grph_object_ctrl_defs.h"
-#include "include/bios_parser_types.h"
-#include "include/adapter_service_types.h"
-
-#include "../bios_parser_helper.h"
-
-/**
- * is_accelerated_mode
- *
- * @brief
- * set Accelerated Mode in VBIOS scratch register, VBIOS will clean it when
- * VGA/non-Accelerated mode is set
- *
- * @param
- * NONE
- */
-static bool is_accelerated_mode(
- struct dc_context *ctx)
-{
- uint32_t addr = mmBIOS_SCRATCH_6;
- uint32_t value = dm_read_reg(ctx, addr);
-
- return (value & ATOM_S6_ACC_MODE) ? true : false;
-}
-
-static const struct bios_parser_helper bios_parser_helper_funcs = {
- .is_accelerated_mode = is_accelerated_mode,
-};
-
-const struct bios_parser_helper *dal_bios_parser_helper_dce80_get_table()
-{
- return &bios_parser_helper_funcs;
-}
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.h b/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.h
deleted file mode 100644
index db671be8025d..000000000000
--- a/drivers/gpu/drm/amd/dal/dc/bios/dce80/bios_parser_helper_dce80.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DAL_BIOS_PARSER_HELPER_DCE80_H__
-#define __DAL_BIOS_PARSER_HELPER_DCE80_H__
-
-struct bios_parser_helper;
-
-const struct bios_parser_helper *dal_bios_parser_helper_dce80_get_table(void);
-
-#endif
diff --git a/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h b/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
index 3d2efa8d2bde..2d598d004281 100644
--- a/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
+++ b/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
@@ -212,6 +212,10 @@ struct dc_vbios_funcs {
void (*bios_parser_destroy)(struct dc_bios **dcb);
};
+struct bios_registers {
+ uint32_t BIOS_SCRATCH_6;
+};
+
struct dc_bios {
const struct dc_vbios_funcs *funcs;
@@ -221,6 +225,7 @@ struct dc_bios {
uint8_t *bios_local_image;
struct dc_context *ctx;
+ const struct bios_registers *regs;
};
#endif /* DC_BIOS_TYPES_H */
diff --git a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c
index ea7e12d8a1e4..c8c83e86eb53 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c
@@ -66,6 +66,7 @@
#ifndef mmBIOS_SCRATCH_2
#define mmBIOS_SCRATCH_2 0x05CB
+ #define mmBIOS_SCRATCH_6 0x05CF
#endif
#ifndef mmDP_DPHY_BS_SR_SWAP_CNTL
@@ -358,6 +359,10 @@ static const struct dce110_opp_reg_offsets dce100_opp_reg_offsets[] = {
}
};
+static const struct bios_registers bios_regs = {
+ .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
+};
+
static const struct resource_caps res_cap = {
.num_timing_generator = 6,
.num_audio = 6,
@@ -859,6 +864,8 @@ static bool construct(
struct dc_bios *bp;
struct dm_pp_static_clock_info static_clk_info = {0};
+ ctx->dc_bios->regs = &bios_regs;
+
pool->base.adapter_srv = as;
pool->base.res_cap = &res_cap;
pool->base.funcs = &dce100_res_pool_funcs;
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
index f010a785c4e2..4181a2207dc4 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
@@ -35,7 +35,7 @@
#include "gpu/dce110/dc_clock_gating_dce110.h"
-#include "bios/dce110/bios_dce110.h"
+#include "bios/bios_parser_helper.h"
#include "timing_generator.h"
#include "mem_input.h"
#include "opp.h"
@@ -975,7 +975,7 @@ void dce110_enable_accelerated_mode(struct core_dc *dc)
power_down_all_hw_blocks(dc);
disable_vga_and_power_gate_all_controllers(dc);
- dce110_set_scratch_acc_mode_change(dc->ctx);
+ bios_set_scratch_acc_mode_change(dc->ctx->dc_bios);
}
/**
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c
index 0404122cf31e..82cdcb5c2eb1 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c
@@ -69,6 +69,7 @@
#ifndef mmBIOS_SCRATCH_2
#define mmBIOS_SCRATCH_2 0x05CB
+ #define mmBIOS_SCRATCH_6 0x05CF
#endif
#ifndef mmDP_DPHY_BS_SR_SWAP_CNTL
@@ -325,6 +326,9 @@ static const struct dce110_clk_src_reg_offsets dce110_clk_src_reg_offsets[] = {
}
};
+static const struct bios_registers bios_regs = {
+ .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
+};
static const struct resource_caps carrizo_resource_cap = {
.num_timing_generator = 3,
@@ -1179,6 +1183,8 @@ static bool construct(
struct dm_pp_static_clock_info static_clk_info = {0};
struct resource_straps straps = {0};
+ ctx->dc_bios->regs = &bios_regs;
+
pool->base.adapter_srv = as;
pool->base.res_cap = dce110_resource_cap(&dc->asic_id);
pool->base.funcs = &dce110_res_pool_funcs;
diff --git a/drivers/gpu/drm/amd/dal/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/dal/dc/dce112/dce112_resource.c
index 8588a94e0fc5..5d53a0b9e8e1 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce112/dce112_resource.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce112/dce112_resource.c
@@ -66,6 +66,7 @@
#ifndef mmBIOS_SCRATCH_2
#define mmBIOS_SCRATCH_2 0x05CB
+ #define mmBIOS_SCRATCH_6 0x05CF
#endif
#ifndef mmDP_DPHY_BS_SR_SWAP_CNTL
@@ -375,6 +376,10 @@ static const struct dce112_clk_src_reg_offsets dce112_clk_src_reg_offsets[] = {
}
};
+static const struct bios_registers bios_regs = {
+ .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
+};
+
static const struct resource_caps polaris_10_resource_cap = {
.num_timing_generator = 6,
.num_audio = 6,
@@ -1187,6 +1192,8 @@ static bool construct(
struct dc_context *ctx = dc->ctx;
struct dm_pp_static_clock_info static_clk_info = {0};
+ ctx->dc_bios->regs = &bios_regs;
+
pool->base.adapter_srv = adapter_serv;
pool->base.res_cap = dce112_resource_cap(&dc->asic_id);
pool->base.funcs = &dce112_res_pool_funcs;
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c
index 0023ed344467..705c69a8a5c4 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c
@@ -69,6 +69,7 @@
#ifndef mmBIOS_SCRATCH_2
#define mmBIOS_SCRATCH_2 0x05CB
+ #define mmBIOS_SCRATCH_6 0x05CF
#endif
#ifndef mmDP_DPHY_FAST_TRAINING
@@ -349,6 +350,10 @@ static const struct dce110_clk_src_reg_offsets dce80_clk_src_reg_offsets[] = {
}
};
+static const struct bios_registers bios_regs = {
+ .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
+};
+
static const struct resource_caps res_cap = {
.num_timing_generator = 6,
.num_audio = 6,
@@ -853,6 +858,8 @@ static bool construct(
struct dc_bios *bp;
struct dm_pp_static_clock_info static_clk_info = {0};
+ ctx->dc_bios->regs = &bios_regs;
+
pool->base.adapter_srv = as;
pool->base.res_cap = &res_cap;
pool->base.funcs = &dce80_res_pool_funcs;
--
2.10.1
More information about the amd-gfx
mailing list