sync with OpenBSD -current
This commit is contained in:
parent
0189975fb5
commit
cc5edceac3
87 changed files with 1329 additions and 4278 deletions
|
@ -317,7 +317,7 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
|
|||
DEBUG("IMM 0x%02X\n", val);
|
||||
return val;
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
case ATOM_ARG_PLL:
|
||||
idx = U8(*ptr);
|
||||
(*ptr)++;
|
||||
|
|
|
@ -1287,11 +1287,10 @@ static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev)
|
|||
* 0b10 : encode is disabled
|
||||
* 0b01 : decode is disabled
|
||||
*/
|
||||
adev->vcn.vcn_config[adev->vcn.num_vcn_inst] =
|
||||
ip->revision & 0xc0;
|
||||
ip->revision &= ~0xc0;
|
||||
if (adev->vcn.num_vcn_inst <
|
||||
AMDGPU_MAX_VCN_INSTANCES) {
|
||||
adev->vcn.vcn_config[adev->vcn.num_vcn_inst] =
|
||||
ip->revision & 0xc0;
|
||||
adev->vcn.num_vcn_inst++;
|
||||
adev->vcn.inst_mask |=
|
||||
(1U << ip->instance_number);
|
||||
|
@ -1302,6 +1301,7 @@ static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev)
|
|||
adev->vcn.num_vcn_inst + 1,
|
||||
AMDGPU_MAX_VCN_INSTANCES);
|
||||
}
|
||||
ip->revision &= ~0xc0;
|
||||
}
|
||||
if (le16_to_cpu(ip->hw_id) == SDMA0_HWID ||
|
||||
le16_to_cpu(ip->hw_id) == SDMA1_HWID ||
|
||||
|
|
|
@ -574,11 +574,34 @@ soc15_asic_reset_method(struct amdgpu_device *adev)
|
|||
return AMD_RESET_METHOD_MODE1;
|
||||
}
|
||||
|
||||
static bool soc15_need_reset_on_resume(struct amdgpu_device *adev)
|
||||
{
|
||||
u32 sol_reg;
|
||||
|
||||
sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81);
|
||||
|
||||
/* Will reset for the following suspend abort cases.
|
||||
* 1) Only reset limit on APU side, dGPU hasn't checked yet.
|
||||
* 2) S3 suspend abort and TOS already launched.
|
||||
*/
|
||||
if (adev->flags & AMD_IS_APU && adev->in_s3 &&
|
||||
!adev->suspend_complete &&
|
||||
sol_reg)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int soc15_asic_reset(struct amdgpu_device *adev)
|
||||
{
|
||||
/* original raven doesn't have full asic reset */
|
||||
if ((adev->apu_flags & AMD_APU_IS_RAVEN) ||
|
||||
(adev->apu_flags & AMD_APU_IS_RAVEN2))
|
||||
/* On the latest Raven, the GPU reset can be performed
|
||||
* successfully. So now, temporarily enable it for the
|
||||
* S3 suspend abort case.
|
||||
*/
|
||||
if (((adev->apu_flags & AMD_APU_IS_RAVEN) ||
|
||||
(adev->apu_flags & AMD_APU_IS_RAVEN2)) &&
|
||||
!soc15_need_reset_on_resume(adev))
|
||||
return 0;
|
||||
|
||||
switch (soc15_asic_reset_method(adev)) {
|
||||
|
@ -1296,24 +1319,6 @@ static int soc15_common_suspend(void *handle)
|
|||
return soc15_common_hw_fini(adev);
|
||||
}
|
||||
|
||||
static bool soc15_need_reset_on_resume(struct amdgpu_device *adev)
|
||||
{
|
||||
u32 sol_reg;
|
||||
|
||||
sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81);
|
||||
|
||||
/* Will reset for the following suspend abort cases.
|
||||
* 1) Only reset limit on APU side, dGPU hasn't checked yet.
|
||||
* 2) S3 suspend abort and TOS already launched.
|
||||
*/
|
||||
if (adev->flags & AMD_IS_APU && adev->in_s3 &&
|
||||
!adev->suspend_complete &&
|
||||
sol_reg)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int soc15_common_resume(void *handle)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
|
|
@ -1906,17 +1906,15 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev)
|
|||
adev->dm.hdcp_workqueue = NULL;
|
||||
}
|
||||
|
||||
if (adev->dm.dc)
|
||||
if (adev->dm.dc) {
|
||||
dc_deinit_callbacks(adev->dm.dc);
|
||||
|
||||
if (adev->dm.dc)
|
||||
dc_dmub_srv_destroy(&adev->dm.dc->ctx->dmub_srv);
|
||||
|
||||
if (dc_enable_dmub_notifications(adev->dm.dc)) {
|
||||
kfree(adev->dm.dmub_notify);
|
||||
adev->dm.dmub_notify = NULL;
|
||||
destroy_workqueue(adev->dm.delayed_hpd_wq);
|
||||
adev->dm.delayed_hpd_wq = NULL;
|
||||
if (dc_enable_dmub_notifications(adev->dm.dc)) {
|
||||
kfree(adev->dm.dmub_notify);
|
||||
adev->dm.dmub_notify = NULL;
|
||||
destroy_workqueue(adev->dm.delayed_hpd_wq);
|
||||
adev->dm.delayed_hpd_wq = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (adev->dm.dmub_bo)
|
||||
|
|
|
@ -1453,7 +1453,7 @@ static ssize_t dp_dsc_clock_en_read(struct file *f, char __user *buf,
|
|||
const uint32_t rd_buf_size = 10;
|
||||
struct pipe_ctx *pipe_ctx;
|
||||
ssize_t result = 0;
|
||||
int i, r, str_len = 30;
|
||||
int i, r, str_len = 10;
|
||||
|
||||
rd_buf = kcalloc(rd_buf_size, sizeof(char), GFP_KERNEL);
|
||||
|
||||
|
|
|
@ -1832,6 +1832,9 @@ bool dcn10_set_output_transfer_func(struct dc *dc, struct pipe_ctx *pipe_ctx,
|
|||
{
|
||||
struct dpp *dpp = pipe_ctx->plane_res.dpp;
|
||||
|
||||
if (!stream)
|
||||
return false;
|
||||
|
||||
if (dpp == NULL)
|
||||
return false;
|
||||
|
||||
|
@ -1854,8 +1857,8 @@ bool dcn10_set_output_transfer_func(struct dc *dc, struct pipe_ctx *pipe_ctx,
|
|||
} else
|
||||
dpp->funcs->dpp_program_regamma_pwl(dpp, NULL, OPP_REGAMMA_BYPASS);
|
||||
|
||||
if (stream != NULL && stream->ctx != NULL &&
|
||||
stream->out_transfer_func != NULL) {
|
||||
if (stream->ctx &&
|
||||
stream->out_transfer_func) {
|
||||
log_tf(stream->ctx,
|
||||
stream->out_transfer_func,
|
||||
dpp->regamma_params.hw_points_num);
|
||||
|
|
|
@ -882,7 +882,8 @@ bool edp_set_replay_allow_active(struct dc_link *link, const bool *allow_active,
|
|||
|
||||
/* Set power optimization flag */
|
||||
if (power_opts && link->replay_settings.replay_power_opt_active != *power_opts) {
|
||||
if (link->replay_settings.replay_feature_enabled && replay->funcs->replay_set_power_opt) {
|
||||
if (replay != NULL && link->replay_settings.replay_feature_enabled &&
|
||||
replay->funcs->replay_set_power_opt) {
|
||||
replay->funcs->replay_set_power_opt(replay, *power_opts, panel_inst);
|
||||
link->replay_settings.replay_power_opt_active = *power_opts;
|
||||
}
|
||||
|
|
|
@ -2358,8 +2358,8 @@ static uint16_t arcturus_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (uint16_t)(((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (uint16_t)(((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
return smu_v11_0_get_current_pcie_link_speed(smu);
|
||||
}
|
||||
|
|
|
@ -1722,8 +1722,8 @@ static int aldebaran_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
return smu_v13_0_get_current_pcie_link_speed(smu);
|
||||
}
|
||||
|
|
|
@ -1943,8 +1943,8 @@ static int smu_v13_0_6_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
speed_level = (RREG32_PCIE(smnPCIE_LC_SPEED_CNTL) &
|
||||
PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE_MASK)
|
||||
|
|
|
@ -136,7 +136,7 @@ static void huc_delayed_load_timer_callback(void *arg)
|
|||
|
||||
static void huc_delayed_load_start(struct intel_huc *huc)
|
||||
{
|
||||
int delay;
|
||||
ktime_t delay;
|
||||
|
||||
GEM_BUG_ON(intel_huc_is_authenticated(huc, INTEL_HUC_AUTH_BY_GSC));
|
||||
|
||||
|
@ -146,10 +146,10 @@ static void huc_delayed_load_start(struct intel_huc *huc)
|
|||
*/
|
||||
switch (huc->delayed_load.status) {
|
||||
case INTEL_HUC_WAITING_ON_GSC:
|
||||
delay = GSC_INIT_TIMEOUT_MS;
|
||||
delay = ms_to_ktime(GSC_INIT_TIMEOUT_MS);
|
||||
break;
|
||||
case INTEL_HUC_WAITING_ON_PXP:
|
||||
delay = PXP_INIT_TIMEOUT_MS;
|
||||
delay = ms_to_ktime(PXP_INIT_TIMEOUT_MS);
|
||||
break;
|
||||
default:
|
||||
gsc_init_error(huc);
|
||||
|
@ -171,7 +171,7 @@ static void huc_delayed_load_start(struct intel_huc *huc)
|
|||
#ifdef __linux__
|
||||
hrtimer_start(&huc->delayed_load.timer, delay, HRTIMER_MODE_REL);
|
||||
#else
|
||||
timeout_add_msec(&huc->delayed_load.timer, delay);
|
||||
timeout_add_nsec(&huc->delayed_load.timer, ktime_to_ns(delay));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ static inline u32 dfixed_div(fixed20_12 A, fixed20_12 B)
|
|||
}
|
||||
|
||||
#define DRM_FIXED_POINT 32
|
||||
#define DRM_FIXED_POINT_HALF 16
|
||||
#define DRM_FIXED_ONE (1ULL << DRM_FIXED_POINT)
|
||||
#define DRM_FIXED_DECIMAL_MASK (DRM_FIXED_ONE - 1)
|
||||
#define DRM_FIXED_DIGITS_MASK (~DRM_FIXED_DECIMAL_MASK)
|
||||
|
@ -90,12 +89,12 @@ static inline int drm_fixp2int(s64 a)
|
|||
|
||||
static inline int drm_fixp2int_round(s64 a)
|
||||
{
|
||||
return drm_fixp2int(a + (1 << (DRM_FIXED_POINT_HALF - 1)));
|
||||
return drm_fixp2int(a + DRM_FIXED_ONE / 2);
|
||||
}
|
||||
|
||||
static inline int drm_fixp2int_ceil(s64 a)
|
||||
{
|
||||
if (a > 0)
|
||||
if (a >= 0)
|
||||
return drm_fixp2int(a + DRM_FIXED_ALMOST_ONE);
|
||||
else
|
||||
return drm_fixp2int(a - DRM_FIXED_ALMOST_ONE);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ktime.h,v 1.7 2023/01/01 01:34:58 jsg Exp $ */
|
||||
/* $OpenBSD: ktime.h,v 1.8 2024/03/28 02:36:38 jsg Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2013, 2014, 2015 Mark Kettenis
|
||||
*
|
||||
|
@ -150,6 +150,12 @@ ns_to_ktime(uint64_t ns)
|
|||
return ns;
|
||||
}
|
||||
|
||||
static inline ktime_t
|
||||
ms_to_ktime(uint64_t ms)
|
||||
{
|
||||
return ms * NSEC_PER_MSEC;
|
||||
}
|
||||
|
||||
static inline int64_t
|
||||
ktime_divns(ktime_t a, int64_t ns)
|
||||
{
|
||||
|
|
|
@ -813,7 +813,7 @@ int ni_init_microcode(struct radeon_device *rdev)
|
|||
err = 0;
|
||||
} else if (rdev->smc_fw->size != smc_req_size) {
|
||||
pr_err("ni_mc: Bogus length %zu in firmware \"%s\"\n",
|
||||
rdev->mc_fw->size, fw_name);
|
||||
rdev->smc_fw->size, fw_name);
|
||||
err = -EINVAL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue