All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] SoC camera removal
@ 2018-10-29 23:00 Sakari Ailus
  2018-10-29 23:00 ` [PATCH 1/4] tw9910: Unregister async subdev at device unbind Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-10-29 23:00 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil, mchehab

Hi everyone,

There's been some discussion on SoC camera removal and the idea has been
to keep it around as long as the board code refers to it, to keep it
compiling.

The references to SoC camera in the board code are effectively references
to a single struct, struct soc_camera_link plus a few macros. The rest of
the SoC camera framework is not really needed.

These patches remove the SoC camera framework and leave just the struct
definition in place so the board files continue to compile. The references
can then be removed later on, while the need to maintain over 16000 lines
of non-working code will be gone immediately.

There are currently four instances of SoC camera references in the board
files:

	arch/arm/mach-imx/mach-imx27_visstrim_m10.c
	arch/arm/mach-omap1/board-ams-delta.c
	arch/arm/mach-pxa/palmz72.c
	arch/arm/mach-pxa/pcm990-baseboard.c

I've compile tested them with the patchset for the affected machines.

If there's a need to revive old drivers, they can always be found in the
git history. There's no need to put them to the staging branch.

Sakari Ailus (4):
  tw9910: Unregister async subdev at device unbind
  tw9910: No SoC camera dependency
  SoC camera: Remove the framework and the drivers
  SoC camera: Tidy the header

 MAINTAINERS                                        |    8 -
 drivers/media/i2c/Kconfig                          |    8 -
 drivers/media/i2c/Makefile                         |    1 -
 drivers/media/i2c/soc_camera/Kconfig               |   66 -
 drivers/media/i2c/soc_camera/Makefile              |   10 -
 drivers/media/i2c/soc_camera/ov9640.h              |  208 --
 drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
 drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
 drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
 drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
 drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
 drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
 drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
 drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------
 drivers/media/i2c/tw9910.c                         |    4 +-
 drivers/media/platform/Kconfig                     |    1 -
 drivers/media/platform/Makefile                    |    2 -
 drivers/media/platform/soc_camera/Kconfig          |   26 -
 drivers/media/platform/soc_camera/Makefile         |    9 -
 .../platform/soc_camera/sh_mobile_ceu_camera.c     | 1810 ----------------
 drivers/media/platform/soc_camera/soc_camera.c     | 2169 --------------------
 .../platform/soc_camera/soc_camera_platform.c      |  188 --
 drivers/media/platform/soc_camera/soc_mediabus.c   |  533 -----
 drivers/media/platform/soc_camera/soc_scale_crop.c |  426 ----
 drivers/media/platform/soc_camera/soc_scale_crop.h |   47 -
 drivers/staging/media/Kconfig                      |    4 -
 drivers/staging/media/Makefile                     |    2 -
 drivers/staging/media/imx074/Kconfig               |    5 -
 drivers/staging/media/imx074/Makefile              |    1 -
 drivers/staging/media/imx074/TODO                  |    5 -
 drivers/staging/media/imx074/imx074.c              |  496 -----
 drivers/staging/media/mt9t031/Kconfig              |    5 -
 drivers/staging/media/mt9t031/Makefile             |    1 -
 drivers/staging/media/mt9t031/TODO                 |    5 -
 drivers/staging/media/mt9t031/mt9t031.c            |  857 --------
 include/media/i2c/tw9910.h                         |    2 -
 include/media/soc_camera.h                         |  335 ---
 38 files changed, 3 insertions(+), 16515 deletions(-)
 delete mode 100644 drivers/media/i2c/soc_camera/Kconfig
 delete mode 100644 drivers/media/i2c/soc_camera/Makefile
 delete mode 100644 drivers/media/i2c/soc_camera/ov9640.h
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9m001.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9t112.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9v022.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov5642.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov772x.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9640.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9740.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_tw9910.c
 delete mode 100644 drivers/media/platform/soc_camera/Kconfig
 delete mode 100644 drivers/media/platform/soc_camera/Makefile
 delete mode 100644 drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_camera.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_camera_platform.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_mediabus.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.h
 delete mode 100644 drivers/staging/media/imx074/Kconfig
 delete mode 100644 drivers/staging/media/imx074/Makefile
 delete mode 100644 drivers/staging/media/imx074/TODO
 delete mode 100644 drivers/staging/media/imx074/imx074.c
 delete mode 100644 drivers/staging/media/mt9t031/Kconfig
 delete mode 100644 drivers/staging/media/mt9t031/Makefile
 delete mode 100644 drivers/staging/media/mt9t031/TODO
 delete mode 100644 drivers/staging/media/mt9t031/mt9t031.c

-- 
2.11.0

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 1/4] tw9910: Unregister async subdev at device unbind
  2018-10-29 23:00 [PATCH 0/4] SoC camera removal Sakari Ailus
@ 2018-10-29 23:00 ` Sakari Ailus
  2018-10-29 23:00 ` [PATCH 2/4] tw9910: No SoC camera dependency Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-10-29 23:00 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil, mchehab, Sakari Ailus

The async sub-device was added to the async list in probe but it was not
removed in the driver's remove function. Fix this. Also unregister the
async subdev before powering down the device.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/tw9910.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c
index a54548cc4285..7087ce946af1 100644
--- a/drivers/media/i2c/tw9910.c
+++ b/drivers/media/i2c/tw9910.c
@@ -997,10 +997,11 @@ static int tw9910_remove(struct i2c_client *client)
 {
 	struct tw9910_priv *priv = to_tw9910(client);
 
+	v4l2_async_unregister_subdev(&priv->subdev);
+
 	if (priv->pdn_gpio)
 		gpiod_put(priv->pdn_gpio);
 	clk_put(priv->clk);
-	v4l2_device_unregister_subdev(&priv->subdev);
 
 	return 0;
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 2/4] tw9910: No SoC camera dependency
  2018-10-29 23:00 [PATCH 0/4] SoC camera removal Sakari Ailus
  2018-10-29 23:00 ` [PATCH 1/4] tw9910: Unregister async subdev at device unbind Sakari Ailus
@ 2018-10-29 23:00 ` Sakari Ailus
  2018-10-30 12:03   ` Hans Verkuil
  2018-10-29 23:00 ` [PATCH 4/4] SoC camera: Tidy the header Sakari Ailus
  2018-10-29 23:21 ` [PATCH 3/4] SoC camera: Remove the framework and the drivers Sakari Ailus
  3 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2018-10-29 23:00 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil, mchehab, Sakari Ailus

The tw9910 driver does not depend on SoC camera framework. Don't include
the header, but instead include media/v4l2-async.h which the driver really
needs.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/tw9910.c | 1 +
 include/media/i2c/tw9910.h | 2 --
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c
index 7087ce946af1..6478bd41afb8 100644
--- a/drivers/media/i2c/tw9910.c
+++ b/drivers/media/i2c/tw9910.c
@@ -27,6 +27,7 @@
 #include <linux/videodev2.h>
 
 #include <media/i2c/tw9910.h>
+#include <media/v4l2-async.h>
 #include <media/v4l2-subdev.h>
 
 #define GET_ID(val)  ((val & 0xF8) >> 3)
diff --git a/include/media/i2c/tw9910.h b/include/media/i2c/tw9910.h
index bec8f7bce745..2f93799d5a21 100644
--- a/include/media/i2c/tw9910.h
+++ b/include/media/i2c/tw9910.h
@@ -16,8 +16,6 @@
 #ifndef __TW9910_H__
 #define __TW9910_H__
 
-#include <media/soc_camera.h>
-
 /**
  * tw9910_mpout_pin - MPOUT (multi-purpose output) pin functions
  */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 4/4] SoC camera: Tidy the header
  2018-10-29 23:00 [PATCH 0/4] SoC camera removal Sakari Ailus
  2018-10-29 23:00 ` [PATCH 1/4] tw9910: Unregister async subdev at device unbind Sakari Ailus
  2018-10-29 23:00 ` [PATCH 2/4] tw9910: No SoC camera dependency Sakari Ailus
@ 2018-10-29 23:00 ` Sakari Ailus
  2018-10-30  9:50   ` Mauro Carvalho Chehab
  2018-10-30 12:06   ` Mauro Carvalho Chehab
  2018-10-29 23:21 ` [PATCH 3/4] SoC camera: Remove the framework and the drivers Sakari Ailus
  3 siblings, 2 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-10-29 23:00 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil, mchehab, Sakari Ailus

Clean up the SoC camera framework header. It only exists now to keep board
code compiling. The header can be removed once the board code dependencies
to it has been removed.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 include/media/soc_camera.h | 335 ---------------------------------------------
 1 file changed, 335 deletions(-)

diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index b7e42a1b0910..14d19da6052a 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -22,172 +22,6 @@
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-device.h>
 
-struct file;
-struct soc_camera_desc;
-struct soc_camera_async_client;
-
-struct soc_camera_device {
-	struct list_head list;		/* list of all registered devices */
-	struct soc_camera_desc *sdesc;
-	struct device *pdev;		/* Platform device */
-	struct device *parent;		/* Camera host device */
-	struct device *control;		/* E.g., the i2c client */
-	s32 user_width;
-	s32 user_height;
-	u32 bytesperline;		/* for padding, zero if unused */
-	u32 sizeimage;
-	enum v4l2_colorspace colorspace;
-	unsigned char iface;		/* Host number */
-	unsigned char devnum;		/* Device number per host */
-	struct soc_camera_sense *sense;	/* See comment in struct definition */
-	struct video_device *vdev;
-	struct v4l2_ctrl_handler ctrl_handler;
-	const struct soc_camera_format_xlate *current_fmt;
-	struct soc_camera_format_xlate *user_formats;
-	int num_user_formats;
-	enum v4l2_field field;		/* Preserve field over close() */
-	void *host_priv;		/* Per-device host private data */
-	/* soc_camera.c private count. Only accessed with .host_lock held */
-	int use_count;
-	struct file *streamer;		/* stream owner */
-	struct v4l2_clk *clk;
-	/* Asynchronous subdevice management */
-	struct soc_camera_async_client *sasc;
-	/* video buffer queue */
-	struct vb2_queue vb2_vidq;
-};
-
-/* Host supports programmable stride */
-#define SOCAM_HOST_CAP_STRIDE		(1 << 0)
-
-enum soc_camera_subdev_role {
-	SOCAM_SUBDEV_DATA_SOURCE = 1,
-	SOCAM_SUBDEV_DATA_SINK,
-	SOCAM_SUBDEV_DATA_PROCESSOR,
-};
-
-struct soc_camera_async_subdev {
-	struct v4l2_async_subdev asd;
-	enum soc_camera_subdev_role role;
-};
-
-struct soc_camera_host {
-	struct v4l2_device v4l2_dev;
-	struct list_head list;
-	struct mutex host_lock;		/* Main synchronisation lock */
-	struct mutex clk_lock;		/* Protect pipeline modifications */
-	unsigned char nr;		/* Host number */
-	u32 capabilities;
-	struct soc_camera_device *icd;	/* Currently attached client */
-	void *priv;
-	const char *drv_name;
-	struct soc_camera_host_ops *ops;
-	struct v4l2_async_subdev **asd;	/* Flat array, arranged in groups */
-	unsigned int *asd_sizes;	/* 0-terminated array of asd group sizes */
-};
-
-struct soc_camera_host_ops {
-	struct module *owner;
-	int (*add)(struct soc_camera_device *);
-	void (*remove)(struct soc_camera_device *);
-	int (*clock_start)(struct soc_camera_host *);
-	void (*clock_stop)(struct soc_camera_host *);
-	/*
-	 * .get_formats() is called for each client device format, but
-	 * .put_formats() is only called once. Further, if any of the calls to
-	 * .get_formats() fail, .put_formats() will not be called at all, the
-	 * failing .get_formats() must then clean up internally.
-	 */
-	int (*get_formats)(struct soc_camera_device *, unsigned int,
-			   struct soc_camera_format_xlate *);
-	void (*put_formats)(struct soc_camera_device *);
-	int (*get_selection)(struct soc_camera_device *, struct v4l2_selection *);
-	int (*set_selection)(struct soc_camera_device *, struct v4l2_selection *);
-	/*
-	 * The difference to .set_selection() is, that .set_liveselection is not allowed
-	 * to change the output sizes
-	 */
-	int (*set_liveselection)(struct soc_camera_device *, struct v4l2_selection *);
-	int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *);
-	int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *);
-	int (*init_videobuf2)(struct vb2_queue *,
-			      struct soc_camera_device *);
-	int (*querycap)(struct soc_camera_host *, struct v4l2_capability *);
-	int (*set_bus_param)(struct soc_camera_device *);
-	int (*get_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
-	int (*set_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
-	int (*enum_framesizes)(struct soc_camera_device *, struct v4l2_frmsizeenum *);
-	__poll_t (*poll)(struct file *, poll_table *);
-};
-
-#define SOCAM_SENSOR_INVERT_PCLK	(1 << 0)
-#define SOCAM_SENSOR_INVERT_MCLK	(1 << 1)
-#define SOCAM_SENSOR_INVERT_HSYNC	(1 << 2)
-#define SOCAM_SENSOR_INVERT_VSYNC	(1 << 3)
-#define SOCAM_SENSOR_INVERT_DATA	(1 << 4)
-
-struct i2c_board_info;
-struct regulator_bulk_data;
-
-struct soc_camera_subdev_desc {
-	/* Per camera SOCAM_SENSOR_* bus flags */
-	unsigned long flags;
-
-	/* sensor driver private platform data */
-	void *drv_priv;
-
-	/*
-	 * Set unbalanced_power to true to deal with legacy drivers, failing to
-	 * balance their calls to subdevice's .s_power() method. clock_state is
-	 * then used internally by helper functions, it shouldn't be touched by
-	 * drivers or the platform code.
-	 */
-	bool unbalanced_power;
-	unsigned long clock_state;
-
-	/* Optional callbacks to power on or off and reset the sensor */
-	int (*power)(struct device *, int);
-	int (*reset)(struct device *);
-
-	/*
-	 * some platforms may support different data widths than the sensors
-	 * native ones due to different data line routing. Let the board code
-	 * overwrite the width flags.
-	 */
-	int (*set_bus_param)(struct soc_camera_subdev_desc *, unsigned long flags);
-	unsigned long (*query_bus_param)(struct soc_camera_subdev_desc *);
-	void (*free_bus)(struct soc_camera_subdev_desc *);
-
-	/* Optional regulators that have to be managed on power on/off events */
-	struct v4l2_subdev_platform_data sd_pdata;
-};
-
-struct soc_camera_host_desc {
-	/* Camera bus id, used to match a camera and a bus */
-	int bus_id;
-	int i2c_adapter_id;
-	struct i2c_board_info *board_info;
-	const char *module_name;
-
-	/*
-	 * For non-I2C devices platform has to provide methods to add a device
-	 * to the system and to remove it
-	 */
-	int (*add_device)(struct soc_camera_device *);
-	void (*del_device)(struct soc_camera_device *);
-};
-
-/*
- * Platform data for "soc-camera-pdrv"
- * This MUST be kept binary-identical to struct soc_camera_link below, until
- * it is completely replaced by this one, after which we can split it into its
- * two components.
- */
-struct soc_camera_desc {
-	struct soc_camera_subdev_desc subdev_desc;
-	struct soc_camera_host_desc host_desc;
-};
-
 /* Prepare to replace this struct: don't change its layout any more! */
 struct soc_camera_link {
 	/*
@@ -200,11 +34,6 @@ struct soc_camera_link {
 
 	void *priv;
 
-	/* Set by platforms to handle misbehaving drivers */
-	bool unbalanced_power;
-	/* Used by soc-camera helper functions */
-	unsigned long clock_state;
-
 	/* Optional callbacks to power on or off and reset the sensor */
 	int (*power)(struct device *, int);
 	int (*reset)(struct device *);
@@ -217,12 +46,6 @@ struct soc_camera_link {
 	unsigned long (*query_bus_param)(struct soc_camera_link *);
 	void (*free_bus)(struct soc_camera_link *);
 
-	/* Optional regulators that have to be managed on power on/off events */
-	struct regulator_bulk_data *regulators;
-	int num_regulators;
-
-	void *host_priv;
-
 	/*
 	 * Host part - keep at bottom and compatible to
 	 * struct soc_camera_host_desc
@@ -233,168 +56,10 @@ struct soc_camera_link {
 	int i2c_adapter_id;
 	struct i2c_board_info *board_info;
 	const char *module_name;
-
-	/*
-	 * For non-I2C devices platform has to provide methods to add a device
-	 * to the system and to remove it
-	 */
-	int (*add_device)(struct soc_camera_device *);
-	void (*del_device)(struct soc_camera_device *);
-};
-
-static inline struct soc_camera_host *to_soc_camera_host(
-	const struct device *dev)
-{
-	struct v4l2_device *v4l2_dev = dev_get_drvdata(dev);
-
-	return container_of(v4l2_dev, struct soc_camera_host, v4l2_dev);
-}
-
-static inline struct soc_camera_desc *to_soc_camera_desc(
-	const struct soc_camera_device *icd)
-{
-	return icd->sdesc;
-}
-
-static inline struct device *to_soc_camera_control(
-	const struct soc_camera_device *icd)
-{
-	return icd->control;
-}
-
-static inline struct v4l2_subdev *soc_camera_to_subdev(
-	const struct soc_camera_device *icd)
-{
-	struct device *control = to_soc_camera_control(icd);
-	return dev_get_drvdata(control);
-}
-
-int soc_camera_host_register(struct soc_camera_host *ici);
-void soc_camera_host_unregister(struct soc_camera_host *ici);
-
-const struct soc_camera_format_xlate *soc_camera_xlate_by_fourcc(
-	struct soc_camera_device *icd, unsigned int fourcc);
-
-/**
- * struct soc_camera_format_xlate - match between host and sensor formats
- * @code: code of a sensor provided format
- * @host_fmt: host format after host translation from code
- *
- * Host and sensor translation structure. Used in table of host and sensor
- * formats matchings in soc_camera_device. A host can override the generic list
- * generation by implementing get_formats(), and use it for format checks and
- * format setup.
- */
-struct soc_camera_format_xlate {
-	u32 code;
-	const struct soc_mbus_pixelfmt *host_fmt;
-};
-
-#define SOCAM_SENSE_PCLK_CHANGED	(1 << 0)
-
-/**
- * This struct can be attached to struct soc_camera_device by the host driver
- * to request sense from the camera, for example, when calling .set_fmt(). The
- * host then can check which flags are set and verify respective values if any.
- * For example, if SOCAM_SENSE_PCLK_CHANGED is set, it means, pixclock has
- * changed during this operation. After completion the host should detach sense.
- *
- * @flags		ored SOCAM_SENSE_* flags
- * @master_clock	if the host wants to be informed about pixel-clock
- *			change, it better set master_clock.
- * @pixel_clock_max	maximum pixel clock frequency supported by the host,
- *			camera is not allowed to exceed this.
- * @pixel_clock		if the camera driver changed pixel clock during this
- *			operation, it sets SOCAM_SENSE_PCLK_CHANGED, uses
- *			master_clock to calculate the new pixel-clock and
- *			sets this field.
- */
-struct soc_camera_sense {
-	unsigned long flags;
-	unsigned long master_clock;
-	unsigned long pixel_clock_max;
-	unsigned long pixel_clock;
 };
 
 #define SOCAM_DATAWIDTH(x)	BIT((x) - 1)
-#define SOCAM_DATAWIDTH_4	SOCAM_DATAWIDTH(4)
 #define SOCAM_DATAWIDTH_8	SOCAM_DATAWIDTH(8)
-#define SOCAM_DATAWIDTH_9	SOCAM_DATAWIDTH(9)
 #define SOCAM_DATAWIDTH_10	SOCAM_DATAWIDTH(10)
-#define SOCAM_DATAWIDTH_12	SOCAM_DATAWIDTH(12)
-#define SOCAM_DATAWIDTH_15	SOCAM_DATAWIDTH(15)
-#define SOCAM_DATAWIDTH_16	SOCAM_DATAWIDTH(16)
-#define SOCAM_DATAWIDTH_18	SOCAM_DATAWIDTH(18)
-#define SOCAM_DATAWIDTH_24	SOCAM_DATAWIDTH(24)
-
-#define SOCAM_DATAWIDTH_MASK (SOCAM_DATAWIDTH_4 | SOCAM_DATAWIDTH_8 | \
-			      SOCAM_DATAWIDTH_9 | SOCAM_DATAWIDTH_10 | \
-			      SOCAM_DATAWIDTH_12 | SOCAM_DATAWIDTH_15 | \
-			      SOCAM_DATAWIDTH_16 | SOCAM_DATAWIDTH_18 | \
-			      SOCAM_DATAWIDTH_24)
-
-static inline void soc_camera_limit_side(int *start, int *length,
-		unsigned int start_min,
-		unsigned int length_min, unsigned int length_max)
-{
-	if (*length < length_min)
-		*length = length_min;
-	else if (*length > length_max)
-		*length = length_max;
-
-	if (*start < start_min)
-		*start = start_min;
-	else if (*start > start_min + length_max - *length)
-		*start = start_min + length_max - *length;
-}
-
-unsigned long soc_camera_apply_board_flags(struct soc_camera_subdev_desc *ssdd,
-					   const struct v4l2_mbus_config *cfg);
-
-int soc_camera_power_init(struct device *dev, struct soc_camera_subdev_desc *ssdd);
-int soc_camera_power_on(struct device *dev, struct soc_camera_subdev_desc *ssdd,
-			struct v4l2_clk *clk);
-int soc_camera_power_off(struct device *dev, struct soc_camera_subdev_desc *ssdd,
-			 struct v4l2_clk *clk);
-
-static inline int soc_camera_set_power(struct device *dev,
-		struct soc_camera_subdev_desc *ssdd, struct v4l2_clk *clk, bool on)
-{
-	return on ? soc_camera_power_on(dev, ssdd, clk)
-		  : soc_camera_power_off(dev, ssdd, clk);
-}
-
-/* This is only temporary here - until v4l2-subdev begins to link to video_device */
-#include <linux/i2c.h>
-static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client)
-{
-	struct v4l2_subdev *sd = i2c_get_clientdata(client);
-	struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
-	return icd ? icd->vdev : NULL;
-}
-
-static inline struct soc_camera_subdev_desc *soc_camera_i2c_to_desc(const struct i2c_client *client)
-{
-	return client->dev.platform_data;
-}
-
-static inline struct v4l2_subdev *soc_camera_vdev_to_subdev(struct video_device *vdev)
-{
-	struct soc_camera_device *icd = video_get_drvdata(vdev);
-	return soc_camera_to_subdev(icd);
-}
-
-static inline struct soc_camera_device *soc_camera_from_vb2q(const struct vb2_queue *vq)
-{
-	return container_of(vq, struct soc_camera_device, vb2_vidq);
-}
-
-static inline u32 soc_camera_grp_id(const struct soc_camera_device *icd)
-{
-	return (icd->iface << 8) | (icd->devnum + 1);
-}
-
-void soc_camera_lock(struct vb2_queue *vq);
-void soc_camera_unlock(struct vb2_queue *vq);
 
 #endif
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-29 23:00 [PATCH 0/4] SoC camera removal Sakari Ailus
                   ` (2 preceding siblings ...)
  2018-10-29 23:00 ` [PATCH 4/4] SoC camera: Tidy the header Sakari Ailus
@ 2018-10-29 23:21 ` Sakari Ailus
  2018-10-30  9:43   ` Mauro Carvalho Chehab
  3 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2018-10-29 23:21 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil, mchehab

The SoC camera framework has been obsolete for some time and it is no
longer functional. A few drivers have been converted to the V4L2
sub-device API but for the rest the conversion has not taken place yet.

In order to keep the tree clean and to avoid keep maintaining
non-functional and obsolete code, remove the SoC camera framework as well
as the drivers that depend on it.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
Resending, this time with git format-patch -D .

 MAINTAINERS                                        |    8 -
 drivers/media/i2c/Kconfig                          |    8 -
 drivers/media/i2c/Makefile                         |    1 -
 drivers/media/i2c/soc_camera/Kconfig               |   66 -
 drivers/media/i2c/soc_camera/Makefile              |   10 -
 drivers/media/i2c/soc_camera/ov9640.h              |  208 --
 drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
 drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
 drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
 drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
 drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
 drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
 drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
 drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------
 drivers/media/platform/Kconfig                     |    1 -
 drivers/media/platform/Makefile                    |    2 -
 drivers/media/platform/soc_camera/Kconfig          |   26 -
 drivers/media/platform/soc_camera/Makefile         |    9 -
 .../platform/soc_camera/sh_mobile_ceu_camera.c     | 1810 ----------------
 drivers/media/platform/soc_camera/soc_camera.c     | 2169 --------------------
 .../platform/soc_camera/soc_camera_platform.c      |  188 --
 drivers/media/platform/soc_camera/soc_mediabus.c   |  533 -----
 drivers/media/platform/soc_camera/soc_scale_crop.c |  426 ----
 drivers/media/platform/soc_camera/soc_scale_crop.h |   47 -
 drivers/staging/media/Kconfig                      |    4 -
 drivers/staging/media/Makefile                     |    2 -
 drivers/staging/media/imx074/Kconfig               |    5 -
 drivers/staging/media/imx074/Makefile              |    1 -
 drivers/staging/media/imx074/TODO                  |    5 -
 drivers/staging/media/imx074/imx074.c              |  496 -----
 drivers/staging/media/mt9t031/Kconfig              |    5 -
 drivers/staging/media/mt9t031/Makefile             |    1 -
 drivers/staging/media/mt9t031/TODO                 |    5 -
 drivers/staging/media/mt9t031/mt9t031.c            |  857 --------
 35 files changed, 16177 deletions(-)
 delete mode 100644 drivers/media/i2c/soc_camera/Kconfig
 delete mode 100644 drivers/media/i2c/soc_camera/Makefile
 delete mode 100644 drivers/media/i2c/soc_camera/ov9640.h
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9m001.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9t112.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9v022.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov5642.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov772x.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9640.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9740.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
 delete mode 100644 drivers/media/i2c/soc_camera/soc_tw9910.c
 delete mode 100644 drivers/media/platform/soc_camera/Kconfig
 delete mode 100644 drivers/media/platform/soc_camera/Makefile
 delete mode 100644 drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_camera.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_camera_platform.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_mediabus.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.c
 delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.h
 delete mode 100644 drivers/staging/media/imx074/Kconfig
 delete mode 100644 drivers/staging/media/imx074/Makefile
 delete mode 100644 drivers/staging/media/imx074/TODO
 delete mode 100644 drivers/staging/media/imx074/imx074.c
 delete mode 100644 drivers/staging/media/mt9t031/Kconfig
 delete mode 100644 drivers/staging/media/mt9t031/Makefile
 delete mode 100644 drivers/staging/media/mt9t031/TODO
 delete mode 100644 drivers/staging/media/mt9t031/mt9t031.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 23021e0df5d7..788de30125c1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13422,14 +13422,6 @@ L:	netdev@vger.kernel.org
 S:	Maintained
 F:	drivers/net/ethernet/smsc/smsc9420.*
 
-SOC-CAMERA V4L2 SUBSYSTEM
-L:	linux-media@vger.kernel.org
-T:	git git://linuxtv.org/media_tree.git
-S:	Orphan
-F:	include/media/soc*
-F:	drivers/media/i2c/soc_camera/
-F:	drivers/media/platform/soc_camera/
-
 SOCIONEXT SYNQUACER I2C DRIVER
 M:	Ard Biesheuvel <ard.biesheuvel@linaro.org>
 L:	linux-i2c@vger.kernel.org
diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
index 704af210e270..c7683ac5a3d8 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -1091,12 +1091,4 @@ config VIDEO_I2C
 
 endmenu
 
-menu "Sensors used on soc_camera driver"
-
-if SOC_CAMERA
-	source "drivers/media/i2c/soc_camera/Kconfig"
-endif
-
-endmenu
-
 endif
diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
index 260d4d9ec2a1..d83d1f2a08ee 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -6,7 +6,6 @@ obj-$(CONFIG_VIDEO_SMIAPP)	+= smiapp/
 obj-$(CONFIG_VIDEO_ET8EK8)	+= et8ek8/
 obj-$(CONFIG_VIDEO_CX25840) += cx25840/
 obj-$(CONFIG_VIDEO_M5MOLS)	+= m5mols/
-obj-y				+= soc_camera/
 
 obj-$(CONFIG_VIDEO_APTINA_PLL) += aptina-pll.o
 obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
diff --git a/drivers/media/i2c/soc_camera/Kconfig b/drivers/media/i2c/soc_camera/Kconfig
deleted file mode 100644
index 7c2aabc8a3f6..000000000000
diff --git a/drivers/media/i2c/soc_camera/Makefile b/drivers/media/i2c/soc_camera/Makefile
deleted file mode 100644
index 09ae483b96ef..000000000000
diff --git a/drivers/media/i2c/soc_camera/ov9640.h b/drivers/media/i2c/soc_camera/ov9640.h
deleted file mode 100644
index 65d13ff17536..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_mt9m001.c b/drivers/media/i2c/soc_camera/soc_mt9m001.c
deleted file mode 100644
index a1a85ff838c5..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_mt9t112.c b/drivers/media/i2c/soc_camera/soc_mt9t112.c
deleted file mode 100644
index ea1ff270bc2d..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_mt9v022.c b/drivers/media/i2c/soc_camera/soc_mt9v022.c
deleted file mode 100644
index 6d922b17ea94..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_ov5642.c b/drivers/media/i2c/soc_camera/soc_ov5642.c
deleted file mode 100644
index 0931898c79dd..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_ov772x.c b/drivers/media/i2c/soc_camera/soc_ov772x.c
deleted file mode 100644
index fafd372527b2..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_ov9640.c b/drivers/media/i2c/soc_camera/soc_ov9640.c
deleted file mode 100644
index eb91b8240083..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_ov9740.c b/drivers/media/i2c/soc_camera/soc_ov9740.c
deleted file mode 100644
index a07d3145d1b4..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c b/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
deleted file mode 100644
index f0cb49a6167b..000000000000
diff --git a/drivers/media/i2c/soc_camera/soc_tw9910.c b/drivers/media/i2c/soc_camera/soc_tw9910.c
deleted file mode 100644
index bdb5e0a431e9..000000000000
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 0edacfb01f3a..87bca0fe37a4 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -132,7 +132,6 @@ config VIDEO_RENESAS_CEU
 	---help---
 	  This is a v4l2 driver for the Renesas CEU Interface
 
-source "drivers/media/platform/soc_camera/Kconfig"
 source "drivers/media/platform/exynos4-is/Kconfig"
 source "drivers/media/platform/am437x/Kconfig"
 source "drivers/media/platform/xilinx/Kconfig"
diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
index 6ab6200dd9c9..ad1d47c1a3b1 100644
--- a/drivers/media/platform/Makefile
+++ b/drivers/media/platform/Makefile
@@ -59,8 +59,6 @@ obj-y					+= davinci/
 
 obj-$(CONFIG_VIDEO_SH_VOU)		+= sh_vou.o
 
-obj-$(CONFIG_SOC_CAMERA)		+= soc_camera/
-
 obj-$(CONFIG_VIDEO_RCAR_DRIF)		+= rcar_drif.o
 obj-$(CONFIG_VIDEO_RENESAS_CEU)		+= renesas-ceu.o
 obj-$(CONFIG_VIDEO_RENESAS_FCP)		+= rcar-fcp.o
diff --git a/drivers/media/platform/soc_camera/Kconfig b/drivers/media/platform/soc_camera/Kconfig
deleted file mode 100644
index 669d116b8f09..000000000000
diff --git a/drivers/media/platform/soc_camera/Makefile b/drivers/media/platform/soc_camera/Makefile
deleted file mode 100644
index 07a451e8b228..000000000000
diff --git a/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c b/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
deleted file mode 100644
index 6803f744e307..000000000000
diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c
deleted file mode 100644
index 0a70fb67c401..000000000000
diff --git a/drivers/media/platform/soc_camera/soc_camera_platform.c b/drivers/media/platform/soc_camera/soc_camera_platform.c
deleted file mode 100644
index 79fbe1fea95f..000000000000
diff --git a/drivers/media/platform/soc_camera/soc_mediabus.c b/drivers/media/platform/soc_camera/soc_mediabus.c
deleted file mode 100644
index be74008ec0ca..000000000000
diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.c b/drivers/media/platform/soc_camera/soc_scale_crop.c
deleted file mode 100644
index 8d25ca0490f7..000000000000
diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.h b/drivers/media/platform/soc_camera/soc_scale_crop.h
deleted file mode 100644
index 9ca469312a1f..000000000000
diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
index db5cf67047ad..ad0de8a22313 100644
--- a/drivers/staging/media/Kconfig
+++ b/drivers/staging/media/Kconfig
@@ -25,10 +25,6 @@ source "drivers/staging/media/davinci_vpfe/Kconfig"
 
 source "drivers/staging/media/imx/Kconfig"
 
-source "drivers/staging/media/imx074/Kconfig"
-
-source "drivers/staging/media/mt9t031/Kconfig"
-
 source "drivers/staging/media/omap4iss/Kconfig"
 
 source "drivers/staging/media/tegra-vde/Kconfig"
diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile
index 503fbe47fa58..2d268d3905e5 100644
--- a/drivers/staging/media/Makefile
+++ b/drivers/staging/media/Makefile
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 obj-$(CONFIG_I2C_BCM2048)	+= bcm2048/
 obj-$(CONFIG_VIDEO_IMX_MEDIA)	+= imx/
-obj-$(CONFIG_SOC_CAMERA_IMX074)	+= imx074/
-obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031/
 obj-$(CONFIG_VIDEO_DM365_VPFE)	+= davinci_vpfe/
 obj-$(CONFIG_VIDEO_OMAP4)	+= omap4iss/
 obj-$(CONFIG_TEGRA_VDE)		+= tegra-vde/
diff --git a/drivers/staging/media/imx074/Kconfig b/drivers/staging/media/imx074/Kconfig
deleted file mode 100644
index 229cbeea580b..000000000000
diff --git a/drivers/staging/media/imx074/Makefile b/drivers/staging/media/imx074/Makefile
deleted file mode 100644
index 7d183574aa84..000000000000
diff --git a/drivers/staging/media/imx074/TODO b/drivers/staging/media/imx074/TODO
deleted file mode 100644
index 15580a4f950c..000000000000
diff --git a/drivers/staging/media/imx074/imx074.c b/drivers/staging/media/imx074/imx074.c
deleted file mode 100644
index 1676c166dc83..000000000000
diff --git a/drivers/staging/media/mt9t031/Kconfig b/drivers/staging/media/mt9t031/Kconfig
deleted file mode 100644
index 9a58aaf72edd..000000000000
diff --git a/drivers/staging/media/mt9t031/Makefile b/drivers/staging/media/mt9t031/Makefile
deleted file mode 100644
index bfd24c442b33..000000000000
diff --git a/drivers/staging/media/mt9t031/TODO b/drivers/staging/media/mt9t031/TODO
deleted file mode 100644
index 15580a4f950c..000000000000
diff --git a/drivers/staging/media/mt9t031/mt9t031.c b/drivers/staging/media/mt9t031/mt9t031.c
deleted file mode 100644
index 4ff179302b4f..000000000000
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-29 23:21 ` [PATCH 3/4] SoC camera: Remove the framework and the drivers Sakari Ailus
@ 2018-10-30  9:43   ` Mauro Carvalho Chehab
  2018-10-30 12:06     ` Mauro Carvalho Chehab
  2018-10-30 12:14     ` Mauro Carvalho Chehab
  0 siblings, 2 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30  9:43 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab, jacopo mondi

Em Tue, 30 Oct 2018 01:21:34 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> The SoC camera framework has been obsolete for some time and it is no
> longer functional. A few drivers have been converted to the V4L2
> sub-device API but for the rest the conversion has not taken place yet.
> 
> In order to keep the tree clean and to avoid keep maintaining
> non-functional and obsolete code, remove the SoC camera framework as well
> as the drivers that depend on it.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> Resending, this time with git format-patch -D .
> 
>  MAINTAINERS                                        |    8 -
>  drivers/media/i2c/Kconfig                          |    8 -
>  drivers/media/i2c/Makefile                         |    1 -
>  drivers/media/i2c/soc_camera/Kconfig               |   66 -
>  drivers/media/i2c/soc_camera/Makefile              |   10 -
>  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
>  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
>  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
>  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
>  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
>  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
>  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
>  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
>  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
>  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------

I don't see why we should remove those. I mean, Jacopo is
actually converting those drivers to not depend on soc_camera,
and it is a way better to review those patches with the old
code in place.

IMHO, the best would be to move those to /staging, eventually
depending on BROKEN.

