Commit 412dfcf3 authored by Ben Skeggs's avatar Ben Skeggs Committed by Dave Airlie
Browse files

drm/nouveau/disp: clean up nvkm_outp constructors



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 7786fb36
Loading
Loading
Loading
Loading
+9 −23
Original line number Original line Diff line number Diff line
@@ -762,22 +762,26 @@ nvkm_dp_func = {
	.disable = nvkm_dp_disable,
	.disable = nvkm_dp_disable,
};
};


static int
int
nvkm_dp_ctor(struct nvkm_disp *disp, int index, struct dcb_output *dcbE,
nvkm_dp_new(struct nvkm_disp *disp, int index, struct dcb_output *dcbE, struct nvkm_outp **poutp)
	     struct nvkm_i2c_aux *aux, struct nvkm_outp *outp)
{
{
	struct nvkm_device *device = disp->engine.subdev.device;
	struct nvkm_device *device = disp->engine.subdev.device;
	struct nvkm_bios *bios = device->bios;
	struct nvkm_bios *bios = device->bios;
	struct nvkm_i2c *i2c = device->i2c;
	struct nvkm_i2c *i2c = device->i2c;
	struct nvkm_outp *outp;
	u8  hdr, cnt, len;
	u8  hdr, cnt, len;
	u32 data;
	u32 data;
	int ret;
	int ret;


	ret = nvkm_outp_ctor(&nvkm_dp_func, disp, index, dcbE, outp);
	ret = nvkm_outp_new_(&nvkm_dp_func, disp, index, dcbE, poutp);
	outp = *poutp;
	if (ret)
	if (ret)
		return ret;
		return ret;


	outp->dp.aux = aux;
	if (dcbE->location == 0)
		outp->dp.aux = nvkm_i2c_aux_find(i2c, NVKM_I2C_AUX_CCB(dcbE->i2c_index));
	else
		outp->dp.aux = nvkm_i2c_aux_find(i2c, NVKM_I2C_AUX_EXT(dcbE->extdev));
	if (!outp->dp.aux) {
	if (!outp->dp.aux) {
		OUTP_ERR(outp, "no aux");
		OUTP_ERR(outp, "no aux");
		return -EINVAL;
		return -EINVAL;
@@ -812,21 +816,3 @@ nvkm_dp_ctor(struct nvkm_disp *disp, int index, struct dcb_output *dcbE,
	atomic_set(&outp->dp.lt.done, 0);
	atomic_set(&outp->dp.lt.done, 0);
	return 0;
	return 0;
}
}

int
nvkm_dp_new(struct nvkm_disp *disp, int index, struct dcb_output *dcbE, struct nvkm_outp **poutp)
{
	struct nvkm_i2c *i2c = disp->engine.subdev.device->i2c;
	struct nvkm_i2c_aux *aux;
	struct nvkm_outp *outp;

	if (dcbE->location == 0)
		aux = nvkm_i2c_aux_find(i2c, NVKM_I2C_AUX_CCB(dcbE->i2c_index));
	else
		aux = nvkm_i2c_aux_find(i2c, NVKM_I2C_AUX_EXT(dcbE->extdev));

	if (!(outp = *poutp = kzalloc(sizeof(*outp), GFP_KERNEL)))
		return -ENOMEM;

	return nvkm_dp_ctor(disp, index, dcbE, aux, outp);
}
+7 −5
Original line number Original line Diff line number Diff line
@@ -294,13 +294,17 @@ nvkm_outp_del(struct nvkm_outp **poutp)
}
}


int
int
nvkm_outp_ctor(const struct nvkm_outp_func *func, struct nvkm_disp *disp,
nvkm_outp_new_(const struct nvkm_outp_func *func, struct nvkm_disp *disp,
	       int index, struct dcb_output *dcbE, struct nvkm_outp *outp)
	       int index, struct dcb_output *dcbE, struct nvkm_outp **poutp)
{
{
	struct nvkm_i2c *i2c = disp->engine.subdev.device->i2c;
	struct nvkm_i2c *i2c = disp->engine.subdev.device->i2c;
	struct nvkm_outp *outp;
	enum nvkm_ior_proto proto;
	enum nvkm_ior_proto proto;
	enum nvkm_ior_type type;
	enum nvkm_ior_type type;


	if (!(outp = *poutp = kzalloc(sizeof(*outp), GFP_KERNEL)))
		return -ENOMEM;

	outp->func = func;
	outp->func = func;
	outp->disp = disp;
	outp->disp = disp;
	outp->index = index;
	outp->index = index;
@@ -330,7 +334,5 @@ int
nvkm_outp_new(struct nvkm_disp *disp, int index, struct dcb_output *dcbE,
nvkm_outp_new(struct nvkm_disp *disp, int index, struct dcb_output *dcbE,
	      struct nvkm_outp **poutp)
	      struct nvkm_outp **poutp)
{
{
	if (!(*poutp = kzalloc(sizeof(**poutp), GFP_KERNEL)))
	return nvkm_outp_new_(&nvkm_outp, disp, index, dcbE, poutp);
		return -ENOMEM;
	return nvkm_outp_ctor(&nvkm_outp, disp, index, dcbE, *poutp);
}
}
+3 −4
Original line number Original line Diff line number Diff line
@@ -55,10 +55,9 @@ struct nvkm_outp {
	};
	};
};
};


int nvkm_outp_ctor(const struct nvkm_outp_func *, struct nvkm_disp *,
int nvkm_outp_new_(const struct nvkm_outp_func *, struct nvkm_disp *, int index,
		   int index, struct dcb_output *, struct nvkm_outp *);
		   struct dcb_output *, struct nvkm_outp **);
int nvkm_outp_new(struct nvkm_disp *, int index, struct dcb_output *,
int nvkm_outp_new(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_outp **);
		  struct nvkm_outp **);
void nvkm_outp_del(struct nvkm_outp **);
void nvkm_outp_del(struct nvkm_outp **);
void nvkm_outp_init(struct nvkm_outp *);
void nvkm_outp_init(struct nvkm_outp *);
void nvkm_outp_fini(struct nvkm_outp *);
void nvkm_outp_fini(struct nvkm_outp *);