[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