>  drivers/media/platform/Kconfig                     |    1 -
>  drivers/media/platform/Makefile                    |    2 -
>  drivers/media/platform/soc_camera/Kconfig          |   26 -
>  drivers/media/platform/soc_camera/Makefile         |    9 -
>  .../platform/soc_camera/sh_mobile_ceu_camera.c     | 1810 ----------------
>  drivers/media/platform/soc_camera/soc_camera.c     | 2169 --------------------
>  .../platform/soc_camera/soc_camera_platform.c      |  188 --
>  drivers/media/platform/soc_camera/soc_mediabus.c   |  533 -----
>  drivers/media/platform/soc_camera/soc_scale_crop.c |  426 ----
>  drivers/media/platform/soc_camera/soc_scale_crop.h |   47 -
>  drivers/staging/media/Kconfig                      |    4 -
>  drivers/staging/media/Makefile                     |    2 -
>  drivers/staging/media/imx074/Kconfig               |    5 -
>  drivers/staging/media/imx074/Makefile              |    1 -
>  drivers/staging/media/imx074/TODO                  |    5 -
>  drivers/staging/media/imx074/imx074.c              |  496 -----
>  drivers/staging/media/mt9t031/Kconfig              |    5 -
>  drivers/staging/media/mt9t031/Makefile             |    1 -
>  drivers/staging/media/mt9t031/TODO                 |    5 -
>  drivers/staging/media/mt9t031/mt9t031.c            |  857 --------
>  35 files changed, 16177 deletions(-)
>  delete mode 100644 drivers/media/i2c/soc_camera/Kconfig
>  delete mode 100644 drivers/media/i2c/soc_camera/Makefile
>  delete mode 100644 drivers/media/i2c/soc_camera/ov9640.h
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9m001.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9t112.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9v022.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov5642.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov772x.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9640.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9740.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
>  delete mode 100644 drivers/media/i2c/soc_camera/soc_tw9910.c
>  delete mode 100644 drivers/media/platform/soc_camera/Kconfig
>  delete mode 100644 drivers/media/platform/soc_camera/Makefile
>  delete mode 100644 drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
>  delete mode 100644 drivers/media/platform/soc_camera/soc_camera.c
>  delete mode 100644 drivers/media/platform/soc_camera/soc_camera_platform.c
>  delete mode 100644 drivers/media/platform/soc_camera/soc_mediabus.c
>  delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.c
>  delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.h
>  delete mode 100644 drivers/staging/media/imx074/Kconfig
>  delete mode 100644 drivers/staging/media/imx074/Makefile
>  delete mode 100644 drivers/staging/media/imx074/TODO
>  delete mode 100644 drivers/staging/media/imx074/imx074.c
>  delete mode 100644 drivers/staging/media/mt9t031/Kconfig
>  delete mode 100644 drivers/staging/media/mt9t031/Makefile
>  delete mode 100644 drivers/staging/media/mt9t031/TODO
>  delete mode 100644 drivers/staging/media/mt9t031/mt9t031.c
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 23021e0df5d7..788de30125c1 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13422,14 +13422,6 @@ L:	netdev@vger.kernel.org
>  S:	Maintained
>  F:	drivers/net/ethernet/smsc/smsc9420.*
>  
> -SOC-CAMERA V4L2 SUBSYSTEM
> -L:	linux-media@vger.kernel.org
> -T:	git git://linuxtv.org/media_tree.git
> -S:	Orphan
> -F:	include/media/soc*
> -F:	drivers/media/i2c/soc_camera/
> -F:	drivers/media/platform/soc_camera/
> -
>  SOCIONEXT SYNQUACER I2C DRIVER
>  M:	Ard Biesheuvel <ard.biesheuvel@linaro.org>
>  L:	linux-i2c@vger.kernel.org
> diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
> index 704af210e270..c7683ac5a3d8 100644
> --- a/drivers/media/i2c/Kconfig
> +++ b/drivers/media/i2c/Kconfig
> @@ -1091,12 +1091,4 @@ config VIDEO_I2C
>  
>  endmenu
>  
> -menu "Sensors used on soc_camera driver"
> -
> -if SOC_CAMERA
> -	source "drivers/media/i2c/soc_camera/Kconfig"
> -endif
> -
> -endmenu
> -
>  endif
> diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
> index 260d4d9ec2a1..d83d1f2a08ee 100644
> --- a/drivers/media/i2c/Makefile
> +++ b/drivers/media/i2c/Makefile
> @@ -6,7 +6,6 @@ obj-$(CONFIG_VIDEO_SMIAPP)	+= smiapp/
>  obj-$(CONFIG_VIDEO_ET8EK8)	+= et8ek8/
>  obj-$(CONFIG_VIDEO_CX25840) += cx25840/
>  obj-$(CONFIG_VIDEO_M5MOLS)	+= m5mols/
> -obj-y				+= soc_camera/
>  
>  obj-$(CONFIG_VIDEO_APTINA_PLL) += aptina-pll.o
>  obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
> diff --git a/drivers/media/i2c/soc_camera/Kconfig b/drivers/media/i2c/soc_camera/Kconfig
> deleted file mode 100644
> index 7c2aabc8a3f6..000000000000
> diff --git a/drivers/media/i2c/soc_camera/Makefile b/drivers/media/i2c/soc_camera/Makefile
> deleted file mode 100644
> index 09ae483b96ef..000000000000
> diff --git a/drivers/media/i2c/soc_camera/ov9640.h b/drivers/media/i2c/soc_camera/ov9640.h
> deleted file mode 100644
> index 65d13ff17536..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_mt9m001.c b/drivers/media/i2c/soc_camera/soc_mt9m001.c
> deleted file mode 100644
> index a1a85ff838c5..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_mt9t112.c b/drivers/media/i2c/soc_camera/soc_mt9t112.c
> deleted file mode 100644
> index ea1ff270bc2d..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_mt9v022.c b/drivers/media/i2c/soc_camera/soc_mt9v022.c
> deleted file mode 100644
> index 6d922b17ea94..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_ov5642.c b/drivers/media/i2c/soc_camera/soc_ov5642.c
> deleted file mode 100644
> index 0931898c79dd..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_ov772x.c b/drivers/media/i2c/soc_camera/soc_ov772x.c
> deleted file mode 100644
> index fafd372527b2..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_ov9640.c b/drivers/media/i2c/soc_camera/soc_ov9640.c
> deleted file mode 100644
> index eb91b8240083..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_ov9740.c b/drivers/media/i2c/soc_camera/soc_ov9740.c
> deleted file mode 100644
> index a07d3145d1b4..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c b/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
> deleted file mode 100644
> index f0cb49a6167b..000000000000
> diff --git a/drivers/media/i2c/soc_camera/soc_tw9910.c b/drivers/media/i2c/soc_camera/soc_tw9910.c
> deleted file mode 100644
> index bdb5e0a431e9..000000000000
> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> index 0edacfb01f3a..87bca0fe37a4 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -132,7 +132,6 @@ config VIDEO_RENESAS_CEU
>  	---help---
>  	  This is a v4l2 driver for the Renesas CEU Interface
>  
> -source "drivers/media/platform/soc_camera/Kconfig"
>  source "drivers/media/platform/exynos4-is/Kconfig"
>  source "drivers/media/platform/am437x/Kconfig"
>  source "drivers/media/platform/xilinx/Kconfig"
> diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
> index 6ab6200dd9c9..ad1d47c1a3b1 100644
> --- a/drivers/media/platform/Makefile
> +++ b/drivers/media/platform/Makefile
> @@ -59,8 +59,6 @@ obj-y					+= davinci/
>  
>  obj-$(CONFIG_VIDEO_SH_VOU)		+= sh_vou.o
>  
> -obj-$(CONFIG_SOC_CAMERA)		+= soc_camera/
> -
>  obj-$(CONFIG_VIDEO_RCAR_DRIF)		+= rcar_drif.o
>  obj-$(CONFIG_VIDEO_RENESAS_CEU)		+= renesas-ceu.o
>  obj-$(CONFIG_VIDEO_RENESAS_FCP)		+= rcar-fcp.o
> diff --git a/drivers/media/platform/soc_camera/Kconfig b/drivers/media/platform/soc_camera/Kconfig
> deleted file mode 100644
> index 669d116b8f09..000000000000
> diff --git a/drivers/media/platform/soc_camera/Makefile b/drivers/media/platform/soc_camera/Makefile
> deleted file mode 100644
> index 07a451e8b228..000000000000
> diff --git a/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c b/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
> deleted file mode 100644
> index 6803f744e307..000000000000
> diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c
> deleted file mode 100644
> index 0a70fb67c401..000000000000
> diff --git a/drivers/media/platform/soc_camera/soc_camera_platform.c b/drivers/media/platform/soc_camera/soc_camera_platform.c
> deleted file mode 100644
> index 79fbe1fea95f..000000000000
> diff --git a/drivers/media/platform/soc_camera/soc_mediabus.c b/drivers/media/platform/soc_camera/soc_mediabus.c
> deleted file mode 100644
> index be74008ec0ca..000000000000
> diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.c b/drivers/media/platform/soc_camera/soc_scale_crop.c
> deleted file mode 100644
> index 8d25ca0490f7..000000000000
> diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.h b/drivers/media/platform/soc_camera/soc_scale_crop.h
> deleted file mode 100644
> index 9ca469312a1f..000000000000
> diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
> index db5cf67047ad..ad0de8a22313 100644
> --- a/drivers/staging/media/Kconfig
> +++ b/drivers/staging/media/Kconfig
> @@ -25,10 +25,6 @@ source "drivers/staging/media/davinci_vpfe/Kconfig"
>  
>  source "drivers/staging/media/imx/Kconfig"
>  
> -source "drivers/staging/media/imx074/Kconfig"
> -
> -source "drivers/staging/media/mt9t031/Kconfig"
> -
>  source "drivers/staging/media/omap4iss/Kconfig"
>  
>  source "drivers/staging/media/tegra-vde/Kconfig"
> diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile
> index 503fbe47fa58..2d268d3905e5 100644
> --- a/drivers/staging/media/Makefile
> +++ b/drivers/staging/media/Makefile
> @@ -1,8 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0
>  obj-$(CONFIG_I2C_BCM2048)	+= bcm2048/
>  obj-$(CONFIG_VIDEO_IMX_MEDIA)	+= imx/
> -obj-$(CONFIG_SOC_CAMERA_IMX074)	+= imx074/
> -obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031/
>  obj-$(CONFIG_VIDEO_DM365_VPFE)	+= davinci_vpfe/
>  obj-$(CONFIG_VIDEO_OMAP4)	+= omap4iss/
>  obj-$(CONFIG_TEGRA_VDE)		+= tegra-vde/
> diff --git a/drivers/staging/media/imx074/Kconfig b/drivers/staging/media/imx074/Kconfig
> deleted file mode 100644
> index 229cbeea580b..000000000000
> diff --git a/drivers/staging/media/imx074/Makefile b/drivers/staging/media/imx074/Makefile
> deleted file mode 100644
> index 7d183574aa84..000000000000
> diff --git a/drivers/staging/media/imx074/TODO b/drivers/staging/media/imx074/TODO
> deleted file mode 100644
> index 15580a4f950c..000000000000
> diff --git a/drivers/staging/media/imx074/imx074.c b/drivers/staging/media/imx074/imx074.c
> deleted file mode 100644
> index 1676c166dc83..000000000000
> diff --git a/drivers/staging/media/mt9t031/Kconfig b/drivers/staging/media/mt9t031/Kconfig
> deleted file mode 100644
> index 9a58aaf72edd..000000000000
> diff --git a/drivers/staging/media/mt9t031/Makefile b/drivers/staging/media/mt9t031/Makefile
> deleted file mode 100644
> index bfd24c442b33..000000000000
> diff --git a/drivers/staging/media/mt9t031/TODO b/drivers/staging/media/mt9t031/TODO
> deleted file mode 100644
> index 15580a4f950c..000000000000
> diff --git a/drivers/staging/media/mt9t031/mt9t031.c b/drivers/staging/media/mt9t031/mt9t031.c
> deleted file mode 100644
> index 4ff179302b4f..000000000000



Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-29 23:00 ` [PATCH 4/4] SoC camera: Tidy the header Sakari Ailus
@ 2018-10-30  9:50   ` Mauro Carvalho Chehab
  2018-10-30 12:06   ` Mauro Carvalho Chehab
  1 sibling, 0 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30  9:50 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab

Em Tue, 30 Oct 2018 01:00:29 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Clean up the SoC camera framework header. It only exists now to keep board
> code compiling. The header can be removed once the board code dependencies
> to it has been removed.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  include/media/soc_camera.h | 335 ---------------------------------------------
>  1 file changed, 335 deletions(-)
> 
> diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> index b7e42a1b0910..14d19da6052a 100644
> --- a/include/media/soc_camera.h
> +++ b/include/media/soc_camera.h
> @@ -22,172 +22,6 @@
>  #include <media/v4l2-ctrls.h>
>  #include <media/v4l2-device.h>

That doesn't make any sense. soc_camera.h should have the same fate
as the entire soc_camera infrastructure: either be removed or moved
to staging, and everything else that doesn't have the same fate
should get rid of this header.

Regards,
Mauro

>  
> -struct file;
> -struct soc_camera_desc;
> -struct soc_camera_async_client;
> -
> -struct soc_camera_device {
> -	struct list_head list;		/* list of all registered devices */
> -	struct soc_camera_desc *sdesc;
> -	struct device *pdev;		/* Platform device */
> -	struct device *parent;		/* Camera host device */
> -	struct device *control;		/* E.g., the i2c client */
> -	s32 user_width;
> -	s32 user_height;
> -	u32 bytesperline;		/* for padding, zero if unused */
> -	u32 sizeimage;
> -	enum v4l2_colorspace colorspace;
> -	unsigned char iface;		/* Host number */
> -	unsigned char devnum;		/* Device number per host */
> -	struct soc_camera_sense *sense;	/* See comment in struct definition */
> -	struct video_device *vdev;
> -	struct v4l2_ctrl_handler ctrl_handler;
> -	const struct soc_camera_format_xlate *current_fmt;
> -	struct soc_camera_format_xlate *user_formats;
> -	int num_user_formats;
> -	enum v4l2_field field;		/* Preserve field over close() */
> -	void *host_priv;		/* Per-device host private data */
> -	/* soc_camera.c private count. Only accessed with .host_lock held */
> -	int use_count;
> -	struct file *streamer;		/* stream owner */
> -	struct v4l2_clk *clk;
> -	/* Asynchronous subdevice management */
> -	struct soc_camera_async_client *sasc;
> -	/* video buffer queue */
> -	struct vb2_queue vb2_vidq;
> -};
> -
> -/* Host supports programmable stride */
> -#define SOCAM_HOST_CAP_STRIDE		(1 << 0)
> -
> -enum soc_camera_subdev_role {
> -	SOCAM_SUBDEV_DATA_SOURCE = 1,
> -	SOCAM_SUBDEV_DATA_SINK,
> -	SOCAM_SUBDEV_DATA_PROCESSOR,
> -};
> -
> -struct soc_camera_async_subdev {
> -	struct v4l2_async_subdev asd;
> -	enum soc_camera_subdev_role role;
> -};
> -
> -struct soc_camera_host {
> -	struct v4l2_device v4l2_dev;
> -	struct list_head list;
> -	struct mutex host_lock;		/* Main synchronisation lock */
> -	struct mutex clk_lock;		/* Protect pipeline modifications */
> -	unsigned char nr;		/* Host number */
> -	u32 capabilities;
> -	struct soc_camera_device *icd;	/* Currently attached client */
> -	void *priv;
> -	const char *drv_name;
> -	struct soc_camera_host_ops *ops;
> -	struct v4l2_async_subdev **asd;	/* Flat array, arranged in groups */
> -	unsigned int *asd_sizes;	/* 0-terminated array of asd group sizes */
> -};
> -
> -struct soc_camera_host_ops {
> -	struct module *owner;
> -	int (*add)(struct soc_camera_device *);
> -	void (*remove)(struct soc_camera_device *);
> -	int (*clock_start)(struct soc_camera_host *);
> -	void (*clock_stop)(struct soc_camera_host *);
> -	/*
> -	 * .get_formats() is called for each client device format, but
> -	 * .put_formats() is only called once. Further, if any of the calls to
> -	 * .get_formats() fail, .put_formats() will not be called at all, the
> -	 * failing .get_formats() must then clean up internally.
> -	 */
> -	int (*get_formats)(struct soc_camera_device *, unsigned int,
> -			   struct soc_camera_format_xlate *);
> -	void (*put_formats)(struct soc_camera_device *);
> -	int (*get_selection)(struct soc_camera_device *, struct v4l2_selection *);
> -	int (*set_selection)(struct soc_camera_device *, struct v4l2_selection *);
> -	/*
> -	 * The difference to .set_selection() is, that .set_liveselection is not allowed
> -	 * to change the output sizes
> -	 */
> -	int (*set_liveselection)(struct soc_camera_device *, struct v4l2_selection *);
> -	int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *);
> -	int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *);
> -	int (*init_videobuf2)(struct vb2_queue *,
> -			      struct soc_camera_device *);
> -	int (*querycap)(struct soc_camera_host *, struct v4l2_capability *);
> -	int (*set_bus_param)(struct soc_camera_device *);
> -	int (*get_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
> -	int (*set_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
> -	int (*enum_framesizes)(struct soc_camera_device *, struct v4l2_frmsizeenum *);
> -	__poll_t (*poll)(struct file *, poll_table *);
> -};
> -
> -#define SOCAM_SENSOR_INVERT_PCLK	(1 << 0)
> -#define SOCAM_SENSOR_INVERT_MCLK	(1 << 1)
> -#define SOCAM_SENSOR_INVERT_HSYNC	(1 << 2)
> -#define SOCAM_SENSOR_INVERT_VSYNC	(1 << 3)
> -#define SOCAM_SENSOR_INVERT_DATA	(1 << 4)
> -
> -struct i2c_board_info;
> -struct regulator_bulk_data;
> -
> -struct soc_camera_subdev_desc {
> -	/* Per camera SOCAM_SENSOR_* bus flags */
> -	unsigned long flags;
> -
> -	/* sensor driver private platform data */
> -	void *drv_priv;
> -
> -	/*
> -	 * Set unbalanced_power to true to deal with legacy drivers, failing to
> -	 * balance their calls to subdevice's .s_power() method. clock_state is
> -	 * then used internally by helper functions, it shouldn't be touched by
> -	 * drivers or the platform code.
> -	 */
> -	bool unbalanced_power;
> -	unsigned long clock_state;
> -
> -	/* Optional callbacks to power on or off and reset the sensor */
> -	int (*power)(struct device *, int);
> -	int (*reset)(struct device *);
> -
> -	/*
> -	 * some platforms may support different data widths than the sensors
> -	 * native ones due to different data line routing. Let the board code
> -	 * overwrite the width flags.
> -	 */
> -	int (*set_bus_param)(struct soc_camera_subdev_desc *, unsigned long flags);
> -	unsigned long (*query_bus_param)(struct soc_camera_subdev_desc *);
> -	void (*free_bus)(struct soc_camera_subdev_desc *);
> -
> -	/* Optional regulators that have to be managed on power on/off events */
> -	struct v4l2_subdev_platform_data sd_pdata;
> -};
> -
> -struct soc_camera_host_desc {
> -	/* Camera bus id, used to match a camera and a bus */
> -	int bus_id;
> -	int i2c_adapter_id;
> -	struct i2c_board_info *board_info;
> -	const char *module_name;
> -
> -	/*
> -	 * For non-I2C devices platform has to provide methods to add a device
> -	 * to the system and to remove it
> -	 */
> -	int (*add_device)(struct soc_camera_device *);
> -	void (*del_device)(struct soc_camera_device *);
> -};
> -
> -/*
> - * Platform data for "soc-camera-pdrv"
> - * This MUST be kept binary-identical to struct soc_camera_link below, until
> - * it is completely replaced by this one, after which we can split it into its
> - * two components.
> - */
> -struct soc_camera_desc {
> -	struct soc_camera_subdev_desc subdev_desc;
> -	struct soc_camera_host_desc host_desc;
> -};
> -
>  /* Prepare to replace this struct: don't change its layout any more! */
>  struct soc_camera_link {
>  	/*
> @@ -200,11 +34,6 @@ struct soc_camera_link {
>  
>  	void *priv;
>  
> -	/* Set by platforms to handle misbehaving drivers */
> -	bool unbalanced_power;
> -	/* Used by soc-camera helper functions */
> -	unsigned long clock_state;
> -
>  	/* Optional callbacks to power on or off and reset the sensor */
>  	int (*power)(struct device *, int);
>  	int (*reset)(struct device *);
> @@ -217,12 +46,6 @@ struct soc_camera_link {
>  	unsigned long (*query_bus_param)(struct soc_camera_link *);
>  	void (*free_bus)(struct soc_camera_link *);
>  
> -	/* Optional regulators that have to be managed on power on/off events */
> -	struct regulator_bulk_data *regulators;
> -	int num_regulators;
> -
> -	void *host_priv;
> -
>  	/*
>  	 * Host part - keep at bottom and compatible to
>  	 * struct soc_camera_host_desc
> @@ -233,168 +56,10 @@ struct soc_camera_link {
>  	int i2c_adapter_id;
>  	struct i2c_board_info *board_info;
>  	const char *module_name;
> -
> -	/*
> -	 * For non-I2C devices platform has to provide methods to add a device
> -	 * to the system and to remove it
> -	 */
> -	int (*add_device)(struct soc_camera_device *);
> -	void (*del_device)(struct soc_camera_device *);
> -};
> -
> -static inline struct soc_camera_host *to_soc_camera_host(
> -	const struct device *dev)
> -{
> -	struct v4l2_device *v4l2_dev = dev_get_drvdata(dev);
> -
> -	return container_of(v4l2_dev, struct soc_camera_host, v4l2_dev);
> -}
> -
> -static inline struct soc_camera_desc *to_soc_camera_desc(
> -	const struct soc_camera_device *icd)
> -{
> -	return icd->sdesc;
> -}
> -
> -static inline struct device *to_soc_camera_control(
> -	const struct soc_camera_device *icd)
> -{
> -	return icd->control;
> -}
> -
> -static inline struct v4l2_subdev *soc_camera_to_subdev(
> -	const struct soc_camera_device *icd)
> -{
> -	struct device *control = to_soc_camera_control(icd);
> -	return dev_get_drvdata(control);
> -}
> -
> -int soc_camera_host_register(struct soc_camera_host *ici);
> -void soc_camera_host_unregister(struct soc_camera_host *ici);
> -
> -const struct soc_camera_format_xlate *soc_camera_xlate_by_fourcc(
> -	struct soc_camera_device *icd, unsigned int fourcc);
> -
> -/**
> - * struct soc_camera_format_xlate - match between host and sensor formats
> - * @code: code of a sensor provided format
> - * @host_fmt: host format after host translation from code
> - *
> - * Host and sensor translation structure. Used in table of host and sensor
> - * formats matchings in soc_camera_device. A host can override the generic list
> - * generation by implementing get_formats(), and use it for format checks and
> - * format setup.
> - */
> -struct soc_camera_format_xlate {
> -	u32 code;
> -	const struct soc_mbus_pixelfmt *host_fmt;
> -};
> -
> -#define SOCAM_SENSE_PCLK_CHANGED	(1 << 0)
> -
> -/**
> - * This struct can be attached to struct soc_camera_device by the host driver
> - * to request sense from the camera, for example, when calling .set_fmt(). The
> - * host then can check which flags are set and verify respective values if any.
> - * For example, if SOCAM_SENSE_PCLK_CHANGED is set, it means, pixclock has
> - * changed during this operation. After completion the host should detach sense.
> - *
> - * @flags		ored SOCAM_SENSE_* flags
> - * @master_clock	if the host wants to be informed about pixel-clock
> - *			change, it better set master_clock.
> - * @pixel_clock_max	maximum pixel clock frequency supported by the host,
> - *			camera is not allowed to exceed this.
> - * @pixel_clock		if the camera driver changed pixel clock during this
> - *			operation, it sets SOCAM_SENSE_PCLK_CHANGED, uses
> - *			master_clock to calculate the new pixel-clock and
> - *			sets this field.
> - */
> -struct soc_camera_sense {
> -	unsigned long flags;
> -	unsigned long master_clock;
> -	unsigned long pixel_clock_max;
> -	unsigned long pixel_clock;
>  };
>  
>  #define SOCAM_DATAWIDTH(x)	BIT((x) - 1)
> -#define SOCAM_DATAWIDTH_4	SOCAM_DATAWIDTH(4)
>  #define SOCAM_DATAWIDTH_8	SOCAM_DATAWIDTH(8)
> -#define SOCAM_DATAWIDTH_9	SOCAM_DATAWIDTH(9)
>  #define SOCAM_DATAWIDTH_10	SOCAM_DATAWIDTH(10)
> -#define SOCAM_DATAWIDTH_12	SOCAM_DATAWIDTH(12)
> -#define SOCAM_DATAWIDTH_15	SOCAM_DATAWIDTH(15)
> -#define SOCAM_DATAWIDTH_16	SOCAM_DATAWIDTH(16)
> -#define SOCAM_DATAWIDTH_18	SOCAM_DATAWIDTH(18)
> -#define SOCAM_DATAWIDTH_24	SOCAM_DATAWIDTH(24)
> -
> -#define SOCAM_DATAWIDTH_MASK (SOCAM_DATAWIDTH_4 | SOCAM_DATAWIDTH_8 | \
> -			      SOCAM_DATAWIDTH_9 | SOCAM_DATAWIDTH_10 | \
> -			      SOCAM_DATAWIDTH_12 | SOCAM_DATAWIDTH_15 | \
> -			      SOCAM_DATAWIDTH_16 | SOCAM_DATAWIDTH_18 | \
> -			      SOCAM_DATAWIDTH_24)
> -
> -static inline void soc_camera_limit_side(int *start, int *length,
> -		unsigned int start_min,
> -		unsigned int length_min, unsigned int length_max)
> -{
> -	if (*length < length_min)
> -		*length = length_min;
> -	else if (*length > length_max)
> -		*length = length_max;
> -
> -	if (*start < start_min)
> -		*start = start_min;
> -	else if (*start > start_min + length_max - *length)
> -		*start = start_min + length_max - *length;
> -}
> -
> -unsigned long soc_camera_apply_board_flags(struct soc_camera_subdev_desc *ssdd,
> -					   const struct v4l2_mbus_config *cfg);
> -
> -int soc_camera_power_init(struct device *dev, struct soc_camera_subdev_desc *ssdd);
> -int soc_camera_power_on(struct device *dev, struct soc_camera_subdev_desc *ssdd,
> -			struct v4l2_clk *clk);
> -int soc_camera_power_off(struct device *dev, struct soc_camera_subdev_desc *ssdd,
> -			 struct v4l2_clk *clk);
> -
> -static inline int soc_camera_set_power(struct device *dev,
> -		struct soc_camera_subdev_desc *ssdd, struct v4l2_clk *clk, bool on)
> -{
> -	return on ? soc_camera_power_on(dev, ssdd, clk)
> -		  : soc_camera_power_off(dev, ssdd, clk);
> -}
> -
> -/* This is only temporary here - until v4l2-subdev begins to link to video_device */
> -#include <linux/i2c.h>
> -static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client)
> -{
> -	struct v4l2_subdev *sd = i2c_get_clientdata(client);
> -	struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
> -	return icd ? icd->vdev : NULL;
> -}
> -
> -static inline struct soc_camera_subdev_desc *soc_camera_i2c_to_desc(const struct i2c_client *client)
> -{
> -	return client->dev.platform_data;
> -}
> -
> -static inline struct v4l2_subdev *soc_camera_vdev_to_subdev(struct video_device *vdev)
> -{
> -	struct soc_camera_device *icd = video_get_drvdata(vdev);
> -	return soc_camera_to_subdev(icd);
> -}
> -
> -static inline struct soc_camera_device *soc_camera_from_vb2q(const struct vb2_queue *vq)
> -{
> -	return container_of(vq, struct soc_camera_device, vb2_vidq);
> -}
> -
> -static inline u32 soc_camera_grp_id(const struct soc_camera_device *icd)
> -{
> -	return (icd->iface << 8) | (icd->devnum + 1);
> -}
> -
> -void soc_camera_lock(struct vb2_queue *vq);
> -void soc_camera_unlock(struct vb2_queue *vq);
>  
>  #endif


Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 2/4] tw9910: No SoC camera dependency
  2018-10-29 23:00 ` [PATCH 2/4] tw9910: No SoC camera dependency Sakari Ailus
