mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 23:27:06 +00:00
drm/amd/display: Move custom_float from DML folder
The custom_float file does not have any FPU operation, so it should be inside DML. This commit moves the file to the basic folder. Reviewed-by: Qingqing Zhuo <Qingqing.Zhuo@amd.com> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
d310d18bfc
commit
13f9173af8
3 changed files with 36 additions and 59 deletions
|
@ -29,7 +29,8 @@ BASICS := \
|
|||
fixpt31_32.o \
|
||||
vector.o \
|
||||
dc_common.o \
|
||||
dce_calcs.o
|
||||
dce_calcs.o \
|
||||
custom_float.o
|
||||
|
||||
AMD_DAL_BASICS = $(addprefix $(AMDDALPATH)/dc/basics/,$(BASICS))
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
/*
|
||||
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||
* Copyright 2023 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"),
|
||||
|
@ -25,52 +26,41 @@
|
|||
#include "dm_services.h"
|
||||
#include "custom_float.h"
|
||||
|
||||
|
||||
static bool build_custom_float(
|
||||
struct fixed31_32 value,
|
||||
const struct custom_float_format *format,
|
||||
bool *negative,
|
||||
uint32_t *mantissa,
|
||||
uint32_t *exponenta)
|
||||
static bool build_custom_float(struct fixed31_32 value,
|
||||
const struct custom_float_format *format,
|
||||
bool *negative,
|
||||
uint32_t *mantissa,
|
||||
uint32_t *exponenta)
|
||||
{
|
||||
uint32_t exp_offset = (1 << (format->exponenta_bits - 1)) - 1;
|
||||
|
||||
const struct fixed31_32 mantissa_constant_plus_max_fraction =
|
||||
dc_fixpt_from_fraction(
|
||||
(1LL << (format->mantissa_bits + 1)) - 1,
|
||||
1LL << format->mantissa_bits);
|
||||
dc_fixpt_from_fraction((1LL << (format->mantissa_bits + 1)) - 1,
|
||||
1LL << format->mantissa_bits);
|
||||
|
||||
struct fixed31_32 mantiss;
|
||||
|
||||
if (dc_fixpt_eq(
|
||||
value,
|
||||
dc_fixpt_zero)) {
|
||||
if (dc_fixpt_eq(value, dc_fixpt_zero)) {
|
||||
*negative = false;
|
||||
*mantissa = 0;
|
||||
*exponenta = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (dc_fixpt_lt(
|
||||
value,
|
||||
dc_fixpt_zero)) {
|
||||
if (dc_fixpt_lt(value, dc_fixpt_zero)) {
|
||||
*negative = format->sign;
|
||||
value = dc_fixpt_neg(value);
|
||||
} else {
|
||||
*negative = false;
|
||||
}
|
||||
|
||||
if (dc_fixpt_lt(
|
||||
value,
|
||||
dc_fixpt_one)) {
|
||||
if (dc_fixpt_lt(value, dc_fixpt_one)) {
|
||||
uint32_t i = 1;
|
||||
|
||||
do {
|
||||
value = dc_fixpt_shl(value, 1);
|
||||
++i;
|
||||
} while (dc_fixpt_lt(
|
||||
value,
|
||||
dc_fixpt_one));
|
||||
} while (dc_fixpt_lt(value, dc_fixpt_one));
|
||||
|
||||
--i;
|
||||
|
||||
|
@ -81,54 +71,40 @@ static bool build_custom_float(
|
|||
}
|
||||
|
||||
*exponenta = exp_offset - i;
|
||||
} else if (dc_fixpt_le(
|
||||
mantissa_constant_plus_max_fraction,
|
||||
value)) {
|
||||
} else if (dc_fixpt_le(mantissa_constant_plus_max_fraction, value)) {
|
||||
uint32_t i = 1;
|
||||
|
||||
do {
|
||||
value = dc_fixpt_shr(value, 1);
|
||||
++i;
|
||||
} while (dc_fixpt_lt(
|
||||
mantissa_constant_plus_max_fraction,
|
||||
value));
|
||||
} while (dc_fixpt_lt(mantissa_constant_plus_max_fraction, value));
|
||||
|
||||
*exponenta = exp_offset + i - 1;
|
||||
} else {
|
||||
*exponenta = exp_offset;
|
||||
}
|
||||
|
||||
mantiss = dc_fixpt_sub(
|
||||
value,
|
||||
dc_fixpt_one);
|
||||
mantiss = dc_fixpt_sub(value, dc_fixpt_one);
|
||||
|
||||
if (dc_fixpt_lt(
|
||||
mantiss,
|
||||
dc_fixpt_zero) ||
|
||||
dc_fixpt_lt(
|
||||
dc_fixpt_one,
|
||||
mantiss))
|
||||
if (dc_fixpt_lt(mantiss, dc_fixpt_zero) ||
|
||||
dc_fixpt_lt(dc_fixpt_one, mantiss))
|
||||
mantiss = dc_fixpt_zero;
|
||||
else
|
||||
mantiss = dc_fixpt_shl(
|
||||
mantiss,
|
||||
format->mantissa_bits);
|
||||
mantiss = dc_fixpt_shl(mantiss, format->mantissa_bits);
|
||||
|
||||
*mantissa = dc_fixpt_floor(mantiss);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool setup_custom_float(
|
||||
const struct custom_float_format *format,
|
||||
bool negative,
|
||||
uint32_t mantissa,
|
||||
uint32_t exponenta,
|
||||
uint32_t *result)
|
||||
static bool setup_custom_float(const struct custom_float_format *format,
|
||||
bool negative,
|
||||
uint32_t mantissa,
|
||||
uint32_t exponenta,
|
||||
uint32_t *result)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
uint32_t j = 0;
|
||||
|
||||
uint32_t value = 0;
|
||||
|
||||
/* verification code:
|
||||
|
@ -179,19 +155,19 @@ static bool setup_custom_float(
|
|||
return true;
|
||||
}
|
||||
|
||||
bool convert_to_custom_float_format(
|
||||
struct fixed31_32 value,
|
||||
const struct custom_float_format *format,
|
||||
uint32_t *result)
|
||||
bool convert_to_custom_float_format(struct fixed31_32 value,
|
||||
const struct custom_float_format *format,
|
||||
uint32_t *result)
|
||||
{
|
||||
uint32_t mantissa;
|
||||
uint32_t exponenta;
|
||||
bool negative;
|
||||
|
||||
return build_custom_float(
|
||||
value, format, &negative, &mantissa, &exponenta) &&
|
||||
setup_custom_float(
|
||||
format, negative, mantissa, exponenta, result);
|
||||
return build_custom_float(value, format, &negative, &mantissa, &exponenta) &&
|
||||
setup_custom_float(format,
|
||||
negative,
|
||||
mantissa,
|
||||
exponenta,
|
||||
result);
|
||||
}
|
||||
|
||||
|
|
@ -134,7 +134,7 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_rcflags)
|
|||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_rcflags)
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags)
|
||||
|
||||
DML = calcs/custom_float.o calcs/bw_fixed.o
|
||||
DML = calcs/bw_fixed.o
|
||||
|
||||
ifdef CONFIG_DRM_AMD_DC_FP
|
||||
DML += display_mode_lib.o display_rq_dlg_helpers.o dml1_display_rq_dlg_calc.o
|
||||
|
|
Loading…
Reference in a new issue