[PATCH 12/39] drm/amd/dal: transform cleanup powerup
Harry Wentland
harry.wentland at amd.com
Thu Nov 24 02:02:41 UTC 2016
From: Dmytro Laktyushkin <Dmytro.Laktyushkin at amd.com>
Change-Id: I7f41c0582f80f7f525076654a2003edb68b0929c
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin at amd.com>
Acked-by: Harry Wentland <harry.wentland at amd.com>
---
.../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 1 -
.../gpu/drm/amd/dal/dc/dce110/dce110_transform.c | 7 ----
.../gpu/drm/amd/dal/dc/dce110/dce110_transform.h | 6 ----
.../amd/dal/dc/dce110/dce110_transform_bit_depth.c | 39 ----------------------
.../amd/dal/dc/dce110/dce110_transform_bit_depth.h | 4 ---
.../drm/amd/dal/dc/dce110/dce110_transform_scl.c | 29 ++++++++++++++++
.../gpu/drm/amd/dal/dc/dce110/dce110_transform_v.c | 39 +++++++++++-----------
drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.c | 8 -----
drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.h | 2 --
.../amd/dal/dc/dce80/dce80_transform_bit_depth.c | 26 ---------------
.../amd/dal/dc/dce80/dce80_transform_bit_depth.h | 2 --
.../gpu/drm/amd/dal/dc/dce80/dce80_transform_scl.c | 32 ++++++++++++++++++
12 files changed, 80 insertions(+), 115 deletions(-)
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 c6c2d01a2e5b..74e1a191cfbe 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
@@ -1642,7 +1642,6 @@ static void init_hw(struct core_dc *dc)
dc->hwss.enable_display_power_gating(
dc, i, bp,
PIPE_GATING_CONTROL_DISABLE);
- xfm->funcs->transform_power_up(xfm);
dc->hwss.enable_display_pipe_clock_gating(
dc->ctx,
true);
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.c
index 492856290470..ca599959c7e2 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.c
@@ -72,8 +72,6 @@ static void dce110_transform_reset(struct transform *xfm)
static const struct transform_funcs dce110_transform_funcs = {
.transform_reset = dce110_transform_reset,
- .transform_power_up =
- dce110_transform_power_up,
.transform_set_scaler =
dce110_transform_set_scaler,
.transform_set_gamut_remap =
@@ -113,8 +111,3 @@ bool dce110_transform_construct(
return true;
}
-
-bool dce110_transform_power_up(struct transform *xfm)
-{
- return dce110_transform_power_up_line_buffer(xfm);
-}
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.h b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.h
index 7f3e50bbb4f1..afa33e4621b7 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.h
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform.h
@@ -56,17 +56,11 @@ bool dce110_transform_construct(struct dce110_transform *xfm110,
uint32_t inst,
const struct dce110_transform_reg_offsets *reg_offsets);
-bool dce110_transform_power_up(struct transform *xfm);
-
/* SCALER RELATED */
void dce110_transform_set_scaler(
struct transform *xfm,
const struct scaler_data *data);
-void dce110_transform_set_scaler_filter(
- struct transform *xfm,
- struct scaler_filter *filter);
-
/* GAMUT RELATED */
void dce110_transform_set_gamut_remap(
struct transform *xfm,
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.c
index 966c90bab67c..84338166977f 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.c
@@ -582,18 +582,6 @@ int32_t dce110_transform_get_max_num_of_supported_lines(
return (max_pixels_supports / pixel_width);
}
-bool dce110_transform_is_prefetch_enabled(
- struct dce110_transform *xfm110)
-{
- uint32_t value = dm_read_reg(
- xfm110->base.ctx, LB_REG(mmLB_DATA_FORMAT));
-
- if (get_reg_field_value(value, LB_DATA_FORMAT, PREFETCH) == 1)
- return true;
-
- return false;
-}
-
static void set_denormalization(
struct dce110_transform *xfm110,
enum dc_color_depth depth)
@@ -704,33 +692,6 @@ bool dce110_transform_set_pixel_storage_depth(
return ret;
}
-/* LB_MEMORY_CONFIG
- * 00 - Use all three pieces of memory
- * 01 - Use only one piece of memory of total 720x144 bits
- * 10 - Use two pieces of memory of total 960x144 bits
- * 11 - reserved
- *
- * LB_MEMORY_SIZE
- * Total entries of LB memory.
- * This number should be larger than 960. The default value is 1712(0x6B0) */
-bool dce110_transform_power_up_line_buffer(struct transform *xfm)
-{
- struct dce110_transform *xfm110 = TO_DCE110_TRANSFORM(xfm);
- uint32_t value;
-
- value = dm_read_reg(xfm110->base.ctx, LB_REG(mmLB_MEMORY_CTRL));
-
- /*Use all three pieces of memory always*/
- set_reg_field_value(value, 0, LB_MEMORY_CTRL, LB_MEMORY_CONFIG);
- /*hard coded number DCE11 1712(0x6B0) Partitions: 720/960/1712*/
- set_reg_field_value(value, xfm110->base.lb_memory_size, LB_MEMORY_CTRL,
- LB_MEMORY_SIZE);
-
- dm_write_reg(xfm110->base.ctx, LB_REG(mmLB_MEMORY_CTRL), value);
-
- return true;
-}
-
/* Underlay pipe functions*/
bool dce110_transform_v_set_pixel_storage_depth(
struct transform *xfm,
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.h b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.h
index a28efb049335..bb195fd43580 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.h
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_bit_depth.h
@@ -27,14 +27,10 @@
#include "dce110_transform.h"
-bool dce110_transform_power_up_line_buffer(struct transform *xfm);
-
bool dce110_transform_get_max_num_of_supported_lines(
struct transform *xfm,
enum lb_pixel_depth depth,
uint32_t pixel_width);
-bool dce110_transform_is_prefetch_enabled(
- struct dce110_transform *xfm110);
#endif
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_scl.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_scl.c
index 2663abdfb5d6..7dd173ccf4b9 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_scl.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_scl.c
@@ -501,6 +501,33 @@ static void dce110_transform_set_alpha(struct transform *xfm, bool enable)
dm_write_reg(ctx, addr, value);
}
+/* LB_MEMORY_CONFIG
+ * 00 - Use all three pieces of memory
+ * 01 - Use only one piece of memory of total 720x144 bits
+ * 10 - Use two pieces of memory of total 960x144 bits
+ * 11 - reserved
+ *
+ * LB_MEMORY_SIZE
+ * Total entries of LB memory.
+ * This number should be larger than 960. The default value is 1712(0x6B0) */
+static bool dce110_transform_power_up_line_buffer(struct transform *xfm)
+{
+ struct dce110_transform *xfm110 = TO_DCE110_TRANSFORM(xfm);
+ uint32_t value;
+
+ value = dm_read_reg(xfm110->base.ctx, LB_REG(mmLB_MEMORY_CTRL));
+
+ /*Use all three pieces of memory always*/
+ set_reg_field_value(value, 0, LB_MEMORY_CTRL, LB_MEMORY_CONFIG);
+ /*hard coded number DCE11 1712(0x6B0) Partitions: 720/960/1712*/
+ set_reg_field_value(value, xfm110->base.lb_memory_size, LB_MEMORY_CTRL,
+ LB_MEMORY_SIZE);
+
+ dm_write_reg(xfm110->base.ctx, LB_REG(mmLB_MEMORY_CTRL), value);
+
+ return true;
+}
+
void dce110_transform_set_scaler(
struct transform *xfm,
const struct scaler_data *data)
@@ -510,6 +537,8 @@ void dce110_transform_set_scaler(
bool filter_updated = false;
const uint16_t *coeffs_v, *coeffs_h;
+ dce110_transform_power_up_line_buffer(xfm);
+
disable_enhanced_sharpness(xfm110);
/* 1. Program overscan */
diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_v.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_v.c
index b1a8d456ca67..13b99026e662 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_v.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_transform_v.c
@@ -501,6 +501,24 @@ static const uint16_t *get_filter_coeffs_64p(int taps, struct fixed31_32 ratio)
}
}
+static bool dce110_transform_v_power_up_line_buffer(struct transform *xfm)
+{
+ struct dce110_transform *xfm110 = TO_DCE110_TRANSFORM(xfm);
+ uint32_t value;
+
+ value = dm_read_reg(xfm110->base.ctx, mmLBV_MEMORY_CTRL);
+
+ /*Use all three pieces of memory always*/
+ set_reg_field_value(value, 0, LBV_MEMORY_CTRL, LB_MEMORY_CONFIG);
+ /*hard coded number DCE11 1712(0x6B0) Partitions: 720/960/1712*/
+ set_reg_field_value(value, xfm110->base.lb_memory_size, LBV_MEMORY_CTRL,
+ LB_MEMORY_SIZE);
+
+ dm_write_reg(xfm110->base.ctx, mmLBV_MEMORY_CTRL, value);
+
+ return true;
+}
+
static void dce110_transform_v_set_scaler(
struct transform *xfm,
const struct scaler_data *data)
@@ -512,6 +530,7 @@ static void dce110_transform_v_set_scaler(
struct rect luma_viewport = {0};
struct rect chroma_viewport = {0};
+ dce110_transform_v_power_up_line_buffer(xfm);
/* 1. Calculate viewport, viewport programming should happen after init
* calculations as they may require an adjustment in the viewport.
*/
@@ -587,24 +606,6 @@ static void dce110_transform_v_set_scaler(
set_coeff_update_complete(xfm110);
}
-static bool dce110_transform_v_power_up_line_buffer(struct transform *xfm)
-{
- struct dce110_transform *xfm110 = TO_DCE110_TRANSFORM(xfm);
- uint32_t value;
-
- value = dm_read_reg(xfm110->base.ctx, mmLBV_MEMORY_CTRL);
-
- /*Use all three pieces of memory always*/
- set_reg_field_value(value, 0, LBV_MEMORY_CTRL, LB_MEMORY_CONFIG);
- /*hard coded number DCE11 1712(0x6B0) Partitions: 720/960/1712*/
- set_reg_field_value(value, xfm110->base.lb_memory_size, LBV_MEMORY_CTRL,
- LB_MEMORY_SIZE);
-
- dm_write_reg(xfm110->base.ctx, mmLBV_MEMORY_CTRL, value);
-
- return true;
-}
-
static void dce110_transform_v_reset(struct transform *xfm)
{
struct dce110_transform *xfm110 = TO_DCE110_TRANSFORM(xfm);
@@ -618,8 +619,6 @@ static void dce110_transform_v_reset(struct transform *xfm)
static const struct transform_funcs dce110_transform_v_funcs = {
.transform_reset =
dce110_transform_v_reset,
- .transform_power_up =
- dce110_transform_v_power_up_line_buffer,
.transform_set_scaler =
dce110_transform_v_set_scaler,
.transform_set_gamut_remap =
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.c b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.c
index e99950f40439..e2187608fd62 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.c
@@ -62,8 +62,6 @@ static void dce80_transform_reset(struct transform *xfm)
static const struct transform_funcs dce80_transform_funcs = {
.transform_reset = dce80_transform_reset,
- .transform_power_up =
- dce80_transform_power_up,
.transform_set_scaler =
dce80_transform_set_scaler,
.transform_set_gamut_remap =
@@ -103,9 +101,3 @@ bool dce80_transform_construct(
return true;
}
-
-bool dce80_transform_power_up(struct transform *xfm)
-{
- return dce80_transform_power_up_line_buffer(xfm);
-}
-
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.h b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.h
index ce625ac417df..a6217c189815 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.h
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform.h
@@ -52,8 +52,6 @@ bool dce80_transform_construct(struct dce80_transform *xfm80,
uint32_t inst,
const struct dce80_transform_reg_offsets *offsets);
-bool dce80_transform_power_up(struct transform *xfm);
-
/* SCALER RELATED */
void dce80_transform_set_scaler(
struct transform *xfm,
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.c b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.c
index 7d03684a4e7c..fbc4d53e027e 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.c
@@ -675,30 +675,4 @@ bool dce80_transform_set_pixel_storage_depth(
return ret;
}
-/* LB_MEMORY_CONFIG
- * 00 - Use all three pieces of memory
- * 01 - Use only one piece of memory of total 720x144 bits
- * 10 - Use two pieces of memory of total 960x144 bits
- * 11 - reserved
- *
- * LB_MEMORY_SIZE
- * Total entries of LB memory.
- * This number should be larger than 960. The default value is 1712(0x6B0) */
-bool dce80_transform_power_up_line_buffer(struct transform *xfm)
-{
- struct dce80_transform *xfm80 = TO_DCE80_TRANSFORM(xfm);
- uint32_t value;
-
- value = dm_read_reg(xfm80->base.ctx, LB_REG(mmLB_MEMORY_CTRL));
-
- /*Use all three pieces of memory always*/
- set_reg_field_value(value, 0, LB_MEMORY_CTRL, LB_MEMORY_CONFIG);
- /*hard coded number DCE8 1712(0x6B0) Partitions: 720/960/1712*/
- set_reg_field_value(value, xfm80->base.lb_memory_size, LB_MEMORY_CTRL,
- LB_MEMORY_SIZE);
-
- dm_write_reg(xfm80->base.ctx, LB_REG(mmLB_MEMORY_CTRL), value);
-
- return true;
-}
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.h b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.h
index a8d9008a9f00..beecefba16a5 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.h
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_bit_depth.h
@@ -27,8 +27,6 @@
#include "dce80_transform.h"
-bool dce80_transform_power_up_line_buffer(struct transform *xfm);
-
void dce80_transform_enable_alpha(
struct dce80_transform *xfm80,
bool enable);
diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_scl.c b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_scl.c
index 130af10e030d..caf4def8510f 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_scl.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_transform_scl.c
@@ -41,6 +41,9 @@
#define DCFE_REG(reg)\
(reg + xfm80->offsets.crtc_offset)
+#define LB_REG(reg)\
+ (reg + xfm80->offsets.lb_offset)
+
static void disable_enhanced_sharpness(struct dce80_transform *xfm80)
{
uint32_t value;
@@ -640,6 +643,33 @@ static void program_scl_ratios_inits(
dm_write_reg(xfm80->base.ctx, addr, value);
}
+/* LB_MEMORY_CONFIG
+ * 00 - Use all three pieces of memory
+ * 01 - Use only one piece of memory of total 720x144 bits
+ * 10 - Use two pieces of memory of total 960x144 bits
+ * 11 - reserved
+ *
+ * LB_MEMORY_SIZE
+ * Total entries of LB memory.
+ * This number should be larger than 960. The default value is 1712(0x6B0) */
+static bool dce80_transform_power_up_line_buffer(struct transform *xfm)
+{
+ struct dce80_transform *xfm80 = TO_DCE80_TRANSFORM(xfm);
+ uint32_t value;
+
+ value = dm_read_reg(xfm80->base.ctx, LB_REG(mmLB_MEMORY_CTRL));
+
+ /*Use all three pieces of memory always*/
+ set_reg_field_value(value, 0, LB_MEMORY_CTRL, LB_MEMORY_CONFIG);
+ /*hard coded number DCE8 1712(0x6B0) Partitions: 720/960/1712*/
+ set_reg_field_value(value, xfm80->base.lb_memory_size, LB_MEMORY_CTRL,
+ LB_MEMORY_SIZE);
+
+ dm_write_reg(xfm80->base.ctx, LB_REG(mmLB_MEMORY_CTRL), value);
+
+ return true;
+}
+
void dce80_transform_set_scaler(
struct transform *xfm,
const struct scaler_data *data)
@@ -648,6 +678,8 @@ void dce80_transform_set_scaler(
bool is_scaling_required;
struct dc_context *ctx = xfm->ctx;
+ dce80_transform_power_up_line_buffer(xfm);
+
{
uint32_t addr = SCL_REG(mmSCL_BYPASS_CONTROL);
uint32_t value = dm_read_reg(xfm->ctx, addr);
--
2.10.1
More information about the amd-gfx
mailing list