@ 2018-10-30 12:03   ` Hans Verkuil
  2018-10-31  9:49     ` Sakari Ailus
  0 siblings, 1 reply; 27+ messages in thread
From: Hans Verkuil @ 2018-10-30 12:03 UTC (permalink / raw)
  To: Sakari Ailus, linux-media; +Cc: mchehab

On 10/30/2018 12:00 AM, Sakari Ailus wrote:
> The tw9910 driver does not depend on SoC camera framework. Don't include
> the header, but instead include media/v4l2-async.h which the driver really
> needs.

You might want to make a note of the fact that soc_camera.h includes
v4l2-async.h, so removing soc_camera.h requires adding v4l2-async.h.

I couldn't understand how it compiled before without the v4l2-async.h
header until I saw that soc_camera.h includes it.

Regards,

	Hans

> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  drivers/media/i2c/tw9910.c | 1 +
>  include/media/i2c/tw9910.h | 2 --
>  2 files changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c
> index 7087ce946af1..6478bd41afb8 100644
> --- a/drivers/media/i2c/tw9910.c
> +++ b/drivers/media/i2c/tw9910.c
> @@ -27,6 +27,7 @@
>  #include <linux/videodev2.h>
>  
>  #include <media/i2c/tw9910.h>
> +#include <media/v4l2-async.h>
>  #include <media/v4l2-subdev.h>
>  
>  #define GET_ID(val)  ((val & 0xF8) >> 3)
> diff --git a/include/media/i2c/tw9910.h b/include/media/i2c/tw9910.h
> index bec8f7bce745..2f93799d5a21 100644
> --- a/include/media/i2c/tw9910.h
> +++ b/include/media/i2c/tw9910.h
> @@ -16,8 +16,6 @@
>  #ifndef __TW9910_H__
>  #define __TW9910_H__
>  
> -#include <media/soc_camera.h>
> -
>  /**
>   * tw9910_mpout_pin - MPOUT (multi-purpose output) pin functions
>   */
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30  9:43   ` Mauro Carvalho Chehab
@ 2018-10-30 12:06     ` Mauro Carvalho Chehab
  2018-10-30 12:09       ` Mauro Carvalho Chehab
  2018-10-30 12:14     ` Mauro Carvalho Chehab
  1 sibling, 1 reply; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30 12:06 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab, jacopo mondi

Em Tue, 30 Oct 2018 06:43:41 -0300
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> escreveu:

> Em Tue, 30 Oct 2018 01:21:34 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
> > The SoC camera framework has been obsolete for some time and it is no
> > longer functional. A few drivers have been converted to the V4L2
> > sub-device API but for the rest the conversion has not taken place yet.
> > 
> > In order to keep the tree clean and to avoid keep maintaining
> > non-functional and obsolete code, remove the SoC camera framework as well
> > as the drivers that depend on it.
> > 
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> > Resending, this time with git format-patch -D .
> > 
> >  MAINTAINERS                                        |    8 -
> >  drivers/media/i2c/Kconfig                          |    8 -
> >  drivers/media/i2c/Makefile                         |    1 -
> >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------  
> 
> I don't see why we should remove those. I mean, Jacopo is
> actually converting those drivers to not depend on soc_camera,
> and it is a way better to review those patches with the old
> code in place.
> 
> IMHO, the best would be to move those to /staging, eventually
> depending on BROKEN.
> 
> >  drivers/media/platform/Kconfig                     |    1 -
> >  drivers/media/platform/Makefile                    |    2 -
> >  drivers/media/platform/soc_camera/Kconfig          |   26 -
> >  drivers/media/platform/soc_camera/Makefile         |    9 -
> >  .../platform/soc_camera/sh_mobile_ceu_camera.c     | 1810 ----------------
> >  drivers/media/platform/soc_camera/soc_camera.c     | 2169 --------------------
> >  .../platform/soc_camera/soc_camera_platform.c      |  188 --
> >  drivers/media/platform/soc_camera/soc_mediabus.c   |  533 -----
> >  drivers/media/platform/soc_camera/soc_scale_crop.c |  426 ----
> >  drivers/media/platform/soc_camera/soc_scale_crop.h |   47 -
> >  drivers/staging/media/Kconfig                      |    4 -
> >  drivers/staging/media/Makefile                     |    2 -
> >  drivers/staging/media/imx074/Kconfig               |    5 -
> >  drivers/staging/media/imx074/Makefile              |    1 -
> >  drivers/staging/media/imx074/TODO                  |    5 -
> >  drivers/staging/media/imx074/imx074.c              |  496 -----
> >  drivers/staging/media/mt9t031/Kconfig              |    5 -
> >  drivers/staging/media/mt9t031/Makefile             |    1 -
> >  drivers/staging/media/mt9t031/TODO                 |    5 -
> >  drivers/staging/media/mt9t031/mt9t031.c            |  857 --------
> >  35 files changed, 16177 deletions(-)
> >  delete mode 100644 drivers/media/i2c/soc_camera/Kconfig
> >  delete mode 100644 drivers/media/i2c/soc_camera/Makefile
> >  delete mode 100644 drivers/media/i2c/soc_camera/ov9640.h
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9m001.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9t112.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_mt9v022.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov5642.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov772x.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9640.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_ov9740.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
> >  delete mode 100644 drivers/media/i2c/soc_camera/soc_tw9910.c
> >  delete mode 100644 drivers/media/platform/soc_camera/Kconfig
> >  delete mode 100644 drivers/media/platform/soc_camera/Makefile
> >  delete mode 100644 drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
> >  delete mode 100644 drivers/media/platform/soc_camera/soc_camera.c
> >  delete mode 100644 drivers/media/platform/soc_camera/soc_camera_platform.c
> >  delete mode 100644 drivers/media/platform/soc_camera/soc_mediabus.c
> >  delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.c
> >  delete mode 100644 drivers/media/platform/soc_camera/soc_scale_crop.h
> >  delete mode 100644 drivers/staging/media/imx074/Kconfig
> >  delete mode 100644 drivers/staging/media/imx074/Makefile
> >  delete mode 100644 drivers/staging/media/imx074/TODO
> >  delete mode 100644 drivers/staging/media/imx074/imx074.c
> >  delete mode 100644 drivers/staging/media/mt9t031/Kconfig
> >  delete mode 100644 drivers/staging/media/mt9t031/Makefile
> >  delete mode 100644 drivers/staging/media/mt9t031/TODO
> >  delete mode 100644 drivers/staging/media/mt9t031/mt9t031.c
> > 
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 23021e0df5d7..788de30125c1 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -13422,14 +13422,6 @@ L:	netdev@vger.kernel.org
> >  S:	Maintained
> >  F:	drivers/net/ethernet/smsc/smsc9420.*
> >  
> > -SOC-CAMERA V4L2 SUBSYSTEM
> > -L:	linux-media@vger.kernel.org
> > -T:	git git://linuxtv.org/media_tree.git
> > -S:	Orphan
> > -F:	include/media/soc*
> > -F:	drivers/media/i2c/soc_camera/
> > -F:	drivers/media/platform/soc_camera/
> > -
> >  SOCIONEXT SYNQUACER I2C DRIVER
> >  M:	Ard Biesheuvel <ard.biesheuvel@linaro.org>
> >  L:	linux-i2c@vger.kernel.org
> > diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
> > index 704af210e270..c7683ac5a3d8 100644
> > --- a/drivers/media/i2c/Kconfig
> > +++ b/drivers/media/i2c/Kconfig
> > @@ -1091,12 +1091,4 @@ config VIDEO_I2C
> >  
> >  endmenu
> >  
> > -menu "Sensors used on soc_camera driver"
> > -
> > -if SOC_CAMERA
> > -	source "drivers/media/i2c/soc_camera/Kconfig"
> > -endif
> > -
> > -endmenu
> > -
> >  endif
> > diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
> > index 260d4d9ec2a1..d83d1f2a08ee 100644
> > --- a/drivers/media/i2c/Makefile
> > +++ b/drivers/media/i2c/Makefile
> > @@ -6,7 +6,6 @@ obj-$(CONFIG_VIDEO_SMIAPP)	+= smiapp/
> >  obj-$(CONFIG_VIDEO_ET8EK8)	+= et8ek8/
> >  obj-$(CONFIG_VIDEO_CX25840) += cx25840/
> >  obj-$(CONFIG_VIDEO_M5MOLS)	+= m5mols/
> > -obj-y				+= soc_camera/
> >  
> >  obj-$(CONFIG_VIDEO_APTINA_PLL) += aptina-pll.o
> >  obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
> > diff --git a/drivers/media/i2c/soc_camera/Kconfig b/drivers/media/i2c/soc_camera/Kconfig
> > deleted file mode 100644
> > index 7c2aabc8a3f6..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/Makefile b/drivers/media/i2c/soc_camera/Makefile
> > deleted file mode 100644
> > index 09ae483b96ef..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/ov9640.h b/drivers/media/i2c/soc_camera/ov9640.h
> > deleted file mode 100644
> > index 65d13ff17536..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_mt9m001.c b/drivers/media/i2c/soc_camera/soc_mt9m001.c
> > deleted file mode 100644
> > index a1a85ff838c5..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_mt9t112.c b/drivers/media/i2c/soc_camera/soc_mt9t112.c
> > deleted file mode 100644
> > index ea1ff270bc2d..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_mt9v022.c b/drivers/media/i2c/soc_camera/soc_mt9v022.c
> > deleted file mode 100644
> > index 6d922b17ea94..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_ov5642.c b/drivers/media/i2c/soc_camera/soc_ov5642.c
> > deleted file mode 100644
> > index 0931898c79dd..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_ov772x.c b/drivers/media/i2c/soc_camera/soc_ov772x.c
> > deleted file mode 100644
> > index fafd372527b2..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_ov9640.c b/drivers/media/i2c/soc_camera/soc_ov9640.c
> > deleted file mode 100644
> > index eb91b8240083..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_ov9740.c b/drivers/media/i2c/soc_camera/soc_ov9740.c
> > deleted file mode 100644
> > index a07d3145d1b4..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c b/drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c
> > deleted file mode 100644
> > index f0cb49a6167b..000000000000
> > diff --git a/drivers/media/i2c/soc_camera/soc_tw9910.c b/drivers/media/i2c/soc_camera/soc_tw9910.c
> > deleted file mode 100644
> > index bdb5e0a431e9..000000000000
> > diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> > index 0edacfb01f3a..87bca0fe37a4 100644
> > --- a/drivers/media/platform/Kconfig
> > +++ b/drivers/media/platform/Kconfig
> > @@ -132,7 +132,6 @@ config VIDEO_RENESAS_CEU
> >  	---help---
> >  	  This is a v4l2 driver for the Renesas CEU Interface
> >  
> > -source "drivers/media/platform/soc_camera/Kconfig"
> >  source "drivers/media/platform/exynos4-is/Kconfig"
> >  source "drivers/media/platform/am437x/Kconfig"
> >  source "drivers/media/platform/xilinx/Kconfig"
> > diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
> > index 6ab6200dd9c9..ad1d47c1a3b1 100644
> > --- a/drivers/media/platform/Makefile
> > +++ b/drivers/media/platform/Makefile
> > @@ -59,8 +59,6 @@ obj-y					+= davinci/
> >  
> >  obj-$(CONFIG_VIDEO_SH_VOU)		+= sh_vou.o
> >  
> > -obj-$(CONFIG_SOC_CAMERA)		+= soc_camera/
> > -
> >  obj-$(CONFIG_VIDEO_RCAR_DRIF)		+= rcar_drif.o
> >  obj-$(CONFIG_VIDEO_RENESAS_CEU)		+= renesas-ceu.o
> >  obj-$(CONFIG_VIDEO_RENESAS_FCP)		+= rcar-fcp.o
> > diff --git a/drivers/media/platform/soc_camera/Kconfig b/drivers/media/platform/soc_camera/Kconfig
> > deleted file mode 100644
> > index 669d116b8f09..000000000000
> > diff --git a/drivers/media/platform/soc_camera/Makefile b/drivers/media/platform/soc_camera/Makefile
> > deleted file mode 100644
> > index 07a451e8b228..000000000000
> > diff --git a/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c b/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
> > deleted file mode 100644
> > index 6803f744e307..000000000000
> > diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c
> > deleted file mode 100644
> > index 0a70fb67c401..000000000000
> > diff --git a/drivers/media/platform/soc_camera/soc_camera_platform.c b/drivers/media/platform/soc_camera/soc_camera_platform.c
> > deleted file mode 100644
> > index 79fbe1fea95f..000000000000
> > diff --git a/drivers/media/platform/soc_camera/soc_mediabus.c b/drivers/media/platform/soc_camera/soc_mediabus.c
> > deleted file mode 100644
> > index be74008ec0ca..000000000000
> > diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.c b/drivers/media/platform/soc_camera/soc_scale_crop.c
> > deleted file mode 100644
> > index 8d25ca0490f7..000000000000
> > diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.h b/drivers/media/platform/soc_camera/soc_scale_crop.h
> > deleted file mode 100644
> > index 9ca469312a1f..000000000000
> > diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
> > index db5cf67047ad..ad0de8a22313 100644
> > --- a/drivers/staging/media/Kconfig
> > +++ b/drivers/staging/media/Kconfig
> > @@ -25,10 +25,6 @@ source "drivers/staging/media/davinci_vpfe/Kconfig"
> >  
> >  source "drivers/staging/media/imx/Kconfig"
> >  
> > -source "drivers/staging/media/imx074/Kconfig"
> > -
> > -source "drivers/staging/media/mt9t031/Kconfig"
> > -
> >  source "drivers/staging/media/omap4iss/Kconfig"
> >  
> >  source "drivers/staging/media/tegra-vde/Kconfig"
> > diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile
> > index 503fbe47fa58..2d268d3905e5 100644
> > --- a/drivers/staging/media/Makefile
> > +++ b/drivers/staging/media/Makefile
> > @@ -1,8 +1,6 @@
> >  # SPDX-License-Identifier: GPL-2.0
> >  obj-$(CONFIG_I2C_BCM2048)	+= bcm2048/
> >  obj-$(CONFIG_VIDEO_IMX_MEDIA)	+= imx/
> > -obj-$(CONFIG_SOC_CAMERA_IMX074)	+= imx074/
> > -obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031/
> >  obj-$(CONFIG_VIDEO_DM365_VPFE)	+= davinci_vpfe/
> >  obj-$(CONFIG_VIDEO_OMAP4)	+= omap4iss/
> >  obj-$(CONFIG_TEGRA_VDE)		+= tegra-vde/
> > diff --git a/drivers/staging/media/imx074/Kconfig b/drivers/staging/media/imx074/Kconfig
> > deleted file mode 100644
> > index 229cbeea580b..000000000000
> > diff --git a/drivers/staging/media/imx074/Makefile b/drivers/staging/media/imx074/Makefile
> > deleted file mode 100644
> > index 7d183574aa84..000000000000
> > diff --git a/drivers/staging/media/imx074/TODO b/drivers/staging/media/imx074/TODO
> > deleted file mode 100644
> > index 15580a4f950c..000000000000
> > diff --git a/drivers/staging/media/imx074/imx074.c b/drivers/staging/media/imx074/imx074.c
> > deleted file mode 100644
> > index 1676c166dc83..000000000000
> > diff --git a/drivers/staging/media/mt9t031/Kconfig b/drivers/staging/media/mt9t031/Kconfig
> > deleted file mode 100644
> > index 9a58aaf72edd..000000000000
> > diff --git a/drivers/staging/media/mt9t031/Makefile b/drivers/staging/media/mt9t031/Makefile
> > deleted file mode 100644
> > index bfd24c442b33..000000000000
> > diff --git a/drivers/staging/media/mt9t031/TODO b/drivers/staging/media/mt9t031/TODO
> > deleted file mode 100644
> > index 15580a4f950c..000000000000
> > diff --git a/drivers/staging/media/mt9t031/mt9t031.c b/drivers/staging/media/mt9t031/mt9t031.c
> > deleted file mode 100644
> > index 4ff179302b4f..000000000000  
> 
> 
> 
> Thanks,
> Mauro



Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-29 23:00 ` [PATCH 4/4] SoC camera: Tidy the header Sakari Ailus
  2018-10-30  9:50   ` Mauro Carvalho Chehab
