mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
drm/nouveau/gsp: add hal for disp.dp.set_indexed_link_rates()
545.23.06 has incompatible changes to NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES. Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Timur Tabi <ttabi@nvidia.com> Tested-by: Timur Tabi <ttabi@nvidia.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
8f8d9bca2f
commit
a3f3232903
|
|
@ -1021,15 +1021,11 @@ r535_dp_train(struct nvkm_outp *outp, bool retrain)
|
|||
}
|
||||
|
||||
static int
|
||||
r535_dp_rates(struct nvkm_outp *outp)
|
||||
r535_dp_set_indexed_link_rates(struct nvkm_outp *outp)
|
||||
{
|
||||
NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS *ctrl;
|
||||
struct nvkm_disp *disp = outp->disp;
|
||||
|
||||
if (outp->conn->info.type != DCB_CONNECTOR_eDP ||
|
||||
!outp->dp.rates || outp->dp.rate[0].dpcd < 0)
|
||||
return 0;
|
||||
|
||||
if (WARN_ON(outp->dp.rates > ARRAY_SIZE(ctrl->linkRateTbl)))
|
||||
return -EINVAL;
|
||||
|
||||
|
|
@ -1045,6 +1041,18 @@ r535_dp_rates(struct nvkm_outp *outp)
|
|||
return nvkm_gsp_rm_ctrl_wr(&disp->rm.objcom, ctrl);
|
||||
}
|
||||
|
||||
static int
|
||||
r535_dp_rates(struct nvkm_outp *outp)
|
||||
{
|
||||
struct nvkm_rm *rm = outp->disp->rm.objcom.client->gsp->rm;
|
||||
|
||||
if (outp->conn->info.type != DCB_CONNECTOR_eDP ||
|
||||
!outp->dp.rates || outp->dp.rate[0].dpcd < 0)
|
||||
return 0;
|
||||
|
||||
return rm->api->disp->dp.set_indexed_link_rates(outp);
|
||||
}
|
||||
|
||||
static int
|
||||
r535_dp_aux_xfer(struct nvkm_outp *outp, u8 type, u32 addr, u8 *data, u8 *psize)
|
||||
{
|
||||
|
|
@ -1726,4 +1734,7 @@ r535_disp_new(const struct nvkm_disp_func *hw, struct nvkm_device *device,
|
|||
const struct nvkm_rm_api_disp
|
||||
r535_disp = {
|
||||
.bl_ctrl = r535_bl_ctrl,
|
||||
.dp = {
|
||||
.set_indexed_link_rates = r535_dp_set_indexed_link_rates,
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#ifndef __NVKM_RM_H__
|
||||
#define __NVKM_RM_H__
|
||||
#include "handles.h"
|
||||
struct nvkm_outp;
|
||||
|
||||
struct nvkm_rm_impl {
|
||||
const struct nvkm_rm_wpr *wpr;
|
||||
|
|
@ -72,6 +73,10 @@ struct nvkm_rm_api {
|
|||
|
||||
const struct nvkm_rm_api_disp {
|
||||
int (*bl_ctrl)(struct nvkm_disp *, unsigned display_id, bool set, int *val);
|
||||
|
||||
struct {
|
||||
int (*set_indexed_link_rates)(struct nvkm_outp *);
|
||||
} dp;
|
||||
} *disp;
|
||||
|
||||
const struct nvkm_rm_api_engine {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user