diff mbox series

[11/13,SRU,OEM-5.13] UBUNTU: SAUCE: intel/ipu6: Remove unnecessary video devices

Message ID 20210729064832.25656-12-vicamo.yang@canonical.com
State New
Headers show
Series Support MIPI camera through Intel IPU6 | expand

Commit Message

You-Sheng Yang July 29, 2021, 6:48 a.m. UTC
From: Wang Yating <yating.wang@intel.com>

BugLink: https://bugs.launchpad.net/bugs/1921345

Signed-off-by: Wang Yating <yating.wang@intel.com>
(backported from
https://github.com/intel/ipu6-drivers/commit/362375c928d184fb0b4187df7da1ffd506bbd07f)
Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
---
 drivers/media/pci/intel/ipu-isys-csi2-be.c | 325 ---------------------
 drivers/media/pci/intel/ipu-isys-csi2-be.h |   3 -
 drivers/media/pci/intel/ipu-isys-csi2.c    |  31 --
 drivers/media/pci/intel/ipu-isys-tpg.c     | 311 --------------------
 drivers/media/pci/intel/ipu-isys-tpg.h     |  99 -------
 drivers/media/pci/intel/ipu-isys-video.c   |  10 -
 drivers/media/pci/intel/ipu-isys-video.h   |   1 -
 drivers/media/pci/intel/ipu-isys.c         |  77 -----
 drivers/media/pci/intel/ipu-isys.h         |   5 +-
 drivers/media/pci/intel/ipu-pdata.h        |   7 -
 drivers/media/pci/intel/ipu6/Makefile      |   3 -
 drivers/media/pci/intel/ipu6/ipu6-isys.c   | 144 ---------
 drivers/media/pci/intel/ipu6/ipu6.c        |  26 +-
 13 files changed, 2 insertions(+), 1040 deletions(-)
 delete mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be.c
 delete mode 100644 drivers/media/pci/intel/ipu-isys-tpg.c
 delete mode 100644 drivers/media/pci/intel/ipu-isys-tpg.h
diff mbox series

Patch

diff --git a/drivers/media/pci/intel/ipu-isys-csi2-be.c b/drivers/media/pci/intel/ipu-isys-csi2-be.c
deleted file mode 100644
index 99ceb607feda..000000000000
--- a/drivers/media/pci/intel/ipu-isys-csi2-be.c
+++ /dev/null
@@ -1,325 +0,0 @@ 
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (C) 2014 - 2020 Intel Corporation
-
-#include <linux/device.h>
-#include <linux/module.h>
-
-#include <media/ipu-isys.h>
-#include <media/media-entity.h>
-#include <media/v4l2-device.h>
-
-#include "ipu.h"
-#include "ipu-bus.h"
-#include "ipu-isys.h"
-#include "ipu-isys-csi2-be.h"
-#include "ipu-isys-subdev.h"
-#include "ipu-isys-video.h"
-
-/*
- * Raw bayer format pixel order MUST BE MAINTAINED in groups of four codes.
- * Otherwise pixel order calculation below WILL BREAK!
- */
-static const u32 csi2_be_supported_codes_pad[] = {
-	MEDIA_BUS_FMT_SBGGR12_1X12,
-	MEDIA_BUS_FMT_SGBRG12_1X12,
-	MEDIA_BUS_FMT_SGRBG12_1X12,
-	MEDIA_BUS_FMT_SRGGB12_1X12,
-	MEDIA_BUS_FMT_SBGGR10_1X10,
-	MEDIA_BUS_FMT_SGBRG10_1X10,
-	MEDIA_BUS_FMT_SGRBG10_1X10,
-	MEDIA_BUS_FMT_SRGGB10_1X10,
-	MEDIA_BUS_FMT_SBGGR8_1X8,
-	MEDIA_BUS_FMT_SGBRG8_1X8,
-	MEDIA_BUS_FMT_SGRBG8_1X8,
-	MEDIA_BUS_FMT_SRGGB8_1X8,
-	0,
-};
-
-static const u32 *csi2_be_supported_codes[] = {
-	csi2_be_supported_codes_pad,
-	csi2_be_supported_codes_pad,
-};
-
-static struct v4l2_subdev_internal_ops csi2_be_sd_internal_ops = {
-	.open = ipu_isys_subdev_open,
-	.close = ipu_isys_subdev_close,
-};
-
-static const struct v4l2_subdev_core_ops csi2_be_sd_core_ops = {
-};
-
-static const struct v4l2_ctrl_config compression_ctrl_cfg = {
-	.ops = NULL,
-	.id = V4L2_CID_IPU_ISYS_COMPRESSION,
-	.name = "ISYS CSI-BE compression",
-	.type = V4L2_CTRL_TYPE_BOOLEAN,
-	.min = 0,
-	.max = 1,
-	.step = 1,
-	.def = 0,
-};
-
-static int set_stream(struct v4l2_subdev *sd, int enable)
-{
-	return 0;
-}
-
-static const struct v4l2_subdev_video_ops csi2_be_sd_video_ops = {
-	.s_stream = set_stream,
-};
-
-static int __subdev_link_validate(struct v4l2_subdev *sd,
-				  struct media_link *link,
-				  struct v4l2_subdev_format *source_fmt,
-				  struct v4l2_subdev_format *sink_fmt)
-{
-	struct ipu_isys_pipeline *ip = container_of(sd->entity.pipe,
-						    struct ipu_isys_pipeline,
-						    pipe);
-
-	ip->csi2_be = to_ipu_isys_csi2_be(sd);
-	return ipu_isys_subdev_link_validate(sd, link, source_fmt, sink_fmt);
-}
-
-static int get_supported_code_index(u32 code)
-{
-	int i;
-
-	for (i = 0; csi2_be_supported_codes_pad[i]; i++) {
-		if (csi2_be_supported_codes_pad[i] == code)
-			return i;
-	}
-	return -EINVAL;
-}
-
-static int ipu_isys_csi2_be_set_sel(struct v4l2_subdev *sd,
-				    struct v4l2_subdev_pad_config *cfg,
-				    struct v4l2_subdev_selection *sel)
-{
-	struct ipu_isys_subdev *asd = to_ipu_isys_subdev(sd);
-	struct media_pad *pad = &asd->sd.entity.pads[sel->pad];
-
-	if (sel->target == V4L2_SEL_TGT_CROP &&
-	    pad->flags & MEDIA_PAD_FL_SOURCE &&
-	    asd->valid_tgts[CSI2_BE_PAD_SOURCE].crop) {
-		struct v4l2_mbus_framefmt *ffmt =
-			__ipu_isys_get_ffmt(sd, cfg, sel->pad, sel->which);
-		struct v4l2_rect *r = __ipu_isys_get_selection
-		    (sd, cfg, sel->target, CSI2_BE_PAD_SINK, sel->which);
-
-		if (get_supported_code_index(ffmt->code) < 0) {
-			/* Non-bayer formats can't be single line cropped */
-			sel->r.left &= ~1;
-			sel->r.top &= ~1;
-
-			/* Non-bayer formats can't pe padded at all */
-			sel->r.width = clamp(sel->r.width,
-					     IPU_ISYS_MIN_WIDTH, r->width);
-		} else {
-			sel->r.width = clamp(sel->r.width,
-					     IPU_ISYS_MIN_WIDTH,
-					     IPU_ISYS_MAX_WIDTH);
-		}
-
-		/*
-		 * Vertical padding is not supported, height is
-		 * restricted by sink pad resolution.
-		 */
-		sel->r.height = clamp(sel->r.height, IPU_ISYS_MIN_HEIGHT,
-				      r->height);
-		*__ipu_isys_get_selection(sd, cfg, sel->target, sel->pad,
-					  sel->which) = sel->r;
-		ipu_isys_subdev_fmt_propagate
-		    (sd, cfg, NULL, &sel->r,
-		     IPU_ISYS_SUBDEV_PROP_TGT_SOURCE_CROP,
-		     sel->pad, sel->which);
-		return 0;
-	}
-	return ipu_isys_subdev_set_sel(sd, cfg, sel);
-}
-
-static const struct v4l2_subdev_pad_ops csi2_be_sd_pad_ops = {
-	.link_validate = __subdev_link_validate,
-	.get_fmt = ipu_isys_subdev_get_ffmt,
-	.set_fmt = ipu_isys_subdev_set_ffmt,
-	.get_selection = ipu_isys_subdev_get_sel,
-	.set_selection = ipu_isys_csi2_be_set_sel,
-	.enum_mbus_code = ipu_isys_subdev_enum_mbus_code,
-};
-
-static struct v4l2_subdev_ops csi2_be_sd_ops = {
-	.core = &csi2_be_sd_core_ops,
-	.video = &csi2_be_sd_video_ops,
-	.pad = &csi2_be_sd_pad_ops,
-};
-
-static struct media_entity_operations csi2_be_entity_ops = {
-	.link_validate = v4l2_subdev_link_validate,
-};
-
-static void csi2_be_set_ffmt(struct v4l2_subdev *sd,
-			     struct v4l2_subdev_pad_config *cfg,
-			     struct v4l2_subdev_format *fmt)
-{
-	struct ipu_isys_csi2 *csi2 = to_ipu_isys_csi2(sd);
-	struct v4l2_mbus_framefmt *ffmt =
-		__ipu_isys_get_ffmt(sd, cfg, fmt->pad, fmt->which);
-
-	switch (fmt->pad) {
-	case CSI2_BE_PAD_SINK:
-		if (fmt->format.field != V4L2_FIELD_ALTERNATE)
-			fmt->format.field = V4L2_FIELD_NONE;
-		*ffmt = fmt->format;
-
-		ipu_isys_subdev_fmt_propagate
-		    (sd, cfg, &fmt->format, NULL,
-		     IPU_ISYS_SUBDEV_PROP_TGT_SINK_FMT, fmt->pad, fmt->which);
-		return;
-	case CSI2_BE_PAD_SOURCE: {
-		struct v4l2_mbus_framefmt *sink_ffmt =
-			__ipu_isys_get_ffmt(sd, cfg, CSI2_BE_PAD_SINK,
-					    fmt->which);
-		struct v4l2_rect *r =
-			__ipu_isys_get_selection(sd, cfg, V4L2_SEL_TGT_CROP,
-						 CSI2_BE_PAD_SOURCE,
-						 fmt->which);
-		struct ipu_isys_subdev *asd = to_ipu_isys_subdev(sd);
-		u32 code = sink_ffmt->code;
-		int idx = get_supported_code_index(code);
-
-		if (asd->valid_tgts[CSI2_BE_PAD_SOURCE].crop && idx >= 0) {
-			int crop_info = 0;
-
-			if (r->top & 1)
-				crop_info |= CSI2_BE_CROP_VER;
-			if (r->left & 1)
-				crop_info |= CSI2_BE_CROP_HOR;
-			code = csi2_be_supported_codes_pad
-				[((idx & CSI2_BE_CROP_MASK) ^ crop_info)
-				+ (idx & ~CSI2_BE_CROP_MASK)];
-		}
-		ffmt->width = r->width;
-		ffmt->height = r->height;
-		ffmt->code = code;
-		ffmt->field = sink_ffmt->field;
-		return;
-	}
-	default:
-		dev_err(&csi2->isys->adev->dev, "Unknown pad type\n");
-		WARN_ON(1);
-	}
-}
-
-void ipu_isys_csi2_be_cleanup(struct ipu_isys_csi2_be *csi2_be)
-{
-	v4l2_ctrl_handler_free(&csi2_be->av.ctrl_handler);
-	v4l2_device_unregister_subdev(&csi2_be->asd.sd);
-	ipu_isys_subdev_cleanup(&csi2_be->asd);
-	ipu_isys_video_cleanup(&csi2_be->av);
-}
-
-int ipu_isys_csi2_be_init(struct ipu_isys_csi2_be *csi2_be,
-			  struct ipu_isys *isys)
-{
-	struct v4l2_subdev_format fmt = {
-		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
-		.pad = CSI2_BE_PAD_SINK,
-		.format = {
-			   .width = 4096,
-			   .height = 3072,
-			  },
-	};
-	struct v4l2_subdev_selection sel = {
-		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
-		.pad = CSI2_BE_PAD_SOURCE,
-		.target = V4L2_SEL_TGT_CROP,
-		.r = {
-		      .width = fmt.format.width,
-		      .height = fmt.format.height,
-		     },
-	};
-	int rval;
-
-	csi2_be->asd.sd.entity.ops = &csi2_be_entity_ops;
-	csi2_be->asd.isys = isys;
-
-	rval = ipu_isys_subdev_init(&csi2_be->asd, &csi2_be_sd_ops, 0,
-				    NR_OF_CSI2_BE_PADS,
-				    NR_OF_CSI2_BE_SOURCE_PADS,
-				    NR_OF_CSI2_BE_SINK_PADS, 0);
-	if (rval)
-		goto fail;
-
-	csi2_be->asd.pad[CSI2_BE_PAD_SINK].flags = MEDIA_PAD_FL_SINK
-	    | MEDIA_PAD_FL_MUST_CONNECT;
-	csi2_be->asd.pad[CSI2_BE_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
-	csi2_be->asd.valid_tgts[CSI2_BE_PAD_SOURCE].crop = true;
-	csi2_be->asd.set_ffmt = csi2_be_set_ffmt;
-
-	BUILD_BUG_ON(ARRAY_SIZE(csi2_be_supported_codes) != NR_OF_CSI2_BE_PADS);
-	csi2_be->asd.supported_codes = csi2_be_supported_codes;
-	csi2_be->asd.be_mode = IPU_BE_RAW;
-	csi2_be->asd.isl_mode = IPU_ISL_CSI2_BE;
-
-	ipu_isys_subdev_set_ffmt(&csi2_be->asd.sd, NULL, &fmt);
-	ipu_isys_csi2_be_set_sel(&csi2_be->asd.sd, NULL, &sel);
-
-	csi2_be->asd.sd.internal_ops = &csi2_be_sd_internal_ops;
-	snprintf(csi2_be->asd.sd.name, sizeof(csi2_be->asd.sd.name),
-		 IPU_ISYS_ENTITY_PREFIX " CSI2 BE");
-	snprintf(csi2_be->av.vdev.name, sizeof(csi2_be->av.vdev.name),
-		 IPU_ISYS_ENTITY_PREFIX " CSI2 BE capture");
-	csi2_be->av.aq.css_pin_type = IPU_FW_ISYS_PIN_TYPE_RAW_NS;
-	v4l2_set_subdevdata(&csi2_be->asd.sd, &csi2_be->asd);
-	rval = v4l2_device_register_subdev(&isys->v4l2_dev, &csi2_be->asd.sd);
-	if (rval) {
-		dev_info(&isys->adev->dev, "can't register v4l2 subdev\n");
-		goto fail;
-	}
-
-	csi2_be->av.isys = isys;
-	csi2_be->av.pfmts = ipu_isys_pfmts;
-	csi2_be->av.try_fmt_vid_mplane =
-	    ipu_isys_video_try_fmt_vid_mplane_default;
-	csi2_be->av.prepare_fw_stream =
-	    ipu_isys_prepare_fw_cfg_default;
-	csi2_be->av.aq.buf_prepare = ipu_isys_buf_prepare;
-	csi2_be->av.aq.fill_frame_buff_set_pin =
-	    ipu_isys_buffer_to_fw_frame_buff_pin;
-	csi2_be->av.aq.link_fmt_validate = ipu_isys_link_fmt_validate;
-	csi2_be->av.aq.vbq.buf_struct_size =
-	    sizeof(struct ipu_isys_video_buffer);
-
-	/* create v4l2 ctrl for csi-be video node */
-	rval = v4l2_ctrl_handler_init(&csi2_be->av.ctrl_handler, 0);
-	if (rval) {
-		dev_err(&isys->adev->dev,
-			"failed to init v4l2 ctrl handler for csi2_be\n");
-		goto fail;
-	}
-
-	csi2_be->av.compression_ctrl =
-		v4l2_ctrl_new_custom(&csi2_be->av.ctrl_handler,
-				     &compression_ctrl_cfg, NULL);
-	if (!csi2_be->av.compression_ctrl) {
-		dev_err(&isys->adev->dev,
-			"failed to create CSI-BE cmprs ctrl\n");
-		goto fail;
-	}
-	csi2_be->av.compression = 0;
-	csi2_be->av.vdev.ctrl_handler = &csi2_be->av.ctrl_handler;
-
-	rval = ipu_isys_video_init(&csi2_be->av, &csi2_be->asd.sd.entity,
-				   CSI2_BE_PAD_SOURCE, MEDIA_PAD_FL_SINK, 0);
-	if (rval) {
-		dev_info(&isys->adev->dev, "can't init video node\n");
-		goto fail;
-	}
-
-	return 0;
-
-fail:
-	ipu_isys_csi2_be_cleanup(csi2_be);
-
-	return rval;
-}
diff --git a/drivers/media/pci/intel/ipu-isys-csi2-be.h b/drivers/media/pci/intel/ipu-isys-csi2-be.h
index b90e55446948..a9f5880f3394 100644
--- a/drivers/media/pci/intel/ipu-isys-csi2-be.h
+++ b/drivers/media/pci/intel/ipu-isys-csi2-be.h
@@ -56,11 +56,8 @@  struct ipu_isys_csi2_be_soc {
 	container_of(to_ipu_isys_subdev(sd), \
 	struct ipu_isys_csi2_be_soc, asd)
 
-int ipu_isys_csi2_be_init(struct ipu_isys_csi2_be *csi2_be,
-			  struct ipu_isys *isys);
 int ipu_isys_csi2_be_soc_init(struct ipu_isys_csi2_be_soc *csi2_be_soc,
 			      struct ipu_isys *isys, int index);
-void ipu_isys_csi2_be_cleanup(struct ipu_isys_csi2_be *csi2_be);
 void ipu_isys_csi2_be_soc_cleanup(struct ipu_isys_csi2_be_soc *csi2_be);
 
 #endif /* IPU_ISYS_CSI2_BE_H */
diff --git a/drivers/media/pci/intel/ipu-isys-csi2.c b/drivers/media/pci/intel/ipu-isys-csi2.c
index 4437e1bf88b2..1242a79718b1 100644
--- a/drivers/media/pci/intel/ipu-isys-csi2.c
+++ b/drivers/media/pci/intel/ipu-isys-csi2.c
@@ -416,7 +416,6 @@  void ipu_isys_csi2_cleanup(struct ipu_isys_csi2 *csi2)
 
 	v4l2_device_unregister_subdev(&csi2->asd.sd);
 	ipu_isys_subdev_cleanup(&csi2->asd);
-	ipu_isys_video_cleanup(&csi2->av);
 	csi2->isys = NULL;
 }
 
@@ -499,36 +498,6 @@  int ipu_isys_csi2_init(struct ipu_isys_csi2 *csi2,
 	__ipu_isys_subdev_set_ffmt(&csi2->asd.sd, NULL, &fmt);
 	mutex_unlock(&csi2->asd.mutex);
 
-	snprintf(csi2->av.vdev.name, sizeof(csi2->av.vdev.name),
-		 IPU_ISYS_ENTITY_PREFIX " CSI-2 %u capture", index);
-	csi2->av.isys = isys;
-	csi2->av.aq.css_pin_type = IPU_FW_ISYS_PIN_TYPE_MIPI;
-	csi2->av.pfmts = ipu_isys_pfmts_packed;
-	csi2->av.try_fmt_vid_mplane = csi2_try_fmt;
-	csi2->av.prepare_fw_stream =
-		ipu_isys_prepare_fw_cfg_default;
-	csi2->av.packed = true;
-	csi2->av.line_header_length =
-		IPU_ISYS_CSI2_LONG_PACKET_HEADER_SIZE;
-	csi2->av.line_footer_length =
-		IPU_ISYS_CSI2_LONG_PACKET_FOOTER_SIZE;
-	csi2->av.aq.buf_prepare = ipu_isys_buf_prepare;
-	csi2->av.aq.fill_frame_buff_set_pin =
-	ipu_isys_buffer_to_fw_frame_buff_pin;
-	csi2->av.aq.link_fmt_validate =
-		ipu_isys_link_fmt_validate;
-	csi2->av.aq.vbq.buf_struct_size =
-		sizeof(struct ipu_isys_video_buffer);
-
-	rval = ipu_isys_video_init(&csi2->av,
-				   &csi2->asd.sd.entity,
-				   CSI2_PAD_SOURCE,
-				   MEDIA_PAD_FL_SINK, 0);
-	if (rval) {
-		dev_info(&isys->adev->dev, "can't init video node\n");
-		goto fail;
-	}
-
 	return 0;
 
 fail:
diff --git a/drivers/media/pci/intel/ipu-isys-tpg.c b/drivers/media/pci/intel/ipu-isys-tpg.c
deleted file mode 100644
index 9c6855ff0cbc..000000000000
--- a/drivers/media/pci/intel/ipu-isys-tpg.c
+++ /dev/null
@@ -1,311 +0,0 @@ 
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (C) 2013 - 2020 Intel Corporation
-
-#include <linux/device.h>
-#include <linux/module.h>
-
-#include <media/media-entity.h>
-#include <media/v4l2-device.h>
-#include <media/v4l2-event.h>
-
-#include "ipu.h"
-#include "ipu-bus.h"
-#include "ipu-isys.h"
-#include "ipu-isys-subdev.h"
-#include "ipu-isys-tpg.h"
-#include "ipu-isys-video.h"
-#include "ipu-platform-isys-csi2-reg.h"
-
-static const u32 tpg_supported_codes_pad[] = {
-	MEDIA_BUS_FMT_SBGGR8_1X8,
-	MEDIA_BUS_FMT_SGBRG8_1X8,
-	MEDIA_BUS_FMT_SGRBG8_1X8,
-	MEDIA_BUS_FMT_SRGGB8_1X8,
-	MEDIA_BUS_FMT_SBGGR10_1X10,
-	MEDIA_BUS_FMT_SGBRG10_1X10,
-	MEDIA_BUS_FMT_SGRBG10_1X10,
-	MEDIA_BUS_FMT_SRGGB10_1X10,
-	0,
-};
-
-static const u32 *tpg_supported_codes[] = {
-	tpg_supported_codes_pad,
-};
-
-static struct v4l2_subdev_internal_ops tpg_sd_internal_ops = {
-	.open = ipu_isys_subdev_open,
-	.close = ipu_isys_subdev_close,
-};
-
-static const struct v4l2_subdev_video_ops tpg_sd_video_ops = {
-	.s_stream = tpg_set_stream,
-};
-
-static int ipu_isys_tpg_s_ctrl(struct v4l2_ctrl *ctrl)
-{
-	struct ipu_isys_tpg *tpg = container_of(container_of(ctrl->handler,
-							     struct
-							     ipu_isys_subdev,
-							     ctrl_handler),
-						struct ipu_isys_tpg, asd);
-
-	switch (ctrl->id) {
-	case V4L2_CID_HBLANK:
-		writel(ctrl->val, tpg->base + MIPI_GEN_REG_SYNG_HBLANK_CYC);
-		break;
-	case V4L2_CID_VBLANK:
-		writel(ctrl->val, tpg->base + MIPI_GEN_REG_SYNG_VBLANK_CYC);
-		break;
-	case V4L2_CID_TEST_PATTERN:
-		writel(ctrl->val, tpg->base + MIPI_GEN_REG_TPG_MODE);
-		break;
-	}
-
-	return 0;
-}
-
-static const struct v4l2_ctrl_ops ipu_isys_tpg_ctrl_ops = {
-	.s_ctrl = ipu_isys_tpg_s_ctrl,
-};
-
-static s64 ipu_isys_tpg_rate(struct ipu_isys_tpg *tpg, unsigned int bpp)
-{
-	return MIPI_GEN_PPC * IPU_ISYS_FREQ / bpp;
-}
-
-static const char *const tpg_mode_items[] = {
-	"Ramp",
-	"Checkerboard",	/* Does not work, disabled. */
-	"Frame Based Colour",
-};
-
-static struct v4l2_ctrl_config tpg_mode = {
-	.ops = &ipu_isys_tpg_ctrl_ops,
-	.id = V4L2_CID_TEST_PATTERN,
-	.name = "Test Pattern",
-	.type = V4L2_CTRL_TYPE_MENU,
-	.min = 0,
-	.max = ARRAY_SIZE(tpg_mode_items) - 1,
-	.def = 0,
-	.menu_skip_mask = 0x2,
-	.qmenu = tpg_mode_items,
-};
-
-static const struct v4l2_ctrl_config csi2_header_cfg = {
-	.id = V4L2_CID_IPU_STORE_CSI2_HEADER,
-	.name = "Store CSI-2 Headers",
-	.type = V4L2_CTRL_TYPE_BOOLEAN,
-	.min = 0,
-	.max = 1,
-	.step = 1,
-	.def = 1,
-};
-
-static void ipu_isys_tpg_init_controls(struct v4l2_subdev *sd)
-{
-	struct ipu_isys_tpg *tpg = to_ipu_isys_tpg(sd);
-	int hblank;
-	u64 default_pixel_rate;
-
-	hblank = 1024;
-
-	tpg->hblank = v4l2_ctrl_new_std(&tpg->asd.ctrl_handler,
-					&ipu_isys_tpg_ctrl_ops,
-					V4L2_CID_HBLANK, 8, 65535, 1, hblank);
-
-	tpg->vblank = v4l2_ctrl_new_std(&tpg->asd.ctrl_handler,
-					&ipu_isys_tpg_ctrl_ops,
-					V4L2_CID_VBLANK, 8, 65535, 1, 1024);
-
-	default_pixel_rate = ipu_isys_tpg_rate(tpg, 8);
-	tpg->pixel_rate = v4l2_ctrl_new_std(&tpg->asd.ctrl_handler,
-					    &ipu_isys_tpg_ctrl_ops,
-					    V4L2_CID_PIXEL_RATE,
-					    default_pixel_rate,
-					    default_pixel_rate,
-					    1, default_pixel_rate);
-	if (tpg->pixel_rate) {
-		tpg->pixel_rate->cur.val = default_pixel_rate;
-		tpg->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY;
-	}
-
-	v4l2_ctrl_new_custom(&tpg->asd.ctrl_handler, &tpg_mode, NULL);
-	tpg->store_csi2_header =
-		v4l2_ctrl_new_custom(&tpg->asd.ctrl_handler,
-				     &csi2_header_cfg, NULL);
-}
-
-static void tpg_set_ffmt(struct v4l2_subdev *sd,
-			 struct v4l2_subdev_pad_config *cfg,
-			 struct v4l2_subdev_format *fmt)
-{
-	fmt->format.field = V4L2_FIELD_NONE;
-	*__ipu_isys_get_ffmt(sd, cfg, fmt->pad, fmt->which) = fmt->format;
-}
-
-static int ipu_isys_tpg_set_ffmt(struct v4l2_subdev *sd,
-				 struct v4l2_subdev_pad_config *cfg,
-				 struct v4l2_subdev_format *fmt)
-{
-	struct ipu_isys_tpg *tpg = to_ipu_isys_tpg(sd);
-	__u32 code = tpg->asd.ffmt[TPG_PAD_SOURCE].code;
-	unsigned int bpp = ipu_isys_mbus_code_to_bpp(code);
-	s64 tpg_rate = ipu_isys_tpg_rate(tpg, bpp);
-	int rval;
-
-	mutex_lock(&tpg->asd.mutex);
-	rval = __ipu_isys_subdev_set_ffmt(sd, cfg, fmt);
-	mutex_unlock(&tpg->asd.mutex);
-
-	if (rval || fmt->which != V4L2_SUBDEV_FORMAT_ACTIVE)
-		return rval;
-
-	v4l2_ctrl_s_ctrl_int64(tpg->pixel_rate, tpg_rate);
-
-	return 0;
-}
-
-static const struct ipu_isys_pixelformat *
-ipu_isys_tpg_try_fmt(struct ipu_isys_video *av,
-		     struct v4l2_pix_format_mplane *mpix)
-{
-	struct media_link *link = list_first_entry(&av->vdev.entity.links,
-						   struct media_link, list);
-	struct v4l2_subdev *sd =
-		media_entity_to_v4l2_subdev(link->source->entity);
-	struct ipu_isys_tpg *tpg;
-
-	if (!sd)
-		return NULL;
-
-	tpg = to_ipu_isys_tpg(sd);
-
-	return ipu_isys_video_try_fmt_vid_mplane(av, mpix,
-		v4l2_ctrl_g_ctrl(tpg->store_csi2_header));
-}
-
-static const struct v4l2_subdev_pad_ops tpg_sd_pad_ops = {
-	.get_fmt = ipu_isys_subdev_get_ffmt,
-	.set_fmt = ipu_isys_tpg_set_ffmt,
-	.enum_mbus_code = ipu_isys_subdev_enum_mbus_code,
-};
-
-static int subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,
-			   struct v4l2_event_subscription *sub)
-{
-	switch (sub->type) {
-#ifdef IPU_TPG_FRAME_SYNC
-	case V4L2_EVENT_FRAME_SYNC:
-		return v4l2_event_subscribe(fh, sub, 10, NULL);
-#endif
-	case V4L2_EVENT_CTRL:
-		return v4l2_ctrl_subscribe_event(fh, sub);
-	default:
-		return -EINVAL;
-	}
-};
-
-/* V4L2 subdev core operations */
-static const struct v4l2_subdev_core_ops tpg_sd_core_ops = {
-	.subscribe_event = subscribe_event,
-	.unsubscribe_event = v4l2_event_subdev_unsubscribe,
-};
-
-static struct v4l2_subdev_ops tpg_sd_ops = {
-	.core = &tpg_sd_core_ops,
-	.video = &tpg_sd_video_ops,
-	.pad = &tpg_sd_pad_ops,
-};
-
-static struct media_entity_operations tpg_entity_ops = {
-	.link_validate = v4l2_subdev_link_validate,
-};
-
-void ipu_isys_tpg_cleanup(struct ipu_isys_tpg *tpg)
-{
-	v4l2_device_unregister_subdev(&tpg->asd.sd);
-	ipu_isys_subdev_cleanup(&tpg->asd);
-	ipu_isys_video_cleanup(&tpg->av);
-}
-
-int ipu_isys_tpg_init(struct ipu_isys_tpg *tpg,
-		      struct ipu_isys *isys,
-		      void __iomem *base, void __iomem *sel,
-		      unsigned int index)
-{
-	struct v4l2_subdev_format fmt = {
-		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
-		.pad = TPG_PAD_SOURCE,
-		.format = {
-			   .width = 4096,
-			   .height = 3072,
-			   },
-	};
-	int rval;
-
-	tpg->isys = isys;
-	tpg->base = base;
-	tpg->sel = sel;
-	tpg->index = index;
-
-	tpg->asd.sd.entity.ops = &tpg_entity_ops;
-	tpg->asd.ctrl_init = ipu_isys_tpg_init_controls;
-	tpg->asd.isys = isys;
-
-	rval = ipu_isys_subdev_init(&tpg->asd, &tpg_sd_ops, 5,
-				    NR_OF_TPG_PADS,
-				    NR_OF_TPG_SOURCE_PADS,
-				    NR_OF_TPG_SINK_PADS,
-				    V4L2_SUBDEV_FL_HAS_EVENTS);
-	if (rval)
-		return rval;
-
-	tpg->asd.sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
-	tpg->asd.pad[TPG_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
-
-	tpg->asd.source = IPU_FW_ISYS_STREAM_SRC_MIPIGEN_PORT0 + index;
-	tpg->asd.supported_codes = tpg_supported_codes;
-	tpg->asd.set_ffmt = tpg_set_ffmt;
-	ipu_isys_subdev_set_ffmt(&tpg->asd.sd, NULL, &fmt);
-
-	tpg->asd.sd.internal_ops = &tpg_sd_internal_ops;
-	snprintf(tpg->asd.sd.name, sizeof(tpg->asd.sd.name),
-		 IPU_ISYS_ENTITY_PREFIX " TPG %u", index);
-	v4l2_set_subdevdata(&tpg->asd.sd, &tpg->asd);
-	rval = v4l2_device_register_subdev(&isys->v4l2_dev, &tpg->asd.sd);
-	if (rval) {
-		dev_info(&isys->adev->dev, "can't register v4l2 subdev\n");
-		goto fail;
-	}
-
-	snprintf(tpg->av.vdev.name, sizeof(tpg->av.vdev.name),
-		 IPU_ISYS_ENTITY_PREFIX " TPG %u capture", index);
-	tpg->av.isys = isys;
-	tpg->av.aq.css_pin_type = IPU_FW_ISYS_PIN_TYPE_MIPI;
-	tpg->av.pfmts = ipu_isys_pfmts_packed;
-	tpg->av.try_fmt_vid_mplane = ipu_isys_tpg_try_fmt;
-	tpg->av.prepare_fw_stream =
-	    ipu_isys_prepare_fw_cfg_default;
-	tpg->av.packed = true;
-	tpg->av.line_header_length = IPU_ISYS_CSI2_LONG_PACKET_HEADER_SIZE;
-	tpg->av.line_footer_length = IPU_ISYS_CSI2_LONG_PACKET_FOOTER_SIZE;
-	tpg->av.aq.buf_prepare = ipu_isys_buf_prepare;
-	tpg->av.aq.fill_frame_buff_set_pin =
-	    ipu_isys_buffer_to_fw_frame_buff_pin;
-	tpg->av.aq.link_fmt_validate = ipu_isys_link_fmt_validate;
-	tpg->av.aq.vbq.buf_struct_size = sizeof(struct ipu_isys_video_buffer);
-
-	rval = ipu_isys_video_init(&tpg->av, &tpg->asd.sd.entity,
-				   TPG_PAD_SOURCE, MEDIA_PAD_FL_SINK, 0);
-	if (rval) {
-		dev_info(&isys->adev->dev, "can't init video node\n");
-		goto fail;
-	}
-
-	return 0;
-
-fail:
-	ipu_isys_tpg_cleanup(tpg);
-
-	return rval;
-}
diff --git a/drivers/media/pci/intel/ipu-isys-tpg.h b/drivers/media/pci/intel/ipu-isys-tpg.h
deleted file mode 100644
index 332f087ed774..000000000000
--- a/drivers/media/pci/intel/ipu-isys-tpg.h
+++ /dev/null
@@ -1,99 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright (C) 2013 - 2020 Intel Corporation */
-
-#ifndef IPU_ISYS_TPG_H
-#define IPU_ISYS_TPG_H
-
-#include <media/media-entity.h>
-#include <media/v4l2-ctrls.h>
-#include <media/v4l2-device.h>
-
-#include "ipu-isys-subdev.h"
-#include "ipu-isys-video.h"
-#include "ipu-isys-queue.h"
-
-struct ipu_isys_tpg_pdata;
-struct ipu_isys;
-
-#define TPG_PAD_SOURCE			0
-#define NR_OF_TPG_PADS			1
-#define NR_OF_TPG_SOURCE_PADS		1
-#define NR_OF_TPG_SINK_PADS		0
-#define NR_OF_TPG_STREAMS		1
-
-/*
- * PPC is 4 pixels for clock for RAW8, RAW10 and RAW12.
- * Source: FW validation test code.
- */
-#define MIPI_GEN_PPC		4
-
-#define MIPI_GEN_REG_COM_ENABLE				0x0
-#define MIPI_GEN_REG_COM_DTYPE				0x4
-/* RAW8, RAW10 or RAW12 */
-#define MIPI_GEN_COM_DTYPE_RAW(n)			(((n) - 8) / 2)
-#define MIPI_GEN_REG_COM_VTYPE				0x8
-#define MIPI_GEN_REG_COM_VCHAN				0xc
-#define MIPI_GEN_REG_COM_WCOUNT				0x10
-#define MIPI_GEN_REG_PRBS_RSTVAL0			0x14
-#define MIPI_GEN_REG_PRBS_RSTVAL1			0x18
-#define MIPI_GEN_REG_SYNG_FREE_RUN			0x1c
-#define MIPI_GEN_REG_SYNG_PAUSE				0x20
-#define MIPI_GEN_REG_SYNG_NOF_FRAMES			0x24
-#define MIPI_GEN_REG_SYNG_NOF_PIXELS			0x28
-#define MIPI_GEN_REG_SYNG_NOF_LINES			0x2c
-#define MIPI_GEN_REG_SYNG_HBLANK_CYC			0x30
-#define MIPI_GEN_REG_SYNG_VBLANK_CYC			0x34
-#define MIPI_GEN_REG_SYNG_STAT_HCNT			0x38
-#define MIPI_GEN_REG_SYNG_STAT_VCNT			0x3c
-#define MIPI_GEN_REG_SYNG_STAT_FCNT			0x40
-#define MIPI_GEN_REG_SYNG_STAT_DONE			0x44
-#define MIPI_GEN_REG_TPG_MODE				0x48
-#define MIPI_GEN_REG_TPG_HCNT_MASK			0x4c
-#define MIPI_GEN_REG_TPG_VCNT_MASK			0x50
-#define MIPI_GEN_REG_TPG_XYCNT_MASK			0x54
-#define MIPI_GEN_REG_TPG_HCNT_DELTA			0x58
-#define MIPI_GEN_REG_TPG_VCNT_DELTA			0x5c
-#define MIPI_GEN_REG_TPG_R1				0x60
-#define MIPI_GEN_REG_TPG_G1				0x64
-#define MIPI_GEN_REG_TPG_B1				0x68
-#define MIPI_GEN_REG_TPG_R2				0x6c
-#define MIPI_GEN_REG_TPG_G2				0x70
-#define MIPI_GEN_REG_TPG_B2				0x74
-
-/*
- * struct ipu_isys_tpg
- *
- * @nlanes: number of lanes in the receiver
- */
-struct ipu_isys_tpg {
-	struct ipu_isys_tpg_pdata *pdata;
-	struct ipu_isys *isys;
-	struct ipu_isys_subdev asd;
-	struct ipu_isys_video av;
-
-	void __iomem *base;
-	void __iomem *sel;
-	unsigned int index;
-	int streaming;
-
-	struct v4l2_ctrl *hblank;
-	struct v4l2_ctrl *vblank;
-	struct v4l2_ctrl *pixel_rate;
-	struct v4l2_ctrl *store_csi2_header;
-};
-
-#define to_ipu_isys_tpg(sd)		\
-	container_of(to_ipu_isys_subdev(sd), \
-	struct ipu_isys_tpg, asd)
-#ifdef IPU_TPG_FRAME_SYNC
-void ipu_isys_tpg_sof_event(struct ipu_isys_tpg *tpg);
-void ipu_isys_tpg_eof_event(struct ipu_isys_tpg *tpg);
-#endif
-int ipu_isys_tpg_init(struct ipu_isys_tpg *tpg,
-		      struct ipu_isys *isys,
-		      void __iomem *base, void __iomem *sel,
-		      unsigned int index);
-void ipu_isys_tpg_cleanup(struct ipu_isys_tpg *tpg);
-int tpg_set_stream(struct v4l2_subdev *sd, int enable);
-
-#endif /* IPU_ISYS_TPG_H */
diff --git a/drivers/media/pci/intel/ipu-isys-video.c b/drivers/media/pci/intel/ipu-isys-video.c
index f4fc3c92d45d..4353ef2a84e2 100644
--- a/drivers/media/pci/intel/ipu-isys-video.c
+++ b/drivers/media/pci/intel/ipu-isys-video.c
@@ -545,7 +545,6 @@  static int vidioc_s_input(struct file *file, void *fh, unsigned int input)
 static bool is_external(struct ipu_isys_video *av, struct media_entity *entity)
 {
 	struct v4l2_subdev *sd;
-	unsigned int i;
 
 	/* All video nodes are ours. */
 	if (!is_media_entity_v4l2_subdev(entity))
@@ -556,11 +555,6 @@  static bool is_external(struct ipu_isys_video *av, struct media_entity *entity)
 		    strlen(IPU_ISYS_ENTITY_PREFIX)) != 0)
 		return true;
 
-	for (i = 0; i < av->isys->pdata->ipdata->tpg.ntpgs &&
-	     av->isys->tpg[i].isys; i++)
-		if (entity == &av->isys->tpg[i].asd.sd.entity)
-			return true;
-
 	return false;
 }
 
@@ -982,9 +976,6 @@  static int start_stream_firmware(struct ipu_isys_video *av,
 	if (ip->csi2 && !v4l2_ctrl_g_ctrl(ip->csi2->store_csi2_header))
 		stream_cfg->input_pins[0].mipi_store_mode =
 		    IPU_FW_ISYS_MIPI_STORE_MODE_DISCARD_LONG_HEADER;
-	else if (ip->tpg && !v4l2_ctrl_g_ctrl(ip->tpg->store_csi2_header))
-		stream_cfg->input_pins[0].mipi_store_mode =
-		    IPU_FW_ISYS_MIPI_STORE_MODE_DISCARD_LONG_HEADER;
 
 	stream_cfg->src = ip->source;
 	stream_cfg->vc = 0;
@@ -1298,7 +1289,6 @@  int ipu_isys_video_prepare_streaming(struct ipu_isys_video *av,
 	ip->csi2_be = NULL;
 	ip->csi2_be_soc = NULL;
 	ip->csi2 = NULL;
-	ip->tpg = NULL;
 	ip->seq_index = 0;
 	memset(ip->seq, 0, sizeof(ip->seq));
 
diff --git a/drivers/media/pci/intel/ipu-isys-video.h b/drivers/media/pci/intel/ipu-isys-video.h
index e59218257b1d..6ed17cb9e93d 100644
--- a/drivers/media/pci/intel/ipu-isys-video.h
+++ b/drivers/media/pci/intel/ipu-isys-video.h
@@ -54,7 +54,6 @@  struct ipu_isys_pipeline {
 	struct ipu_isys_csi2_be *csi2_be;
 	struct ipu_isys_csi2_be_soc *csi2_be_soc;
 	struct ipu_isys_csi2 *csi2;
-	struct ipu_isys_tpg *tpg;
 
 	/*
 	 * Number of capture queues, write access serialised using struct
diff --git a/drivers/media/pci/intel/ipu-isys.c b/drivers/media/pci/intel/ipu-isys.c
index 4e616343c5f3..d7c493228c69 100644
--- a/drivers/media/pci/intel/ipu-isys.c
+++ b/drivers/media/pci/intel/ipu-isys.c
@@ -29,7 +29,6 @@ 
 #include "ipu-dma.h"
 #include "ipu-isys.h"
 #include "ipu-isys-csi2.h"
-#include "ipu-isys-tpg.h"
 #include "ipu-isys-video.h"
 #include "ipu-platform-regs.h"
 #include "ipu-buttress.h"
@@ -131,27 +130,19 @@  isys_complete_ext_device_registration(struct ipu_isys *isys,
 
 static void isys_unregister_subdevices(struct ipu_isys *isys)
 {
-	const struct ipu_isys_internal_tpg_pdata *tpg =
-	    &isys->pdata->ipdata->tpg;
 	const struct ipu_isys_internal_csi2_pdata *csi2 =
 	    &isys->pdata->ipdata->csi2;
 	unsigned int i;
 
-	ipu_isys_csi2_be_cleanup(&isys->csi2_be);
 	for (i = 0; i < NR_OF_CSI2_BE_SOC_DEV; i++)
 		ipu_isys_csi2_be_soc_cleanup(&isys->csi2_be_soc[i]);
 
-	for (i = 0; i < tpg->ntpgs; i++)
-		ipu_isys_tpg_cleanup(&isys->tpg[i]);
-
 	for (i = 0; i < csi2->nports; i++)
 		ipu_isys_csi2_cleanup(&isys->csi2[i]);
 }
 
 static int isys_register_subdevices(struct ipu_isys *isys)
 {
-	const struct ipu_isys_internal_tpg_pdata *tpg =
-	    &isys->pdata->ipdata->tpg;
 	const struct ipu_isys_internal_csi2_pdata *csi2 =
 	    &isys->pdata->ipdata->csi2;
 	struct ipu_isys_csi2_be_soc *csi2_be_soc;
@@ -175,23 +166,6 @@  static int isys_register_subdevices(struct ipu_isys *isys)
 		isys->isr_csi2_bits |= IPU_ISYS_UNISPART_IRQ_CSI2(i);
 	}
 
-	isys->tpg = devm_kcalloc(&isys->adev->dev, tpg->ntpgs,
-				 sizeof(*isys->tpg), GFP_KERNEL);
-	if (!isys->tpg) {
-		rval = -ENOMEM;
-		goto fail;
-	}
-
-	for (i = 0; i < tpg->ntpgs; i++) {
-		rval = ipu_isys_tpg_init(&isys->tpg[i], isys,
-					 isys->pdata->base +
-					 tpg->offsets[i],
-					 tpg->sels ? (isys->pdata->base +
-						      tpg->sels[i]) : NULL, i);
-		if (rval)
-			goto fail;
-	}
-
 	for (k = 0; k < NR_OF_CSI2_BE_SOC_DEV; k++) {
 		rval = ipu_isys_csi2_be_soc_init(&isys->csi2_be_soc[k],
 						 isys, k);
@@ -202,23 +176,7 @@  static int isys_register_subdevices(struct ipu_isys *isys)
 		}
 	}
 
-	rval = ipu_isys_csi2_be_init(&isys->csi2_be, isys);
-	if (rval) {
-		dev_info(&isys->adev->dev,
-			 "can't register raw csi2 be device\n");
-		goto fail;
-	}
-
 	for (i = 0; i < csi2->nports; i++) {
-		rval = media_create_pad_link(&isys->csi2[i].asd.sd.entity,
-					     CSI2_PAD_SOURCE,
-					     &isys->csi2_be.asd.sd.entity,
-					     CSI2_BE_PAD_SINK, 0);
-		if (rval) {
-			dev_info(&isys->adev->dev,
-				 "can't create link csi2 <=> csi2_be\n");
-			goto fail;
-		}
 		for (k = 0; k < NR_OF_CSI2_BE_SOC_DEV; k++) {
 			csi2_be_soc = &isys->csi2_be_soc[k];
 			rval =
@@ -234,32 +192,6 @@  static int isys_register_subdevices(struct ipu_isys *isys)
 		}
 	}
 
-	for (i = 0; i < tpg->ntpgs; i++) {
-		rval = media_create_pad_link(&isys->tpg[i].asd.sd.entity,
-					     TPG_PAD_SOURCE,
-					     &isys->csi2_be.asd.sd.entity,
-					     CSI2_BE_PAD_SINK, 0);
-		if (rval) {
-			dev_info(&isys->adev->dev,
-				 "can't create link between tpg and csi2_be\n");
-			goto fail;
-		}
-
-		for (k = 0; k < NR_OF_CSI2_BE_SOC_DEV; k++) {
-			csi2_be_soc = &isys->csi2_be_soc[k];
-			rval =
-			    media_create_pad_link(&isys->tpg[i].asd.sd.entity,
-						  TPG_PAD_SOURCE,
-						  &csi2_be_soc->asd.sd.entity,
-						  CSI2_BE_SOC_PAD_SINK, 0);
-			if (rval) {
-				dev_info(&isys->adev->dev,
-					 "can't create link tpg->be_soc\n");
-				goto fail;
-			}
-		}
-	}
-
 	return 0;
 
 fail:
@@ -1350,10 +1282,6 @@  int isys_isr_one(struct ipu_bus_device *adev)
 		if (pipe->csi2)
 			ipu_isys_csi2_sof_event(pipe->csi2);
 
-#ifdef IPU_TPG_FRAME_SYNC
-		if (pipe->tpg)
-			ipu_isys_tpg_sof_event(pipe->tpg);
-#endif
 		pipe->seq[pipe->seq_index].sequence =
 		    atomic_read(&pipe->sequence) - 1;
 		pipe->seq[pipe->seq_index].timestamp = ts;
@@ -1368,11 +1296,6 @@  int isys_isr_one(struct ipu_bus_device *adev)
 		if (pipe->csi2)
 			ipu_isys_csi2_eof_event(pipe->csi2);
 
-#ifdef IPU_TPG_FRAME_SYNC
-		if (pipe->tpg)
-			ipu_isys_tpg_eof_event(pipe->tpg);
-#endif
-
 		dev_dbg(&adev->dev,
 			"eof: handle %d: (index %u), timestamp 0x%16.16llx\n",
 			resp->stream_handle,
diff --git a/drivers/media/pci/intel/ipu-isys.h b/drivers/media/pci/intel/ipu-isys.h
index 5d82b934b453..57bc4b55bf26 100644
--- a/drivers/media/pci/intel/ipu-isys.h
+++ b/drivers/media/pci/intel/ipu-isys.h
@@ -16,7 +16,6 @@ 
 #include "ipu-isys-media.h"
 #include "ipu-isys-csi2.h"
 #include "ipu-isys-csi2-be.h"
-#include "ipu-isys-tpg.h"
 #include "ipu-isys-video.h"
 #include "ipu-pdata.h"
 #include "ipu-fw-isys.h"
@@ -57,7 +56,7 @@ 
 #define IPU_ISYS_MAX_WIDTH		16384U
 #define IPU_ISYS_MAX_HEIGHT		16384U
 
-#define NR_OF_CSI2_BE_SOC_DEV 8
+#define NR_OF_CSI2_BE_SOC_DEV 1
 
 /* the threshold granularity is 2KB on IPU6 */
 #define IPU6_SRAM_GRANULRITY_SHIFT	11
@@ -131,7 +130,6 @@  struct ipu_isys_sensor_info {
  * @lib_mutex: optional external library mutex
  * @pdata: platform data pointer
  * @csi2: CSI-2 receivers
- * @tpg: test pattern generators
  * @csi2_be: CSI-2 back-ends
  * @fw: ISYS firmware binary (unsecure firmware)
  * @fw_sgt: fw scatterlist
@@ -171,7 +169,6 @@  struct ipu_isys {
 	struct ipu_isys_pdata *pdata;
 
 	struct ipu_isys_csi2 *csi2;
-	struct ipu_isys_tpg *tpg;
 	struct ipu_isys_csi2_be csi2_be;
 	struct ipu_isys_csi2_be_soc csi2_be_soc[NR_OF_CSI2_BE_SOC_DEV];
 	const struct firmware *fw;
diff --git a/drivers/media/pci/intel/ipu-pdata.h b/drivers/media/pci/intel/ipu-pdata.h
index 5498956b8ce7..b342132965f5 100644
--- a/drivers/media/pci/intel/ipu-pdata.h
+++ b/drivers/media/pci/intel/ipu-pdata.h
@@ -207,12 +207,6 @@  struct ipu_isys_internal_csi2_pdata {
 	unsigned int *offsets;
 };
 
-struct ipu_isys_internal_tpg_pdata {
-	unsigned int ntpgs;
-	unsigned int *offsets;
-	unsigned int *sels;
-};
-
 /*
  * One place to handle all the IPU HW variations
  */
@@ -228,7 +222,6 @@  struct ipu_hw_variants {
 
 struct ipu_isys_internal_pdata {
 	struct ipu_isys_internal_csi2_pdata csi2;
-	struct ipu_isys_internal_tpg_pdata tpg;
 	struct ipu_hw_variants hw_variant;
 	u32 num_parallel_streams;
 	u32 isys_dma_overshoot;
diff --git a/drivers/media/pci/intel/ipu6/Makefile b/drivers/media/pci/intel/ipu6/Makefile
index 16ce80bff412..db20fcdd3c01 100644
--- a/drivers/media/pci/intel/ipu6/Makefile
+++ b/drivers/media/pci/intel/ipu6/Makefile
@@ -27,14 +27,11 @@  intel-ipu6-isys-objs			+= ../ipu-isys.o \
 					   ipu6-isys-csi2.o \
 					   ipu6-isys-gpc.o \
 					   ../ipu-isys-csi2-be-soc.o \
-					   ../ipu-isys-csi2-be.o \
 					   ../ipu-fw-isys.o \
 					   ../ipu-isys-video.o \
 					   ../ipu-isys-queue.o \
 					   ../ipu-isys-subdev.o
 
-intel-ipu6-isys-objs                    += ../ipu-isys-tpg.o
-
 obj-$(CONFIG_VIDEO_INTEL_IPU6)		+= intel-ipu6-isys.o
 
 intel-ipu6-psys-objs			+= ../ipu-psys.o \
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c b/drivers/media/pci/intel/ipu6/ipu6-isys.c
index bc13affa8e5f..b5a9e81db108 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c
@@ -8,7 +8,6 @@ 
 #include "ipu-platform-regs.h"
 #include "ipu-trace.h"
 #include "ipu-isys.h"
-#include "ipu-isys-tpg.h"
 #include "ipu-platform-isys-csi2-reg.h"
 
 const struct ipu_isys_pixelformat ipu_isys_pfmts[] = {
@@ -173,146 +172,3 @@  irqreturn_t isys_isr(struct ipu_bus_device *adev)
 	return IRQ_HANDLED;
 }
 
-void ipu_isys_tpg_sof_event(struct ipu_isys_tpg *tpg)
-{
-	struct ipu_isys_pipeline *ip = NULL;
-	struct v4l2_event ev = {
-		.type = V4L2_EVENT_FRAME_SYNC,
-	};
-	struct video_device *vdev = tpg->asd.sd.devnode;
-	unsigned long flags;
-	unsigned int i, nr;
-
-	nr = (ipu_ver == IPU_VER_6 || ipu_ver == IPU_VER_6EP) ?
-		IPU6_ISYS_CSI_PORT_NUM : IPU6SE_ISYS_CSI_PORT_NUM;
-
-	spin_lock_irqsave(&tpg->isys->lock, flags);
-	for (i = 0; i < nr; i++) {
-		if (tpg->isys->pipes[i] && tpg->isys->pipes[i]->tpg == tpg) {
-			ip = tpg->isys->pipes[i];
-			break;
-		}
-	}
-
-	/* Pipe already vanished */
-	if (!ip) {
-		spin_unlock_irqrestore(&tpg->isys->lock, flags);
-		return;
-	}
-
-	ev.u.frame_sync.frame_sequence =
-		atomic_inc_return(&ip->sequence) - 1;
-	spin_unlock_irqrestore(&tpg->isys->lock, flags);
-
-	v4l2_event_queue(vdev, &ev);
-
-	dev_dbg(&tpg->isys->adev->dev,
-		"sof_event::tpg-%i sequence: %i\n",
-		tpg->index, ev.u.frame_sync.frame_sequence);
-}
-
-void ipu_isys_tpg_eof_event(struct ipu_isys_tpg *tpg)
-{
-	struct ipu_isys_pipeline *ip = NULL;
-	unsigned long flags;
-	unsigned int i, nr;
-	u32 frame_sequence;
-
-	nr = (ipu_ver == IPU_VER_6 || ipu_ver == IPU_VER_6EP) ?
-		IPU6_ISYS_CSI_PORT_NUM : IPU6SE_ISYS_CSI_PORT_NUM;
-
-	spin_lock_irqsave(&tpg->isys->lock, flags);
-	for (i = 0; i < nr; i++) {
-		if (tpg->isys->pipes[i] && tpg->isys->pipes[i]->tpg == tpg) {
-			ip = tpg->isys->pipes[i];
-			break;
-		}
-	}
-
-	/* Pipe already vanished */
-	if (!ip) {
-		spin_unlock_irqrestore(&tpg->isys->lock, flags);
-		return;
-	}
-
-	frame_sequence = atomic_read(&ip->sequence);
-
-	spin_unlock_irqrestore(&tpg->isys->lock, flags);
-
-	dev_dbg(&tpg->isys->adev->dev,
-		"eof_event::tpg-%i sequence: %i\n",
-		tpg->index, frame_sequence);
-}
-
-int tpg_set_stream(struct v4l2_subdev *sd, int enable)
-{
-	struct ipu_isys_tpg *tpg = to_ipu_isys_tpg(sd);
-	__u32 code = tpg->asd.ffmt[TPG_PAD_SOURCE].code;
-	unsigned int bpp = ipu_isys_mbus_code_to_bpp(code);
-	struct ipu_isys_pipeline *ip =
-			to_ipu_isys_pipeline(sd->entity.pipe);
-
-	/*
-	 * MIPI_GEN block is CSI2 FB. Need to enable/disable TPG selection
-	 * register to control the TPG streaming.
-	 */
-	if (tpg->sel)
-		writel(enable ? 1 : 0, tpg->sel);
-
-	if (!enable) {
-		ip->tpg = NULL;
-		writel(0, tpg->base +
-		       CSI_REG_CSI_FE_ENABLE -
-		       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-		writel(CSI_SENSOR_INPUT, tpg->base +
-		       CSI_REG_CSI_FE_MUX_CTRL -
-		       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-		writel(CSI_CNTR_SENSOR_LINE_ID |
-		       CSI_CNTR_SENSOR_FRAME_ID,
-		       tpg->base + CSI_REG_CSI_FE_SYNC_CNTR_SEL -
-		       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-		writel(0, tpg->base + MIPI_GEN_REG_COM_ENABLE);
-		return 0;
-	}
-
-	ip->has_sof = true;
-	ip->tpg = tpg;
-	/* Select MIPI GEN as input */
-	writel(0, tpg->base + CSI_REG_CSI_FE_MODE -
-	       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-	writel(1, tpg->base + CSI_REG_CSI_FE_ENABLE -
-	       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-	writel(CSI_MIPIGEN_INPUT, tpg->base +
-	       CSI_REG_CSI_FE_MUX_CTRL - CSI_REG_PIXGEN_COM_BASE_OFFSET);
-	writel(0, tpg->base + CSI_REG_CSI_FE_SYNC_CNTR_SEL -
-	       CSI_REG_PIXGEN_COM_BASE_OFFSET);
-
-	writel(MIPI_GEN_COM_DTYPE_RAW(bpp),
-	       tpg->base + MIPI_GEN_REG_COM_DTYPE);
-	writel(ipu_isys_mbus_code_to_mipi(code),
-	       tpg->base + MIPI_GEN_REG_COM_VTYPE);
-	writel(0, tpg->base + MIPI_GEN_REG_COM_VCHAN);
-
-	writel(0, tpg->base + MIPI_GEN_REG_SYNG_NOF_FRAMES);
-
-	writel(DIV_ROUND_UP(tpg->asd.ffmt[TPG_PAD_SOURCE].width *
-			    bpp, BITS_PER_BYTE),
-	       tpg->base + MIPI_GEN_REG_COM_WCOUNT);
-	writel(DIV_ROUND_UP(tpg->asd.ffmt[TPG_PAD_SOURCE].width,
-			    MIPI_GEN_PPC),
-	       tpg->base + MIPI_GEN_REG_SYNG_NOF_PIXELS);
-	writel(tpg->asd.ffmt[TPG_PAD_SOURCE].height,
-	       tpg->base + MIPI_GEN_REG_SYNG_NOF_LINES);
-
-	writel(0, tpg->base + MIPI_GEN_REG_TPG_MODE);
-	writel(-1, tpg->base + MIPI_GEN_REG_TPG_HCNT_MASK);
-	writel(-1, tpg->base + MIPI_GEN_REG_TPG_VCNT_MASK);
-	writel(-1, tpg->base + MIPI_GEN_REG_TPG_XYCNT_MASK);
-	writel(0, tpg->base + MIPI_GEN_REG_TPG_HCNT_DELTA);
-	writel(0, tpg->base + MIPI_GEN_REG_TPG_VCNT_DELTA);
-
-	v4l2_ctrl_handler_setup(&tpg->asd.ctrl_handler);
-
-	writel(2, tpg->base + MIPI_GEN_REG_COM_ENABLE);
-	return 0;
-}
diff --git a/drivers/media/pci/intel/ipu6/ipu6.c b/drivers/media/pci/intel/ipu6/ipu6.c
index eb59eaa47413..8054c4cb0345 100644
--- a/drivers/media/pci/intel/ipu6/ipu6.c
+++ b/drivers/media/pci/intel/ipu6/ipu6.c
@@ -1,5 +1,5 @@ 
 // SPDX-License-Identifier: GPL-2.0
-// Copyright (C) 2020 Intel Corporation
+// Copyright (C) 2018 - 2021 Intel Corporation
 
 #include <linux/device.h>
 #include <linux/delay.h>
@@ -58,24 +58,6 @@  static unsigned int ipu6se_csi_offsets[] = {
 	IPU_CSI_PORT_D_ADDR_OFFSET,
 };
 
-static unsigned int ipu6se_tpg_offsets[] = {
-	IPU_CSI_PORT_A_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_B_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_C_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_D_PIXGEN_ADDR_OFFSET,
-};
-
-static unsigned int ipu6_tpg_offsets[] = {
-	IPU_CSI_PORT_A_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_B_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_C_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_D_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_E_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_F_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_G_PIXGEN_ADDR_OFFSET,
-	IPU_CSI_PORT_H_PIXGEN_ADDR_OFFSET
-};
-
 static unsigned int ipu6_csi_offsets[] = {
 	IPU_CSI_PORT_A_ADDR_OFFSET,
 	IPU_CSI_PORT_B_ADDR_OFFSET,
@@ -344,18 +326,12 @@  void ipu_internal_pdata_init(void)
 	if (ipu_ver == IPU_VER_6 || ipu_ver == IPU_VER_6EP) {
 		isys_ipdata.csi2.nports = ARRAY_SIZE(ipu6_csi_offsets);
 		isys_ipdata.csi2.offsets = ipu6_csi_offsets;
-		isys_ipdata.tpg.ntpgs = ARRAY_SIZE(ipu6_tpg_offsets);
-		isys_ipdata.tpg.offsets = ipu6_tpg_offsets;
-		isys_ipdata.tpg.sels = NULL;
 		isys_ipdata.num_parallel_streams = IPU6_ISYS_NUM_STREAMS;
 		psys_ipdata.hw_variant.spc_offset = IPU6_PSYS_SPC_OFFSET;
 
 	} else if (ipu_ver == IPU_VER_6SE) {
 		isys_ipdata.csi2.nports = ARRAY_SIZE(ipu6se_csi_offsets);
 		isys_ipdata.csi2.offsets = ipu6se_csi_offsets;
-		isys_ipdata.tpg.ntpgs = ARRAY_SIZE(ipu6se_tpg_offsets);
-		isys_ipdata.tpg.offsets = ipu6se_tpg_offsets;
-		isys_ipdata.tpg.sels = NULL;
 		isys_ipdata.num_parallel_streams = IPU6SE_ISYS_NUM_STREAMS;
 		psys_ipdata.hw_variant.spc_offset = IPU6SE_PSYS_SPC_OFFSET;
 	}