@ 2018-10-30 12:06   ` Mauro Carvalho Chehab
  2018-10-31  9:29     ` Sakari Ailus
  1 sibling, 1 reply; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30 12:06 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab

Em Tue, 30 Oct 2018 01:00:29 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Clean up the SoC camera framework header. It only exists now to keep board
> code compiling. The header can be removed once the board code dependencies
> to it has been removed.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  include/media/soc_camera.h | 335 ---------------------------------------------
>  1 file changed, 335 deletions(-)
> 
> diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> index b7e42a1b0910..14d19da6052a 100644
> --- a/include/media/soc_camera.h
> +++ b/include/media/soc_camera.h
> @@ -22,172 +22,6 @@
>  #include <media/v4l2-ctrls.h>
>  #include <media/v4l2-device.h>

That doesn't make any sense. soc_camera.h should have the same fate
as the entire soc_camera infrastructure: either be removed or moved
to staging, and everything else that doesn't have the same fate
should get rid of this header.

Regards,
Mauro

>  
> -struct file;
> -struct soc_camera_desc;
> -struct soc_camera_async_client;
> -
> -struct soc_camera_device {
> -	struct list_head list;		/* list of all registered devices */
> -	struct soc_camera_desc *sdesc;
> -	struct device *pdev;		/* Platform device */
> -	struct device *parent;		/* Camera host device */
> -	struct device *control;		/* E.g., the i2c client */
> -	s32 user_width;
> -	s32 user_height;
> -	u32 bytesperline;		/* for padding, zero if unused */
> -	u32 sizeimage;
> -	enum v4l2_colorspace colorspace;
> -	unsigned char iface;		/* Host number */
> -	unsigned char devnum;		/* Device number per host */
> -	struct soc_camera_sense *sense;	/* See comment in struct definition */
> -	struct video_device *vdev;
> -	struct v4l2_ctrl_handler ctrl_handler;
> -	const struct soc_camera_format_xlate *current_fmt;
> -	struct soc_camera_format_xlate *user_formats;
> -	int num_user_formats;
> -	enum v4l2_field field;		/* Preserve field over close() */
> -	void *host_priv;		/* Per-device host private data */
> -	/* soc_camera.c private count. Only accessed with .host_lock held */
> -	int use_count;
> -	struct file *streamer;		/* stream owner */
> -	struct v4l2_clk *clk;
> -	/* Asynchronous subdevice management */
> -	struct soc_camera_async_client *sasc;
> -	/* video buffer queue */
> -	struct vb2_queue vb2_vidq;
> -};
> -
> -/* Host supports programmable stride */
> -#define SOCAM_HOST_CAP_STRIDE		(1 << 0)
> -
> -enum soc_camera_subdev_role {
> -	SOCAM_SUBDEV_DATA_SOURCE = 1,
> -	SOCAM_SUBDEV_DATA_SINK,
> -	SOCAM_SUBDEV_DATA_PROCESSOR,
> -};
> -
> -struct soc_camera_async_subdev {
> -	struct v4l2_async_subdev asd;
> -	enum soc_camera_subdev_role role;
> -};
> -
> -struct soc_camera_host {
> -	struct v4l2_device v4l2_dev;
> -	struct list_head list;
> -	struct mutex host_lock;		/* Main synchronisation lock */
> -	struct mutex clk_lock;		/* Protect pipeline modifications */
> -	unsigned char nr;		/* Host number */
> -	u32 capabilities;
> -	struct soc_camera_device *icd;	/* Currently attached client */
> -	void *priv;
> -	const char *drv_name;
> -	struct soc_camera_host_ops *ops;
> -	struct v4l2_async_subdev **asd;	/* Flat array, arranged in groups */
> -	unsigned int *asd_sizes;	/* 0-terminated array of asd group sizes */
> -};
> -
> -struct soc_camera_host_ops {
> -	struct module *owner;
> -	int (*add)(struct soc_camera_device *);
> -	void (*remove)(struct soc_camera_device *);
> -	int (*clock_start)(struct soc_camera_host *);
> -	void (*clock_stop)(struct soc_camera_host *);
> -	/*
> -	 * .get_formats() is called for each client device format, but
> -	 * .put_formats() is only called once. Further, if any of the calls to
> -	 * .get_formats() fail, .put_formats() will not be called at all, the
> -	 * failing .get_formats() must then clean up internally.
> -	 */
> -	int (*get_formats)(struct soc_camera_device *, unsigned int,
> -			   struct soc_camera_format_xlate *);
> -	void (*put_formats)(struct soc_camera_device *);
> -	int (*get_selection)(struct soc_camera_device *, struct v4l2_selection *);
> -	int (*set_selection)(struct soc_camera_device *, struct v4l2_selection *);
> -	/*
> -	 * The difference to .set_selection() is, that .set_liveselection is not allowed
> -	 * to change the output sizes
> -	 */
> -	int (*set_liveselection)(struct soc_camera_device *, struct v4l2_selection *);
> -	int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *);
> -	int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *);
> -	int (*init_videobuf2)(struct vb2_queue *,
> -			      struct soc_camera_device *);
> -	int (*querycap)(struct soc_camera_host *, struct v4l2_capability *);
> -	int (*set_bus_param)(struct soc_camera_device *);
> -	int (*get_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
> -	int (*set_parm)(struct soc_camera_device *, struct v4l2_streamparm *);
> -	int (*enum_framesizes)(struct soc_camera_device *, struct v4l2_frmsizeenum *);
> -	__poll_t (*poll)(struct file *, poll_table *);
> -};
> -
> -#define SOCAM_SENSOR_INVERT_PCLK	(1 << 0)
> -#define SOCAM_SENSOR_INVERT_MCLK	(1 << 1)
> -#define SOCAM_SENSOR_INVERT_HSYNC	(1 << 2)
> -#define SOCAM_SENSOR_INVERT_VSYNC	(1 << 3)
> -#define SOCAM_SENSOR_INVERT_DATA	(1 << 4)
> -
> -struct i2c_board_info;
> -struct regulator_bulk_data;
> -
> -struct soc_camera_subdev_desc {
> -	/* Per camera SOCAM_SENSOR_* bus flags */
> -	unsigned long flags;
> -
> -	/* sensor driver private platform data */
> -	void *drv_priv;
> -
> -	/*
> -	 * Set unbalanced_power to true to deal with legacy drivers, failing to
> -	 * balance their calls to subdevice's .s_power() method. clock_state is
> -	 * then used internally by helper functions, it shouldn't be touched by
> -	 * drivers or the platform code.
> -	 */
> -	bool unbalanced_power;
> -	unsigned long clock_state;
> -
> -	/* Optional callbacks to power on or off and reset the sensor */
> -	int (*power)(struct device *, int);
> -	int (*reset)(struct device *);
> -
> -	/*
> -	 * some platforms may support different data widths than the sensors
> -	 * native ones due to different data line routing. Let the board code
> -	 * overwrite the width flags.
> -	 */
> -	int (*set_bus_param)(struct soc_camera_subdev_desc *, unsigned long flags);
> -	unsigned long (*query_bus_param)(struct soc_camera_subdev_desc *);
> -	void (*free_bus)(struct soc_camera_subdev_desc *);
> -
> -	/* Optional regulators that have to be managed on power on/off events */
> -	struct v4l2_subdev_platform_data sd_pdata;
> -};
> -
> -struct soc_camera_host_desc {
> -	/* Camera bus id, used to match a camera and a bus */
> -	int bus_id;
> -	int i2c_adapter_id;
> -	struct i2c_board_info *board_info;
> -	const char *module_name;
> -
> -	/*
> -	 * For non-I2C devices platform has to provide methods to add a device
> -	 * to the system and to remove it
> -	 */
> -	int (*add_device)(struct soc_camera_device *);
> -	void (*del_device)(struct soc_camera_device *);
> -};
> -
> -/*
> - * Platform data for "soc-camera-pdrv"
> - * This MUST be kept binary-identical to struct soc_camera_link below, until
> - * it is completely replaced by this one, after which we can split it into its
> - * two components.
> - */
> -struct soc_camera_desc {
> -	struct soc_camera_subdev_desc subdev_desc;
> -	struct soc_camera_host_desc host_desc;
> -};
> -
>  /* Prepare to replace this struct: don't change its layout any more! */
>  struct soc_camera_link {
>  	/*
> @@ -200,11 +34,6 @@ struct soc_camera_link {
>  
>  	void *priv;
>  
> -	/* Set by platforms to handle misbehaving drivers */
> -	bool unbalanced_power;
> -	/* Used by soc-camera helper functions */
> -	unsigned long clock_state;
> -
>  	/* Optional callbacks to power on or off and reset the sensor */
>  	int (*power)(struct device *, int);
>  	int (*reset)(struct device *);
> @@ -217,12 +46,6 @@ struct soc_camera_link {
>  	unsigned long (*query_bus_param)(struct soc_camera_link *);
>  	void (*free_bus)(struct soc_camera_link *);
>  
> -	/* Optional regulators that have to be managed on power on/off events */
> -	struct regulator_bulk_data *regulators;
> -	int num_regulators;
> -
> -	void *host_priv;
> -
>  	/*
>  	 * Host part - keep at bottom and compatible to
>  	 * struct soc_camera_host_desc
> @@ -233,168 +56,10 @@ struct soc_camera_link {
>  	int i2c_adapter_id;
>  	struct i2c_board_info *board_info;
>  	const char *module_name;
> -
> -	/*
> -	 * For non-I2C devices platform has to provide methods to add a device
> -	 * to the system and to remove it
> -	 */
> -	int (*add_device)(struct soc_camera_device *);
> -	void (*del_device)(struct soc_camera_device *);
> -};
> -
> -static inline struct soc_camera_host *to_soc_camera_host(
> -	const struct device *dev)
> -{
> -	struct v4l2_device *v4l2_dev = dev_get_drvdata(dev);
> -
> -	return container_of(v4l2_dev, struct soc_camera_host, v4l2_dev);
> -}
> -
> -static inline struct soc_camera_desc *to_soc_camera_desc(
> -	const struct soc_camera_device *icd)
> -{
> -	return icd->sdesc;
> -}
> -
> -static inline struct device *to_soc_camera_control(
> -	const struct soc_camera_device *icd)
> -{
> -	return icd->control;
> -}
> -
> -static inline struct v4l2_subdev *soc_camera_to_subdev(
> -	const struct soc_camera_device *icd)
> -{
> -	struct device *control = to_soc_camera_control(icd);
> -	return dev_get_drvdata(control);
> -}
> -
> -int soc_camera_host_register(struct soc_camera_host *ici);
> -void soc_camera_host_unregister(struct soc_camera_host *ici);
> -
> -const struct soc_camera_format_xlate *soc_camera_xlate_by_fourcc(
> -	struct soc_camera_device *icd, unsigned int fourcc);
> -
> -/**
> - * struct soc_camera_format_xlate - match between host and sensor formats
> - * @code: code of a sensor provided format
> - * @host_fmt: host format after host translation from code
> - *
> - * Host and sensor translation structure. Used in table of host and sensor
> - * formats matchings in soc_camera_device. A host can override the generic list
> - * generation by implementing get_formats(), and use it for format checks and
> - * format setup.
> - */
> -struct soc_camera_format_xlate {
> -	u32 code;
> -	const struct soc_mbus_pixelfmt *host_fmt;
> -};
> -
> -#define SOCAM_SENSE_PCLK_CHANGED	(1 << 0)
> -
> -/**
> - * This struct can be attached to struct soc_camera_device by the host driver
> - * to request sense from the camera, for example, when calling .set_fmt(). The
> - * host then can check which flags are set and verify respective values if any.
> - * For example, if SOCAM_SENSE_PCLK_CHANGED is set, it means, pixclock has
> - * changed during this operation. After completion the host should detach sense.
> - *
> - * @flags		ored SOCAM_SENSE_* flags
> - * @master_clock	if the host wants to be informed about pixel-clock
> - *			change, it better set master_clock.
> - * @pixel_clock_max	maximum pixel clock frequency supported by the host,
> - *			camera is not allowed to exceed this.
> - * @pixel_clock		if the camera driver changed pixel clock during this
> - *			operation, it sets SOCAM_SENSE_PCLK_CHANGED, uses
> - *			master_clock to calculate the new pixel-clock and
> - *			sets this field.
> - */
> -struct soc_camera_sense {
> -	unsigned long flags;
> -	unsigned long master_clock;
> -	unsigned long pixel_clock_max;
> -	unsigned long pixel_clock;
>  };
>  
>  #define SOCAM_DATAWIDTH(x)	BIT((x) - 1)
> -#define SOCAM_DATAWIDTH_4	SOCAM_DATAWIDTH(4)
>  #define SOCAM_DATAWIDTH_8	SOCAM_DATAWIDTH(8)
> -#define SOCAM_DATAWIDTH_9	SOCAM_DATAWIDTH(9)
>  #define SOCAM_DATAWIDTH_10	SOCAM_DATAWIDTH(10)
> -#define SOCAM_DATAWIDTH_12	SOCAM_DATAWIDTH(12)
> -#define SOCAM_DATAWIDTH_15	SOCAM_DATAWIDTH(15)
> -#define SOCAM_DATAWIDTH_16	SOCAM_DATAWIDTH(16)
> -#define SOCAM_DATAWIDTH_18	SOCAM_DATAWIDTH(18)
> -#define SOCAM_DATAWIDTH_24	SOCAM_DATAWIDTH(24)
> -
> -#define SOCAM_DATAWIDTH_MASK (SOCAM_DATAWIDTH_4 | SOCAM_DATAWIDTH_8 | \
> -			      SOCAM_DATAWIDTH_9 | SOCAM_DATAWIDTH_10 | \
> -			      SOCAM_DATAWIDTH_12 | SOCAM_DATAWIDTH_15 | \
> -			      SOCAM_DATAWIDTH_16 | SOCAM_DATAWIDTH_18 | \
> -			      SOCAM_DATAWIDTH_24)
> -
> -static inline void soc_camera_limit_side(int *start, int *length,
> -		unsigned int start_min,
> -		unsigned int length_min, unsigned int length_max)
> -{
> -	if (*length < length_min)
> -		*length = length_min;
> -	else if (*length > length_max)
> -		*length = length_max;
> -
> -	if (*start < start_min)
> -		*start = start_min;
> -	else if (*start > start_min + length_max - *length)
> -		*start = start_min + length_max - *length;
> -}
> -
> -unsigned long soc_camera_apply_board_flags(struct soc_camera_subdev_desc *ssdd,
> -					   const struct v4l2_mbus_config *cfg);
> -
> -int soc_camera_power_init(struct device *dev, struct soc_camera_subdev_desc *ssdd);
> -int soc_camera_power_on(struct device *dev, struct soc_camera_subdev_desc *ssdd,
> -			struct v4l2_clk *clk);
> -int soc_camera_power_off(struct device *dev, struct soc_camera_subdev_desc *ssdd,
> -			 struct v4l2_clk *clk);
> -
> -static inline int soc_camera_set_power(struct device *dev,
> -		struct soc_camera_subdev_desc *ssdd, struct v4l2_clk *clk, bool on)
> -{
> -	return on ? soc_camera_power_on(dev, ssdd, clk)
> -		  : soc_camera_power_off(dev, ssdd, clk);
> -}
> -
> -/* This is only temporary here - until v4l2-subdev begins to link to video_device */
> -#include <linux/i2c.h>
> -static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client)
> -{
> -	struct v4l2_subdev *sd = i2c_get_clientdata(client);
> -	struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
> -	return icd ? icd->vdev : NULL;
> -}
> -
> -static inline struct soc_camera_subdev_desc *soc_camera_i2c_to_desc(const struct i2c_client *client)
> -{
> -	return client->dev.platform_data;
> -}
> -
> -static inline struct v4l2_subdev *soc_camera_vdev_to_subdev(struct video_device *vdev)
> -{
> -	struct soc_camera_device *icd = video_get_drvdata(vdev);
> -	return soc_camera_to_subdev(icd);
> -}
> -
> -static inline struct soc_camera_device *soc_camera_from_vb2q(const struct vb2_queue *vq)
> -{
> -	return container_of(vq, struct soc_camera_device, vb2_vidq);
> -}
> -
> -static inline u32 soc_camera_grp_id(const struct soc_camera_device *icd)
> -{
> -	return (icd->iface << 8) | (icd->devnum + 1);
> -}
> -
> -void soc_camera_lock(struct vb2_queue *vq);
> -void soc_camera_unlock(struct vb2_queue *vq);
>  
>  #endif


Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 12:06     ` Mauro Carvalho Chehab
@ 2018-10-30 12:09       ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30 12:09 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab, jacopo mondi

Em Tue, 30 Oct 2018 09:06:08 -0300
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> escreveu:

> Em Tue, 30 Oct 2018 06:43:41 -0300
> Mauro Carvalho Chehab <mchehab+samsung@kernel.org> escreveu:

Please ignore this e-mail. I'm experiencing some e-mail troubles today.

Will resend it properly.

Regards,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30  9:43   ` Mauro Carvalho Chehab
  2018-10-30 12:06     ` Mauro Carvalho Chehab
@ 2018-10-30 12:14     ` Mauro Carvalho Chehab
  2018-10-30 20:28       ` jacopo mondi
  1 sibling, 1 reply; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30 12:14 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab, jacopo mondi

Em Tue, 30 Oct 2018 01:21:34 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> The SoC camera framework has been obsolete for some time and it is no
> longer functional. A few drivers have been converted to the V4L2
> sub-device API but for the rest the conversion has not taken place yet.
> 
> In order to keep the tree clean and to avoid keep maintaining
> non-functional and obsolete code, remove the SoC camera framework as well
> as the drivers that depend on it.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> Resending, this time with git format-patch -D .
> 
>  MAINTAINERS                                        |    8 -
>  drivers/media/i2c/Kconfig                          |    8 -
>  drivers/media/i2c/Makefile                         |    1 -
>  drivers/media/i2c/soc_camera/Kconfig               |   66 -
>  drivers/media/i2c/soc_camera/Makefile              |   10 -
>  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
>  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
>  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
>  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
>  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
>  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
>  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
>  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
>  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
>  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------  

I don't see why we should remove those. I mean, Jacopo is
actually converting those drivers to not depend on soc_camera,
and it is a way better to review those patches with the old
code in place.

So, at least while Jacopo is keep doing this work, I would keep
at Kernel tree, as it helps to see a diff when the driver changes
when getting rid of soc_camera dependencies.

So, IMO, the best would be to move those to /staging, eventually
depending on BROKEN.

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 12:14     ` Mauro Carvalho Chehab
@ 2018-10-30 20:28       ` jacopo mondi
  2018-10-30 20:35         ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 27+ messages in thread
From: jacopo mondi @ 2018-10-30 20:28 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Sakari Ailus, linux-media, hverkuil, mchehab

[-- Attachment #1: Type: text/plain, Size: 3954 bytes --]

Hi Mauro,

On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:
> Em Tue, 30 Oct 2018 01:21:34 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
>
> > The SoC camera framework has been obsolete for some time and it is no
> > longer functional. A few drivers have been converted to the V4L2
> > sub-device API but for the rest the conversion has not taken place yet.
> >
> > In order to keep the tree clean and to avoid keep maintaining
> > non-functional and obsolete code, remove the SoC camera framework as well
> > as the drivers that depend on it.
> >
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> > Resending, this time with git format-patch -D .
> >
> >  MAINTAINERS                                        |    8 -
> >  drivers/media/i2c/Kconfig                          |    8 -
> >  drivers/media/i2c/Makefile                         |    1 -
> >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------
>
> I don't see why we should remove those. I mean, Jacopo is
> actually converting those drivers to not depend on soc_camera,
> and it is a way better to review those patches with the old
> code in place.

I have converted a few drivers used by some SH boards where I dropped
dependencies on soc_camera, not to remove camera support from those. For
others I don't have cameras to test with, nor I know about boards in
mainline using them.

From my side, driver conversion is done.

>
> So, at least while Jacopo is keep doing this work, I would keep
> at Kernel tree, as it helps to see a diff when the driver changes
> when getting rid of soc_camera dependencies.
>
> So, IMO, the best would be to move those to /staging, eventually
> depending on BROKEN.

However, somebody with a (rather old) development setup using those camera
sensor may wants to see if mainline supports them. We actually had a
few patches coming lately (for ov. I understand Sakari's argument that those
could be retrieved from git history, but a few people will notice imo.
I also understand the additional maintainership burden of keeping them
around, so I'm fine with either ways ;)

This is a list of the current situation in mainline, to have a better
idea:

$for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
t9m001.c
drivers/media/i2c/soc_camera/mt9m001.c
mt9t112.c
drivers/media/i2c/mt9t112.c
drivers/media/i2c/soc_camera/mt9t112.c
mt9v022.c
drivers/media/i2c/soc_camera/mt9v022.c
ov5642.c
drivers/media/i2c/soc_camera/ov5642.c
ov772x.c
drivers/media/i2c/ov772x.c
drivers/media/i2c/soc_camera/ov772x.c
ov9640.c
drivers/media/i2c/soc_camera/ov9640.c
ov9740.c
drivers/media/i2c/soc_camera/ov9740.c
rj54n1cb0c.c
drivers/media/i2c/rj54n1cb0c.c
drivers/media/i2c/soc_camera/rj54n1cb0c.c
tw9910.c
drivers/media/i2c/tw9910.c
drivers/media/i2c/soc_camera/tw9910.c

So it seems to me only the following sensor do not have a
non-soc_camera driver at the moment:

mt9m001.c
mt9v022.c
ov5642.c
ov9640.c
ov9740.c

Thanks
   j

>
> Thanks,
> Mauro

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 20:28       ` jacopo mondi
@ 2018-10-30 20:35         ` Mauro Carvalho Chehab
  2018-10-30 21:17           ` jacopo mondi
  2018-10-31  9:32           ` Sakari Ailus
  0 siblings, 2 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-30 20:35 UTC (permalink / raw)
  To: jacopo mondi; +Cc: Sakari Ailus, linux-media, hverkuil, mchehab

Em Tue, 30 Oct 2018 21:28:57 +0100
jacopo mondi <jacopo@jmondi.org> escreveu:

> Hi Mauro,
> 
> On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:
> > Em Tue, 30 Oct 2018 01:21:34 +0200
> > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> >  
> > > The SoC camera framework has been obsolete for some time and it is no
> > > longer functional. A few drivers have been converted to the V4L2
> > > sub-device API but for the rest the conversion has not taken place yet.
> > >
> > > In order to keep the tree clean and to avoid keep maintaining
> > > non-functional and obsolete code, remove the SoC camera framework as well
> > > as the drivers that depend on it.
> > >
> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > > Resending, this time with git format-patch -D .
> > >
> > >  MAINTAINERS                                        |    8 -
> > >  drivers/media/i2c/Kconfig                          |    8 -
> > >  drivers/media/i2c/Makefile                         |    1 -
> > >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> > >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> > >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> > >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> > >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> > >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> > >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> > >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> > >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> > >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> > >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> > >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------  
> >
> > I don't see why we should remove those. I mean, Jacopo is
> > actually converting those drivers to not depend on soc_camera,
> > and it is a way better to review those patches with the old
> > code in place.  
> 
> I have converted a few drivers used by some SH boards where I dropped
> dependencies on soc_camera, not to remove camera support from those. For
> others I don't have cameras to test with, nor I know about boards in
> mainline using them.
> 
> From my side, driver conversion is done.
> 
> >
> > So, at least while Jacopo is keep doing this work, I would keep
> > at Kernel tree, as it helps to see a diff when the driver changes
> > when getting rid of soc_camera dependencies.
> >
> > So, IMO, the best would be to move those to /staging, eventually
> > depending on BROKEN.  
> 
> However, somebody with a (rather old) development setup using those camera
> sensor may wants to see if mainline supports them. We actually had a
> few patches coming lately (for ov. I understand Sakari's argument that those
> could be retrieved from git history, but a few people will notice imo.
> I also understand the additional maintainership burden of keeping them
> around, so I'm fine with either ways ;)
> 
> This is a list of the current situation in mainline, to have a better
> idea:
> 
> $for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
> t9m001.c
> drivers/media/i2c/soc_camera/mt9m001.c
> mt9t112.c
> drivers/media/i2c/mt9t112.c
> drivers/media/i2c/soc_camera/mt9t112.c
> mt9v022.c
> drivers/media/i2c/soc_camera/mt9v022.c
> ov5642.c
> drivers/media/i2c/soc_camera/ov5642.c
> ov772x.c
> drivers/media/i2c/ov772x.c
> drivers/media/i2c/soc_camera/ov772x.c
> ov9640.c
> drivers/media/i2c/soc_camera/ov9640.c
> ov9740.c
> drivers/media/i2c/soc_camera/ov9740.c
> rj54n1cb0c.c
> drivers/media/i2c/rj54n1cb0c.c
> drivers/media/i2c/soc_camera/rj54n1cb0c.c
> tw9910.c
> drivers/media/i2c/tw9910.c
> drivers/media/i2c/soc_camera/tw9910.c
> 
> So it seems to me only the following sensor do not have a
> non-soc_camera driver at the moment:
> 
> mt9m001.c
> mt9v022.c
> ov5642.c
> ov9640.c
> ov9740.c

Ok. So, what about keeping just those 5 drivers at staging? If, after an
year, people won't do conversions, we can just drop them.

In any case, if we're ripping off soc_camera from the main tree,
moving to staging, no dependencies for soc_camera.h should be
kept at main tree. If any driver requires it, it should also be
moved to staging.

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 20:35         ` Mauro Carvalho Chehab
@ 2018-10-30 21:17           ` jacopo mondi
  2018-10-31  9:12             ` Hans Verkuil
  2018-10-31  9:32           ` Sakari Ailus
  1 sibling, 1 reply; 27+ messages in thread
From: jacopo mondi @ 2018-10-30 21:17 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Sakari Ailus, linux-media, hverkuil, mchehab

[-- Attachment #1: Type: text/plain, Size: 5006 bytes --]

On Tue, Oct 30, 2018 at 05:35:23PM -0300, Mauro Carvalho Chehab wrote:
> Em Tue, 30 Oct 2018 21:28:57 +0100
> jacopo mondi <jacopo@jmondi.org> escreveu:
>
> > Hi Mauro,
> >
> > On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:
> > > Em Tue, 30 Oct 2018 01:21:34 +0200
> > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >
> > > > The SoC camera framework has been obsolete for some time and it is no
> > > > longer functional. A few drivers have been converted to the V4L2
> > > > sub-device API but for the rest the conversion has not taken place yet.
> > > >
> > > > In order to keep the tree clean and to avoid keep maintaining
> > > > non-functional and obsolete code, remove the SoC camera framework as well
> > > > as the drivers that depend on it.
> > > >
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > > Resending, this time with git format-patch -D .
> > > >
> > > >  MAINTAINERS                                        |    8 -
> > > >  drivers/media/i2c/Kconfig                          |    8 -
> > > >  drivers/media/i2c/Makefile                         |    1 -
> > > >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> > > >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> > > >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> > > >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> > > >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> > > >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> > > >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> > > >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> > > >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> > > >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> > > >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> > > >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------
> > >
> > > I don't see why we should remove those. I mean, Jacopo is
> > > actually converting those drivers to not depend on soc_camera,
> > > and it is a way better to review those patches with the old
> > > code in place.
> >
> > I have converted a few drivers used by some SH boards where I dropped
> > dependencies on soc_camera, not to remove camera support from those. For
> > others I don't have cameras to test with, nor I know about boards in
> > mainline using them.
> >
> > From my side, driver conversion is done.
> >
> > >
> > > So, at least while Jacopo is keep doing this work, I would keep
> > > at Kernel tree, as it helps to see a diff when the driver changes
> > > when getting rid of soc_camera dependencies.
> > >
> > > So, IMO, the best would be to move those to /staging, eventually
> > > depending on BROKEN.
> >
> > However, somebody with a (rather old) development setup using those camera
> > sensor may wants to see if mainline supports them. We actually had a
> > few patches coming lately (for ov. I understand Sakari's argument that those
> > could be retrieved from git history, but a few people will notice imo.
> > I also understand the additional maintainership burden of keeping them
> > around, so I'm fine with either ways ;)
> >
> > This is a list of the current situation in mainline, to have a better
> > idea:
> >
> > $for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
> > t9m001.c
> > drivers/media/i2c/soc_camera/mt9m001.c
> > mt9t112.c
> > drivers/media/i2c/mt9t112.c
> > drivers/media/i2c/soc_camera/mt9t112.c
> > mt9v022.c
> > drivers/media/i2c/soc_camera/mt9v022.c
> > ov5642.c
> > drivers/media/i2c/soc_camera/ov5642.c
> > ov772x.c
> > drivers/media/i2c/ov772x.c
> > drivers/media/i2c/soc_camera/ov772x.c
> > ov9640.c
> > drivers/media/i2c/soc_camera/ov9640.c
> > ov9740.c
> > drivers/media/i2c/soc_camera/ov9740.c
> > rj54n1cb0c.c
> > drivers/media/i2c/rj54n1cb0c.c
> > drivers/media/i2c/soc_camera/rj54n1cb0c.c
> > tw9910.c
> > drivers/media/i2c/tw9910.c
> > drivers/media/i2c/soc_camera/tw9910.c
> >
> > So it seems to me only the following sensor do not have a
> > non-soc_camera driver at the moment:
> >
> > mt9m001.c
> > mt9v022.c
> > ov5642.c
> > ov9640.c
> > ov9740.c

For a few of them (mt9m001, ov5642) there are cheap modules available
online. The others ones have public documentation. I know they are old
and dusty, supporting only parallel video interface.

>
> Ok. So, what about keeping just those 5 drivers at staging? If, after an
> year, people won't do conversions, we can just drop them.
>

Let's see what Sakari and Hans think. Again, I'm fine with both ways
;)

Thanks
   j

> In any case, if we're ripping off soc_camera from the main tree,
> moving to staging, no dependencies for soc_camera.h should be
> kept at main tree. If any driver requires it, it should also be
> moved to staging.
>
> Thanks,
> Mauro

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 21:17           ` jacopo mondi
@ 2018-10-31  9:12             ` Hans Verkuil
  0 siblings, 0 replies; 27+ messages in thread
From: Hans Verkuil @ 2018-10-31  9:12 UTC (permalink / raw)
  To: jacopo mondi, Mauro Carvalho Chehab; +Cc: Sakari Ailus, linux-media, mchehab

On 10/30/2018 10:17 PM, jacopo mondi wrote:
> On Tue, Oct 30, 2018 at 05:35:23PM -0300, Mauro Carvalho Chehab wrote:
>> Em Tue, 30 Oct 2018 21:28:57 +0100
>> jacopo mondi <jacopo@jmondi.org> escreveu:
>>
>>> Hi Mauro,
>>>
>>> On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:
>>>> Em Tue, 30 Oct 2018 01:21:34 +0200
>>>> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
>>>>
>>>>> The SoC camera framework has been obsolete for some time and it is no
>>>>> longer functional. A few drivers have been converted to the V4L2
>>>>> sub-device API but for the rest the conversion has not taken place yet.
>>>>>
>>>>> In order to keep the tree clean and to avoid keep maintaining
>>>>> non-functional and obsolete code, remove the SoC camera framework as well
>>>>> as the drivers that depend on it.
>>>>>
>>>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>>>>> ---
>>>>> Resending, this time with git format-patch -D .
>>>>>
>>>>>  MAINTAINERS                                        |    8 -
>>>>>  drivers/media/i2c/Kconfig                          |    8 -
>>>>>  drivers/media/i2c/Makefile                         |    1 -
>>>>>  drivers/media/i2c/soc_camera/Kconfig               |   66 -
>>>>>  drivers/media/i2c/soc_camera/Makefile              |   10 -
>>>>>  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
>>>>>  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
>>>>>  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
>>>>>  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
>>>>>  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
>>>>>  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
>>>>>  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
>>>>>  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
>>>>>  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
>>>>>  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------
>>>>
>>>> I don't see why we should remove those. I mean, Jacopo is
>>>> actually converting those drivers to not depend on soc_camera,
>>>> and it is a way better to review those patches with the old
>>>> code in place.
>>>
>>> I have converted a few drivers used by some SH boards where I dropped
>>> dependencies on soc_camera, not to remove camera support from those. For
>>> others I don't have cameras to test with, nor I know about boards in
>>> mainline using them.
>>>
>>> From my side, driver conversion is done.
>>>
>>>>
>>>> So, at least while Jacopo is keep doing this work, I would keep
>>>> at Kernel tree, as it helps to see a diff when the driver changes
>>>> when getting rid of soc_camera dependencies.
>>>>
>>>> So, IMO, the best would be to move those to /staging, eventually
>>>> depending on BROKEN.
>>>
>>> However, somebody with a (rather old) development setup using those camera
>>> sensor may wants to see if mainline supports them. We actually had a
>>> few patches coming lately (for ov. I understand Sakari's argument that those
>>> could be retrieved from git history, but a few people will notice imo.
>>> I also understand the additional maintainership burden of keeping them
>>> around, so I'm fine with either ways ;)
>>>
>>> This is a list of the current situation in mainline, to have a better
>>> idea:
>>>
>>> $for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
>>> t9m001.c
>>> drivers/media/i2c/soc_camera/mt9m001.c
>>> mt9t112.c
>>> drivers/media/i2c/mt9t112.c
>>> drivers/media/i2c/soc_camera/mt9t112.c
>>> mt9v022.c
>>> drivers/media/i2c/soc_camera/mt9v022.c
>>> ov5642.c
>>> drivers/media/i2c/soc_camera/ov5642.c
>>> ov772x.c
>>> drivers/media/i2c/ov772x.c
>>> drivers/media/i2c/soc_camera/ov772x.c
>>> ov9640.c
>>> drivers/media/i2c/soc_camera/ov9640.c
>>> ov9740.c
>>> drivers/media/i2c/soc_camera/ov9740.c
>>> rj54n1cb0c.c
>>> drivers/media/i2c/rj54n1cb0c.c
>>> drivers/media/i2c/soc_camera/rj54n1cb0c.c
>>> tw9910.c
>>> drivers/media/i2c/tw9910.c
>>> drivers/media/i2c/soc_camera/tw9910.c
>>>
>>> So it seems to me only the following sensor do not have a
>>> non-soc_camera driver at the moment:
>>>
>>> mt9m001.c
>>> mt9v022.c
>>> ov5642.c
>>> ov9640.c
>>> ov9740.c
> 
> For a few of them (mt9m001, ov5642) there are cheap modules available
> online. The others ones have public documentation. I know they are old
> and dusty, supporting only parallel video interface.
> 
>>
>> Ok. So, what about keeping just those 5 drivers at staging? If, after an
>> year, people won't do conversions, we can just drop them.
>>
> 
> Let's see what Sakari and Hans think. Again, I'm fine with both ways
> ;)

My preference is to just remove them. But moving them to staging under
CONFIG_BROKEN for a year is OK with me, but frankly I don't see the point.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-30 12:06   ` Mauro Carvalho Chehab
@ 2018-10-31  9:29     ` Sakari Ailus
  2018-10-31  9:40       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2018-10-31  9:29 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media, hverkuil, mchehab

Hi Mauro,

On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:
> Em Tue, 30 Oct 2018 01:00:29 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
> > Clean up the SoC camera framework header. It only exists now to keep board
> > code compiling. The header can be removed once the board code dependencies
> > to it has been removed.
> > 
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  include/media/soc_camera.h | 335 ---------------------------------------------
> >  1 file changed, 335 deletions(-)
> > 
> > diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> > index b7e42a1b0910..14d19da6052a 100644
> > --- a/include/media/soc_camera.h
> > +++ b/include/media/soc_camera.h
> > @@ -22,172 +22,6 @@
> >  #include <media/v4l2-ctrls.h>
> >  #include <media/v4l2-device.h>
> 
> That doesn't make any sense. soc_camera.h should have the same fate
> as the entire soc_camera infrastructure: either be removed or moved
> to staging, and everything else that doesn't have the same fate
> should get rid of this header.

We can't just remove this; there is board code that depends on it.

The intent is to remove the board code as well but presuming that the board
code would be merged through a different tree, it'd be less hassle to wait
a bit; hence the patch removing any unnecessary stuff here.

-- 
Regards,

Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-30 20:35         ` Mauro Carvalho Chehab
  2018-10-30 21:17           ` jacopo mondi
@ 2018-10-31  9:32           ` Sakari Ailus
  2018-10-31 10:04             ` Mauro Carvalho Chehab
  1 sibling, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2018-10-31  9:32 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: jacopo mondi, linux-media, hverkuil, mchehab

Hi Mauro,

On Tue, Oct 30, 2018 at 05:35:23PM -0300, Mauro Carvalho Chehab wrote:
> Em Tue, 30 Oct 2018 21:28:57 +0100
> jacopo mondi <jacopo@jmondi.org> escreveu:
> 
> > Hi Mauro,
> > 
> > On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:
> > > Em Tue, 30 Oct 2018 01:21:34 +0200
> > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >  
> > > > The SoC camera framework has been obsolete for some time and it is no
> > > > longer functional. A few drivers have been converted to the V4L2
> > > > sub-device API but for the rest the conversion has not taken place yet.
> > > >
> > > > In order to keep the tree clean and to avoid keep maintaining
> > > > non-functional and obsolete code, remove the SoC camera framework as well
> > > > as the drivers that depend on it.
> > > >
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > > Resending, this time with git format-patch -D .
> > > >
> > > >  MAINTAINERS                                        |    8 -
> > > >  drivers/media/i2c/Kconfig                          |    8 -
> > > >  drivers/media/i2c/Makefile                         |    1 -
> > > >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> > > >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> > > >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> > > >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> > > >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> > > >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> > > >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> > > >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> > > >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> > > >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> > > >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> > > >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------  
> > >
> > > I don't see why we should remove those. I mean, Jacopo is
> > > actually converting those drivers to not depend on soc_camera,
> > > and it is a way better to review those patches with the old
> > > code in place.  
> > 
> > I have converted a few drivers used by some SH boards where I dropped
> > dependencies on soc_camera, not to remove camera support from those. For
> > others I don't have cameras to test with, nor I know about boards in
> > mainline using them.
> > 
> > From my side, driver conversion is done.
> > 
> > >
> > > So, at least while Jacopo is keep doing this work, I would keep
> > > at Kernel tree, as it helps to see a diff when the driver changes
> > > when getting rid of soc_camera dependencies.
> > >
> > > So, IMO, the best would be to move those to /staging, eventually
> > > depending on BROKEN.  
> > 
> > However, somebody with a (rather old) development setup using those camera
> > sensor may wants to see if mainline supports them. We actually had a
> > few patches coming lately (for ov. I understand Sakari's argument that those
> > could be retrieved from git history, but a few people will notice imo.
> > I also understand the additional maintainership burden of keeping them
> > around, so I'm fine with either ways ;)
> > 
> > This is a list of the current situation in mainline, to have a better
> > idea:
> > 
> > $for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
> > t9m001.c
> > drivers/media/i2c/soc_camera/mt9m001.c
> > mt9t112.c
> > drivers/media/i2c/mt9t112.c
> > drivers/media/i2c/soc_camera/mt9t112.c
> > mt9v022.c
> > drivers/media/i2c/soc_camera/mt9v022.c
> > ov5642.c
> > drivers/media/i2c/soc_camera/ov5642.c
> > ov772x.c
> > drivers/media/i2c/ov772x.c
> > drivers/media/i2c/soc_camera/ov772x.c
> > ov9640.c
> > drivers/media/i2c/soc_camera/ov9640.c
> > ov9740.c
> > drivers/media/i2c/soc_camera/ov9740.c
> > rj54n1cb0c.c
> > drivers/media/i2c/rj54n1cb0c.c
> > drivers/media/i2c/soc_camera/rj54n1cb0c.c
> > tw9910.c
> > drivers/media/i2c/tw9910.c
> > drivers/media/i2c/soc_camera/tw9910.c
> > 
> > So it seems to me only the following sensor do not have a
> > non-soc_camera driver at the moment:
> > 
> > mt9m001.c
> > mt9v022.c
> > ov5642.c
> > ov9640.c
> > ov9740.c
> 
> Ok. So, what about keeping just those 5 drivers at staging? If, after an
> year, people won't do conversions, we can just drop them.

They've been there for years without anyone converting them. Do note that
the conversion can be still done once the code is removed.

We did the same for a big bunch of sensor drivers that came with the
atomisp2 driver. I don't see a difference here.

-- 
Kind regards,

Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31  9:29     ` Sakari Ailus
@ 2018-10-31  9:40       ` Mauro Carvalho Chehab
  2018-10-31  9:44         ` Sakari Ailus
                           ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-31  9:40 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil, mchehab

