Commit d36d0e63 authored by Enrico Scholz's avatar Enrico Scholz Committed by Philipp Zabel
Browse files

gpu: ipu-v3: csi: pass back mbus_code_to_bus_cfg error codes



mbus_code_to_bus_cfg() can fail on unknown mbus codes; pass back the
error to the caller.

Signed-off-by: default avatarEnrico Scholz <enrico.scholz@sigma-chemnitz.de>
Signed-off-by: default avatarJan Luebbe <jlu@pengutronix.de>
[p.zabel@pengutronix.de - renamed rc to ret for consistency]
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent 7cc3bf3f
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -324,13 +324,17 @@ static int mbus_code_to_bus_cfg(struct ipu_csi_bus_config *cfg, u32 mbus_code)
/*
 * Fill a CSI bus config struct from mbus_config and mbus_framefmt.
 */
static void fill_csi_bus_cfg(struct ipu_csi_bus_config *csicfg,
static int fill_csi_bus_cfg(struct ipu_csi_bus_config *csicfg,
				 struct v4l2_mbus_config *mbus_cfg,
				 struct v4l2_mbus_framefmt *mbus_fmt)
{
	int ret;

	memset(csicfg, 0, sizeof(*csicfg));

	mbus_code_to_bus_cfg(csicfg, mbus_fmt->code);
	ret = mbus_code_to_bus_cfg(csicfg, mbus_fmt->code);
	if (ret < 0)
		return ret;

	switch (mbus_cfg->type) {
	case V4L2_MBUS_PARALLEL:
@@ -362,6 +366,8 @@ static void fill_csi_bus_cfg(struct ipu_csi_bus_config *csicfg,
		/* will never get here, keep compiler quiet */
		break;
	}

	return 0;
}

int ipu_csi_init_interface(struct ipu_csi *csi,
@@ -371,8 +377,11 @@ int ipu_csi_init_interface(struct ipu_csi *csi,
	struct ipu_csi_bus_config cfg;
	unsigned long flags;
	u32 width, height, data = 0;
	int ret;

	fill_csi_bus_cfg(&cfg, mbus_cfg, mbus_fmt);
	ret = fill_csi_bus_cfg(&cfg, mbus_cfg, mbus_fmt);
	if (ret < 0)
		return ret;

	/* set default sensor frame width and height */
	width = mbus_fmt->width;
@@ -593,11 +602,14 @@ int ipu_csi_set_mipi_datatype(struct ipu_csi *csi, u32 vc,
	struct ipu_csi_bus_config cfg;
	unsigned long flags;
	u32 temp;
	int ret;

	if (vc > 3)
		return -EINVAL;

	mbus_code_to_bus_cfg(&cfg, mbus_fmt->code);
	ret = mbus_code_to_bus_cfg(&cfg, mbus_fmt->code);
	if (ret < 0)
		return ret;

	spin_lock_irqsave(&csi->lock, flags);