Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1de2b52 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/disp/g94-: port OR DP training pattern control to nvkm_ior



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent a3e81117
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ nvkm_dp_train_pattern(struct lt_state *lt, u8 pattern)
	u8 sink_tp;

	OUTP_TRACE(&dp->outp, "training pattern %d", pattern);
	dp->func->pattern(dp, pattern);
	dp->outp.ior->func->dp.pattern(dp->outp.ior, pattern);

	nvkm_rdaux(dp->aux, DPCD_LC02, &sink_tp, 1);
	sink_tp &= ~DPCD_LC02_TRAINING_PATTERN_SET;
+0 −2
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ struct nvkm_dp {
#define nvkm_output_dp nvkm_dp

struct nvkm_output_dp_func {
	int (*pattern)(struct nvkm_output_dp *, int);
	int (*drv_ctl)(struct nvkm_output_dp *, int ln, int vs, int pe, int pc);
	void (*vcpi)(struct nvkm_output_dp *, int head, u8 start_slot,
		     u8 num_slots, u16 pbn, u16 aligned_pbn);
@@ -57,7 +56,6 @@ void gf119_sor_dp_vcpi(struct nvkm_dp *, int, u8, u8, u16, u16);

int gm107_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
		     struct nvkm_output **);
int gm107_sor_dp_pattern(struct nvkm_dp *, int);

int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
		     struct nvkm_output **);
+5 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ struct nvkm_ior_func {
		u8 lanes[4];
		int (*links)(struct nvkm_ior *, struct nvkm_i2c_aux *);
		void (*power)(struct nvkm_ior *, int nr);
		void (*pattern)(struct nvkm_ior *, int pattern);
	} dp;
};

@@ -84,9 +85,13 @@ void nv50_sor_power(struct nvkm_ior *, bool, bool, bool, bool, bool);
void g94_sor_state(struct nvkm_ior *, struct nvkm_ior_state *);
int g94_sor_dp_links(struct nvkm_ior *, struct nvkm_i2c_aux *);
void g94_sor_dp_power(struct nvkm_ior *, int);
void g94_sor_dp_pattern(struct nvkm_ior *, int);

void gf119_sor_state(struct nvkm_ior *, struct nvkm_ior_state *);
int gf119_sor_dp_links(struct nvkm_ior *, struct nvkm_i2c_aux *);
void gf119_sor_dp_pattern(struct nvkm_ior *, int);

void gm107_sor_dp_pattern(struct nvkm_ior *, int);

void g84_hdmi_ctrl(struct nvkm_ior *, int, bool, u8, u8, u8 *, u8 , u8 *, u8);
void gt215_hdmi_ctrl(struct nvkm_ior *, int, bool, u8, u8, u8 *, u8 , u8 *, u8);
+0 −7
Original line number Diff line number Diff line
@@ -45,12 +45,6 @@ nv50_pior_output_new(struct nvkm_disp *disp, int index,
/******************************************************************************
 * DisplayPort
 *****************************************************************************/
static int
nv50_pior_output_dp_pattern(struct nvkm_output_dp *outp, int pattern)
{
	return 0;
}

static int
nv50_pior_dp_links(struct nvkm_ior *pior, struct nvkm_i2c_aux *aux)
{
@@ -63,7 +57,6 @@ nv50_pior_dp_links(struct nvkm_ior *pior, struct nvkm_i2c_aux *aux)

static const struct nvkm_output_dp_func
nv50_pior_output_dp_func = {
	.pattern = nv50_pior_output_dp_pattern,
};

int
+5 −6
Original line number Diff line number Diff line
@@ -81,13 +81,12 @@ g94_sor_dp_drv_ctl(struct nvkm_output_dp *outp, int ln, int vs, int pe, int pc)
	return 0;
}

static int
g94_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern)
void
g94_sor_dp_pattern(struct nvkm_ior *sor, int pattern)
{
	struct nvkm_device *device = outp->base.disp->engine.subdev.device;
	const u32 loff = g94_sor_loff(outp);
	struct nvkm_device *device = sor->disp->engine.subdev.device;
	const u32 loff = nv50_sor_link(sor);
	nvkm_mask(device, 0x61c10c + loff, 0x0f000000, pattern << 24);
	return 0;
}

void
@@ -131,7 +130,6 @@ g94_sor_dp_links(struct nvkm_ior *sor, struct nvkm_i2c_aux *aux)

static const struct nvkm_output_dp_func
g94_sor_dp_func = {
	.pattern = g94_sor_dp_pattern,
	.drv_ctl = g94_sor_dp_drv_ctl,
};

@@ -299,6 +297,7 @@ g94_sor = {
		.lanes = { 2, 1, 0, 3},
		.links = g94_sor_dp_links,
		.power = g94_sor_dp_power,
		.pattern = g94_sor_dp_pattern,
	},
};

Loading