Em Wed, 31 Oct 2018 11:29:45 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Hi Mauro,
> 
> On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:
> > Em Tue, 30 Oct 2018 01:00:29 +0200
> > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> >   
> > > Clean up the SoC camera framework header. It only exists now to keep board
> > > code compiling. The header can be removed once the board code dependencies
> > > to it has been removed.
> > > 
> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > >  include/media/soc_camera.h | 335 ---------------------------------------------
> > >  1 file changed, 335 deletions(-)
> > > 
> > > diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> > > index b7e42a1b0910..14d19da6052a 100644
> > > --- a/include/media/soc_camera.h
> > > +++ b/include/media/soc_camera.h
> > > @@ -22,172 +22,6 @@
> > >  #include <media/v4l2-ctrls.h>
> > >  #include <media/v4l2-device.h>  
> > 
> > That doesn't make any sense. soc_camera.h should have the same fate
> > as the entire soc_camera infrastructure: either be removed or moved
> > to staging, and everything else that doesn't have the same fate
> > should get rid of this header.  
> 
> We can't just remove this; there is board code that depends on it.
> 
> The intent is to remove the board code as well but presuming that the board
> code would be merged through a different tree, it'd be less hassle to wait
> a bit; hence the patch removing any unnecessary stuff here.

Then we need *first* to remove board code, wait for those changes to be
applied and *then* remove soc_camera (and not the opposite).

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31  9:40       ` Mauro Carvalho Chehab
@ 2018-10-31  9:44         ` Sakari Ailus
  2018-10-31  9:57         ` Sakari Ailus
  2018-10-31 10:00         ` Hans Verkuil
  2 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-10-31  9:44 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media, hverkuil, mchehab

On Wed, Oct 31, 2018 at 06:40:30AM -0300, Mauro Carvalho Chehab wrote:
> Em Wed, 31 Oct 2018 11:29:45 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
> > Hi Mauro,
> > 
> > On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:
> > > Em Tue, 30 Oct 2018 01:00:29 +0200
> > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >   
> > > > Clean up the SoC camera framework header. It only exists now to keep board
> > > > code compiling. The header can be removed once the board code dependencies
> > > > to it has been removed.
> > > > 
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > >  include/media/soc_camera.h | 335 ---------------------------------------------
> > > >  1 file changed, 335 deletions(-)
> > > > 
> > > > diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> > > > index b7e42a1b0910..14d19da6052a 100644
> > > > --- a/include/media/soc_camera.h
> > > > +++ b/include/media/soc_camera.h
> > > > @@ -22,172 +22,6 @@
> > > >  #include <media/v4l2-ctrls.h>
> > > >  #include <media/v4l2-device.h>  
> > > 
> > > That doesn't make any sense. soc_camera.h should have the same fate
> > > as the entire soc_camera infrastructure: either be removed or moved
> > > to staging, and everything else that doesn't have the same fate
> > > should get rid of this header.  
> > 
> > We can't just remove this; there is board code that depends on it.
> > 
> > The intent is to remove the board code as well but presuming that the board
> > code would be merged through a different tree, it'd be less hassle to wait
> > a bit; hence the patch removing any unnecessary stuff here.
> 
> Then we need *first* to remove board code, wait for those changes to be
> applied and *then* remove soc_camera (and not the opposite).

Any reasoning behind that?

It's dead code and there is no dependency between the SoC camera framework
(apart from the header) and the board code.

-- 
Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 2/4] tw9910: No SoC camera dependency
  2018-10-30 12:03   ` Hans Verkuil
@ 2018-10-31  9:49     ` Sakari Ailus
  2018-10-31  9:50       ` Hans Verkuil
  0 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2018-10-31  9:49 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: linux-media, mchehab

On Tue, Oct 30, 2018 at 01:03:18PM +0100, Hans Verkuil wrote:
> On 10/30/2018 12:00 AM, Sakari Ailus wrote:
> > The tw9910 driver does not depend on SoC camera framework. Don't include
> > the header, but instead include media/v4l2-async.h which the driver really
> > needs.
> 
> You might want to make a note of the fact that soc_camera.h includes
> v4l2-async.h, so removing soc_camera.h requires adding v4l2-async.h.
> 
> I couldn't understand how it compiled before without the v4l2-async.h
> header until I saw that soc_camera.h includes it.

Yes. How about this:

Also include i2c/v4l2-async.h in drivers/media/i2c/tw9910.c as it depends
on the header which used to be included through media/soc_camera.h.

-- 
Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 2/4] tw9910: No SoC camera dependency
  2018-10-31  9:49     ` Sakari Ailus
@ 2018-10-31  9:50       ` Hans Verkuil
  0 siblings, 0 replies; 27+ messages in thread
From: Hans Verkuil @ 2018-10-31  9:50 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, mchehab

On 10/31/2018 10:49 AM, Sakari Ailus wrote:
> On Tue, Oct 30, 2018 at 01:03:18PM +0100, Hans Verkuil wrote:
>> On 10/30/2018 12:00 AM, Sakari Ailus wrote:
>>> The tw9910 driver does not depend on SoC camera framework. Don't include
>>> the header, but instead include media/v4l2-async.h which the driver really
>>> needs.
>>
>> You might want to make a note of the fact that soc_camera.h includes
>> v4l2-async.h, so removing soc_camera.h requires adding v4l2-async.h.
>>
>> I couldn't understand how it compiled before without the v4l2-async.h
>> header until I saw that soc_camera.h includes it.
> 
> Yes. How about this:
> 
> Also include i2c/v4l2-async.h in drivers/media/i2c/tw9910.c as it depends
> on the header which used to be included through media/soc_camera.h.
> 

Looks good. With that change:

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>

for the whole series.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31  9:40       ` Mauro Carvalho Chehab
  2018-10-31  9:44         ` Sakari Ailus
@ 2018-10-31  9:57         ` Sakari Ailus
  2018-10-31 10:00         ` Hans Verkuil
  2 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-10-31  9:57 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media, hverkuil, mchehab

On Wed, Oct 31, 2018 at 06:40:30AM -0300, Mauro Carvalho Chehab wrote:
> Em Wed, 31 Oct 2018 11:29:45 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
> > Hi Mauro,
> > 
> > On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:
> > > Em Tue, 30 Oct 2018 01:00:29 +0200
> > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >   
> > > > Clean up the SoC camera framework header. It only exists now to keep board
> > > > code compiling. The header can be removed once the board code dependencies
> > > > to it has been removed.
> > > > 
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > >  include/media/soc_camera.h | 335 ---------------------------------------------
> > > >  1 file changed, 335 deletions(-)
> > > > 
> > > > diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> > > > index b7e42a1b0910..14d19da6052a 100644
> > > > --- a/include/media/soc_camera.h
> > > > +++ b/include/media/soc_camera.h
> > > > @@ -22,172 +22,6 @@
> > > >  #include <media/v4l2-ctrls.h>
> > > >  #include <media/v4l2-device.h>  
> > > 
> > > That doesn't make any sense. soc_camera.h should have the same fate
> > > as the entire soc_camera infrastructure: either be removed or moved
> > > to staging, and everything else that doesn't have the same fate
> > > should get rid of this header.  
> > 
> > We can't just remove this; there is board code that depends on it.
> > 
> > The intent is to remove the board code as well but presuming that the board
> > code would be merged through a different tree, it'd be less hassle to wait
> > a bit; hence the patch removing any unnecessary stuff here.
> 
> Then we need *first* to remove board code, wait for those changes to be
> applied and *then* remove soc_camera (and not the opposite).

I'll post patches to remove the affeced board code soon, too. I have no
objections to merge it through the media tree either, if the maintainers
agree.

-- 
Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31  9:40       ` Mauro Carvalho Chehab
  2018-10-31  9:44         ` Sakari Ailus
  2018-10-31  9:57         ` Sakari Ailus
@ 2018-10-31 10:00         ` Hans Verkuil
  2018-10-31 10:54           ` Mauro Carvalho Chehab
  2 siblings, 1 reply; 27+ messages in thread
From: Hans Verkuil @ 2018-10-31 10:00 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Sakari Ailus; +Cc: linux-media, mchehab

On 10/31/2018 10:40 AM, Mauro Carvalho Chehab wrote:
> Em Wed, 31 Oct 2018 11:29:45 +0200
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
>> Hi Mauro,
>>
>> On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:
>>> Em Tue, 30 Oct 2018 01:00:29 +0200
>>> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
>>>   
>>>> Clean up the SoC camera framework header. It only exists now to keep board
>>>> code compiling. The header can be removed once the board code dependencies
>>>> to it has been removed.
>>>>
>>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>>>> ---
>>>>  include/media/soc_camera.h | 335 ---------------------------------------------
>>>>  1 file changed, 335 deletions(-)
>>>>
>>>> diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
>>>> index b7e42a1b0910..14d19da6052a 100644
>>>> --- a/include/media/soc_camera.h
>>>> +++ b/include/media/soc_camera.h
>>>> @@ -22,172 +22,6 @@
>>>>  #include <media/v4l2-ctrls.h>
>>>>  #include <media/v4l2-device.h>  
>>>
>>> That doesn't make any sense. soc_camera.h should have the same fate
>>> as the entire soc_camera infrastructure: either be removed or moved
>>> to staging, and everything else that doesn't have the same fate
>>> should get rid of this header.  
>>
>> We can't just remove this; there is board code that depends on it.
>>
>> The intent is to remove the board code as well but presuming that the board
>> code would be merged through a different tree, it'd be less hassle to wait
>> a bit; hence the patch removing any unnecessary stuff here.
> 
> Then we need *first* to remove board code, wait for those changes to be
> applied and *then* remove soc_camera (and not the opposite).

Please note that the camera support for all the remaining boards using
soc_camera has been dead for years. The soc_camera drivers that they depended
on have been removed a long time ago.

So all they depend on are the header. We can safely remove soc_camera without
loss of functionality (and thus prevent others from basing new drivers on
soc_camera), while we work to update the board files so we can remove this last
header.

I have modified some board files here:

https://git.linuxtv.org/hverkuil/media_tree.git/commit/?h=rm-soc-camera&id=d7ae2fcf6e447022f0780bb86a2b63d5c7cf4d35

Only arch/arm/mach-imx/mach-imx27_visstrim_m10.c hasn't been fixed yet in that
patch (ENOTIME).

The problem is just lack of time to clean this up and figure out who should
take these board patches.

So I think it is a nice solution to just replace the header with a dummy version
so the board files still compile, and then we can delete the dead soc_camera
driver. It's probably easier as well to push through the board file changes once
soc_camera is removed since you can just point out that the framework it depended
on is gone.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 3/4] SoC camera: Remove the framework and the drivers
  2018-10-31  9:32           ` Sakari Ailus
@ 2018-10-31 10:04             ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-31 10:04 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: jacopo mondi, linux-media, hverkuil

Em Wed, 31 Oct 2018 11:32:02 +0200
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Hi Mauro,
> 
> On Tue, Oct 30, 2018 at 05:35:23PM -0300, Mauro Carvalho Chehab wrote:
> > Em Tue, 30 Oct 2018 21:28:57 +0100
> > jacopo mondi <jacopo@jmondi.org> escreveu:
> >   
> > > Hi Mauro,
> > > 
> > > On Tue, Oct 30, 2018 at 09:14:09AM -0300, Mauro Carvalho Chehab wrote:  
> > > > Em Tue, 30 Oct 2018 01:21:34 +0200
> > > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > > >    
> > > > > The SoC camera framework has been obsolete for some time and it is no
> > > > > longer functional. A few drivers have been converted to the V4L2
> > > > > sub-device API but for the rest the conversion has not taken place yet.
> > > > >
> > > > > In order to keep the tree clean and to avoid keep maintaining
> > > > > non-functional and obsolete code, remove the SoC camera framework as well
> > > > > as the drivers that depend on it.
> > > > >
> > > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > > ---
> > > > > Resending, this time with git format-patch -D .
> > > > >
> > > > >  MAINTAINERS                                        |    8 -
> > > > >  drivers/media/i2c/Kconfig                          |    8 -
> > > > >  drivers/media/i2c/Makefile                         |    1 -
> > > > >  drivers/media/i2c/soc_camera/Kconfig               |   66 -
> > > > >  drivers/media/i2c/soc_camera/Makefile              |   10 -
> > > > >  drivers/media/i2c/soc_camera/ov9640.h              |  208 --
> > > > >  drivers/media/i2c/soc_camera/soc_mt9m001.c         |  757 -------
> > > > >  drivers/media/i2c/soc_camera/soc_mt9t112.c         | 1157 -----------
> > > > >  drivers/media/i2c/soc_camera/soc_mt9v022.c         | 1012 ---------
> > > > >  drivers/media/i2c/soc_camera/soc_ov5642.c          | 1087 ----------
> > > > >  drivers/media/i2c/soc_camera/soc_ov772x.c          | 1123 ----------
> > > > >  drivers/media/i2c/soc_camera/soc_ov9640.c          |  738 -------
> > > > >  drivers/media/i2c/soc_camera/soc_ov9740.c          |  996 ---------
> > > > >  drivers/media/i2c/soc_camera/soc_rj54n1cb0c.c      | 1415 -------------
> > > > >  drivers/media/i2c/soc_camera/soc_tw9910.c          |  999 ---------    
> > > >
> > > > I don't see why we should remove those. I mean, Jacopo is
> > > > actually converting those drivers to not depend on soc_camera,
> > > > and it is a way better to review those patches with the old
> > > > code in place.    
> > > 
> > > I have converted a few drivers used by some SH boards where I dropped
> > > dependencies on soc_camera, not to remove camera support from those. For
> > > others I don't have cameras to test with, nor I know about boards in
> > > mainline using them.
> > > 
> > > From my side, driver conversion is done.
> > >   
> > > >
> > > > So, at least while Jacopo is keep doing this work, I would keep
> > > > at Kernel tree, as it helps to see a diff when the driver changes
> > > > when getting rid of soc_camera dependencies.
> > > >
> > > > So, IMO, the best would be to move those to /staging, eventually
> > > > depending on BROKEN.    
> > > 
> > > However, somebody with a (rather old) development setup using those camera
> > > sensor may wants to see if mainline supports them. We actually had a
> > > few patches coming lately (for ov. I understand Sakari's argument that those
> > > could be retrieved from git history, but a few people will notice imo.
> > > I also understand the additional maintainership burden of keeping them
> > > around, so I'm fine with either ways ;)
> > > 
> > > This is a list of the current situation in mainline, to have a better
> > > idea:
> > > 
> > > $for i in `seq 1 9`; do CAM=$(head -n $i /tmp/soc_cams | tail -n 1); echo  $CAM; find drivers/media/ -name  $CAM; done
> > > t9m001.c
> > > drivers/media/i2c/soc_camera/mt9m001.c
> > > mt9t112.c
> > > drivers/media/i2c/mt9t112.c
> > > drivers/media/i2c/soc_camera/mt9t112.c
> > > mt9v022.c
> > > drivers/media/i2c/soc_camera/mt9v022.c
> > > ov5642.c
> > > drivers/media/i2c/soc_camera/ov5642.c
> > > ov772x.c
> > > drivers/media/i2c/ov772x.c
> > > drivers/media/i2c/soc_camera/ov772x.c
> > > ov9640.c
> > > drivers/media/i2c/soc_camera/ov9640.c
> > > ov9740.c
> > > drivers/media/i2c/soc_camera/ov9740.c
> > > rj54n1cb0c.c
> > > drivers/media/i2c/rj54n1cb0c.c
> > > drivers/media/i2c/soc_camera/rj54n1cb0c.c
> > > tw9910.c
> > > drivers/media/i2c/tw9910.c
> > > drivers/media/i2c/soc_camera/tw9910.c
> > > 
> > > So it seems to me only the following sensor do not have a
> > > non-soc_camera driver at the moment:
> > > 
> > > mt9m001.c
> > > mt9v022.c
> > > ov5642.c
> > > ov9640.c
> > > ov9740.c  
> > 
> > Ok. So, what about keeping just those 5 drivers at staging? If, after an
> > year, people won't do conversions, we can just drop them.  
> 
> They've been there for years without anyone converting them. Do note that
> the conversion can be still done once the code is removed.

Well, people converted a lot of drivers already. See above. It is
just that it takes time. The same applied to lirc: it stayed at
staging for years. People gradually converted the drivers until
we finally got rid of them.

That is the goal of staging: to give people some time to fix
issues on broken drivers.

> We did the same for a big bunch of sensor drivers that came with the
> atomisp2 driver. I don't see a difference here.

No, we only removed the atomisp driver after being sure that
the only party that was pushing it lost its interest on fixing
the issues. Even so, we waited for a while, as other parties
might manifest their interests on doing that.

Also, in the case of atomisp, there were no other drivers
depending on it, so removing it was a way easier and straight
forward.

The point is: there's absolutely no reason why we should rush
it, doing a half-baked removal, where several parts of the non
working code would be left on drivers and even the header file
for soc_camera.h would be kept.

The right way to do it is:

1) remove include soc_camera.h on drivers that don't need it anymore;
2) Move things to staging. There are actually two tasks here:
  2a) get rid of useless soc-camera depend code on drivers/board code,
      removing their dependencies of soc_camera.h;
  2b) move the soc-camera dependent code that makes sense to
      staging (sensors - and maybe driver/board code for platforms
      that are still be actively maintained);
3) wait for a couple of Kernel releases;
4) drop everything related to soc_camera from staging.

From the e-mail from Jacopo, from sensors PoV, only those sensor
drivers may make sense to keep for a while:

	soc_mt9m001.c
	soc_mt9v022.c
	soc_ov5642.c
	soc_ov9640.c
	soc_ov9740.c  

So, on step 2, we can very likely get rid of the other sensor drivers
that already exists and don't depend on soc_camera.

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31 10:00         ` Hans Verkuil
@ 2018-10-31 10:54           ` Mauro Carvalho Chehab
  2018-11-13 22:41             ` Sakari Ailus
  0 siblings, 1 reply; 27+ messages in thread
From: Mauro Carvalho Chehab @ 2018-10-31 10:54 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Sakari Ailus, linux-media, mchehab, Javier Martin

Em Wed, 31 Oct 2018 11:00:22 +0100
Hans Verkuil <hverkuil@xs4all.nl> escreveu:

> On 10/31/2018 10:40 AM, Mauro Carvalho Chehab wrote:
> > Em Wed, 31 Oct 2018 11:29:45 +0200
> > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> >   
> >> Hi Mauro,
> >>
> >> On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:  
> >>> Em Tue, 30 Oct 2018 01:00:29 +0200
> >>> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> >>>     
> >>>> Clean up the SoC camera framework header. It only exists now to keep board
> >>>> code compiling. The header can be removed once the board code dependencies
> >>>> to it has been removed.
> >>>>
> >>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> >>>> ---
> >>>>  include/media/soc_camera.h | 335 ---------------------------------------------
> >>>>  1 file changed, 335 deletions(-)
> >>>>
> >>>> diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> >>>> index b7e42a1b0910..14d19da6052a 100644
> >>>> --- a/include/media/soc_camera.h
> >>>> +++ b/include/media/soc_camera.h
> >>>> @@ -22,172 +22,6 @@
> >>>>  #include <media/v4l2-ctrls.h>
> >>>>  #include <media/v4l2-device.h>    
> >>>
> >>> That doesn't make any sense. soc_camera.h should have the same fate
> >>> as the entire soc_camera infrastructure: either be removed or moved
> >>> to staging, and everything else that doesn't have the same fate
> >>> should get rid of this header.    
> >>
> >> We can't just remove this; there is board code that depends on it.
> >>
> >> The intent is to remove the board code as well but presuming that the board
> >> code would be merged through a different tree, it'd be less hassle to wait
> >> a bit; hence the patch removing any unnecessary stuff here.  
> > 
> > Then we need *first* to remove board code, wait for those changes to be
> > applied and *then* remove soc_camera (and not the opposite).  
> 
> Please note that the camera support for all the remaining boards using
> soc_camera has been dead for years. The soc_camera drivers that they depended
> on have been removed a long time ago.
> 
> So all they depend on are the header. We can safely remove soc_camera without
> loss of functionality (and thus prevent others from basing new drivers on
> soc_camera), while we work to update the board files so we can remove this last
> header.
> 
> I have modified some board files here:
> 
> https://git.linuxtv.org/hverkuil/media_tree.git/commit/?h=rm-soc-camera&id=d7ae2fcf6e447022f0780bb86a2b63d5c7cf4d35

Good! the arch-specific mach-* changes should likely be on separate
patches, though.

> Only arch/arm/mach-imx/mach-imx27_visstrim_m10.c hasn't been fixed yet in that
> patch (ENOTIME).

So, the code we don't manage seems to be just 3 archs, right (mach-omap1,
mach-pxa and mach-imx)?

Btw, the soc_camera dependent code at mach-imx27_visstrim_m10.c is:

	static struct soc_camera_link iclink_tvp5150 = {
	        .bus_id         = 0,
        	.board_info     = &visstrim_i2c_camera,
	        .i2c_adapter_id = 0,
	        .power = visstrim_camera_power,
	        .reset = visstrim_camera_reset,
	};

...
        platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
                                      &iclink_tvp5150, sizeof(iclink_tvp5150));


As tvp5150 is not actually a soc_camera driver, I suspect that
the conversion here would be to make it to use the tvp5150 driver
directly, instead of doing it via soc_camera.

> The problem is just lack of time to clean this up and figure out who should
> take these board patches.

No need to rush it.

> So I think it is a nice solution to just replace the header with a dummy version
> so the board files still compile, and then we can delete the dead soc_camera
> driver. It's probably easier as well to push through the board file changes once
> soc_camera is removed since you can just point out that the framework it depended
> on is gone.

I still think that reverting the order and rushing the removal is not the
way to go.

For example, on that specific imx.27 board above mentioned, it may
still be working with the tvp5150 driver[1] and replacing the soc_camera.h 
by a dummy version would just break for no good reason.

[1] I don't have such board to test, nor I checked if what's left from
soc_camera still allows the tvp5150 driver to register.


Thanks,
Mauro

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 4/4] SoC camera: Tidy the header
  2018-10-31 10:54           ` Mauro Carvalho Chehab
@ 2018-11-13 22:41             ` Sakari Ailus
  0 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2018-11-13 22:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Hans Verkuil, Sakari Ailus, linux-media, mchehab, Javier Martin

Hi Hans, Mauro,

On Wed, Oct 31, 2018 at 07:54:21AM -0300, Mauro Carvalho Chehab wrote:
> Em Wed, 31 Oct 2018 11:00:22 +0100
> Hans Verkuil <hverkuil@xs4all.nl> escreveu:
> 
> > On 10/31/2018 10:40 AM, Mauro Carvalho Chehab wrote:
> > > Em Wed, 31 Oct 2018 11:29:45 +0200
> > > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >   
> > >> Hi Mauro,
> > >>
> > >> On Tue, Oct 30, 2018 at 09:06:18AM -0300, Mauro Carvalho Chehab wrote:  
> > >>> Em Tue, 30 Oct 2018 01:00:29 +0200
> > >>> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> > >>>     
> > >>>> Clean up the SoC camera framework header. It only exists now to keep board
> > >>>> code compiling. The header can be removed once the board code dependencies
> > >>>> to it has been removed.
> > >>>>
> > >>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > >>>> ---
> > >>>>  include/media/soc_camera.h | 335 ---------------------------------------------
> > >>>>  1 file changed, 335 deletions(-)
> > >>>>
> > >>>> diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
> > >>>> index b7e42a1b0910..14d19da6052a 100644
> > >>>> --- a/include/media/soc_camera.h
> > >>>> +++ b/include/media/soc_camera.h
> > >>>> @@ -22,172 +22,6 @@
> > >>>>  #include <media/v4l2-ctrls.h>
> > >>>>  #include <media/v4l2-device.h>    
> > >>>
> > >>> That doesn't make any sense. soc_camera.h should have the same fate
> > >>> as the entire soc_camera infrastructure: either be removed or moved
> > >>> to staging, and everything else that doesn't have the same fate
> > >>> should get rid of this header.    
> > >>
> > >> We can't just remove this; there is board code that depends on it.
> > >>
> > >> The intent is to remove the board code as well but presuming that the board
> > >> code would be merged through a different tree, it'd be less hassle to wait
> > >> a bit; hence the patch removing any unnecessary stuff here.  
> > > 
> > > Then we need *first* to remove board code, wait for those changes to be
> > > applied and *then* remove soc_camera (and not the opposite).  
> > 
> > Please note that the camera support for all the remaining boards using
> > soc_camera has been dead for years. The soc_camera drivers that they depended
> > on have been removed a long time ago.
> > 
> > So all they depend on are the header. We can safely remove soc_camera without
> > loss of functionality (and thus prevent others from basing new drivers on
> > soc_camera), while we work to update the board files so we can remove this last
> > header.
> > 
> > I have modified some board files here:
> > 
> > https://git.linuxtv.org/hverkuil/media_tree.git/commit/?h=rm-soc-camera&id=d7ae2fcf6e447022f0780bb86a2b63d5c7cf4d35
> 
> Good! the arch-specific mach-* changes should likely be on separate
> patches, though.
> 
> > Only arch/arm/mach-imx/mach-imx27_visstrim_m10.c hasn't been fixed yet in that
> > patch (ENOTIME).
> 
> So, the code we don't manage seems to be just 3 archs, right (mach-omap1,
> mach-pxa and mach-imx)?
> 
> Btw, the soc_camera dependent code at mach-imx27_visstrim_m10.c is:
> 
> 	static struct soc_camera_link iclink_tvp5150 = {
> 	        .bus_id         = 0,
>         	.board_info     = &visstrim_i2c_camera,
> 	        .i2c_adapter_id = 0,
> 	        .power = visstrim_camera_power,
> 	        .reset = visstrim_camera_reset,
> 	};
> 
> ...
>         platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
>                                       &iclink_tvp5150, sizeof(iclink_tvp5150));
> 
> 
> As tvp5150 is not actually a soc_camera driver, I suspect that
> the conversion here would be to make it to use the tvp5150 driver
> directly, instead of doing it via soc_camera.

Using board files? The IMX27 SoC has plenty of dts files around which
suggests that it's just this particular board that has not been converted.
I don't think this is a good excuse to keep the board file stuff around.

If someone is willing to add dts files for the board, all the better. But
I'm not going to do that.

> 
> > The problem is just lack of time to clean this up and figure out who should
> > take these board patches.
> 
> No need to rush it.
> 
> > So I think it is a nice solution to just replace the header with a dummy version
> > so the board files still compile, and then we can delete the dead soc_camera
> > driver. It's probably easier as well to push through the board file changes once
> > soc_camera is removed since you can just point out that the framework it depended
> > on is gone.
> 
> I still think that reverting the order and rushing the removal is not the
> way to go.

I think no-one can blame us for rushing the removal of this: it's been
broken for years.

I propose removing the dead code with the least effort while minimising
collateral damage as well as additional maintenance work done to support
the to-be-removed code.

As far as I can see, that involves:

- Removing the SoC camera framework (as my set does; there'll be v2 to fix
  a few minor matters),

- Removing the board files (I can pick bits from Hans's patch for that if
  you like) and finally

- Remove the header left in place until the board files are gone.

The two could possibly make it to v4.21.

I'd say that having two of us have written patches to remove this code
independently is a clear sign code is ripe to go...

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2018-11-14  8:41 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-29 23:00 [PATCH 0/4] SoC camera removal Sakari Ailus
2018-10-29 23:00 ` [PATCH 1/4] tw9910: Unregister async subdev at device unbind Sakari Ailus
2018-10-29 23:00 ` [PATCH 2/4] tw9910: No SoC camera dependency Sakari Ailus
2018-10-30 12:03   ` Hans Verkuil
2018-10-31  9:49     ` Sakari Ailus
2018-10-31  9:50       ` Hans Verkuil
2018-10-29 23:00 ` [PATCH 4/4] SoC camera: Tidy the header Sakari Ailus
2018-10-30  9:50   ` Mauro Carvalho Chehab
2018-10-30 12:06   ` Mauro Carvalho Chehab
2018-10-31  9:29     ` Sakari Ailus
2018-10-31  9:40       ` Mauro Carvalho Chehab
2018-10-31  9:44         ` Sakari Ailus
2018-10-31  9:57         ` Sakari Ailus
2018-10-31 10:00         ` Hans Verkuil
2018-10-31 10:54           ` Mauro Carvalho Chehab
2018-11-13 22:41             ` Sakari Ailus
2018-10-29 23:21 ` [PATCH 3/4] SoC camera: Remove the framework and the drivers Sakari Ailus
2018-10-30  9:43   ` Mauro Carvalho Chehab
2018-10-30 12:06     ` Mauro Carvalho Chehab
2018-10-30 12:09       ` Mauro Carvalho Chehab
2018-10-30 12:14     ` Mauro Carvalho Chehab
2018-10-30 20:28       ` jacopo mondi
2018-10-30 20:35         ` Mauro Carvalho Chehab
2018-10-30 21:17           ` jacopo mondi
2018-10-31  9:12             ` Hans Verkuil
2018-10-31  9:32           ` Sakari Ailus
2018-10-31 10:04             ` Mauro Carvalho Chehab

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.