linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@iki.fi>
To: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Cc: sre@kernel.org, pali.rohar@gmail.com, pavel@ucw.cz,
	linux-media@vger.kernel.org
Subject: Re: [PATCH] [media]: Driver for Toshiba et8ek8 5MP sensor
Date: Fri, 10 Jun 2016 02:13:49 +0300	[thread overview]
Message-ID: <20160609231349.GA26360@valkosipuli.retiisi.org.uk> (raw)
In-Reply-To: <57533212.3020406@gmail.com>

Hi Ivaylo,

On Sat, Jun 04, 2016 at 10:54:58PM +0300, Ivaylo Dimitrov wrote:
> Hi,
> 
> On 26.05.2016 00:45, Sakari Ailus wrote:
> >Hi Ivaylo,
> >
> >I've got some comments here but I haven't reviewed everything yet. What's
> >missing is
> >
> >- the user space interface for selecting the sensor configuration "mode",
> >
> >- passing information on the sensor configuration to the user space.
> >
> >I'll try to take a look at those some time in the near future.
> >
> 
> ok
> 
> >
> >I very much appreciate your work towards finally upstreaming this! :-)
> >
> >On Tue, May 03, 2016 at 05:50:04PM +0300, Ivaylo Dimitrov wrote:
> >>The sensor is found in Nokia N900 main camera
> >>
> >>Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> >>---
> >>  .../bindings/media/i2c/toshiba,et8ek8.txt          |   53 +
> >>  drivers/media/i2c/Kconfig                          |    1 +
> >>  drivers/media/i2c/Makefile                         |    1 +
> >>  drivers/media/i2c/et8ek8/Kconfig                   |    6 +
> >>  drivers/media/i2c/et8ek8/Makefile                  |    2 +
> >>  drivers/media/i2c/et8ek8/et8ek8_driver.c           | 1711 ++++++++++++++++++++
> >>  drivers/media/i2c/et8ek8/et8ek8_mode.c             |  591 +++++++
> >>  drivers/media/i2c/et8ek8/et8ek8_reg.h              |  100 ++
> >>  include/uapi/linux/v4l2-controls.h                 |    5 +
> >>  9 files changed, 2470 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/media/i2c/toshiba,et8ek8.txt
> >>  create mode 100644 drivers/media/i2c/et8ek8/Kconfig
> >>  create mode 100644 drivers/media/i2c/et8ek8/Makefile
> >>  create mode 100644 drivers/media/i2c/et8ek8/et8ek8_driver.c
> >>  create mode 100644 drivers/media/i2c/et8ek8/et8ek8_mode.c
> >>  create mode 100644 drivers/media/i2c/et8ek8/et8ek8_reg.h
> >>
> >>diff --git a/Documentation/devicetree/bindings/media/i2c/toshiba,et8ek8.txt b/Documentation/devicetree/bindings/media/i2c/toshiba,et8ek8.txt
> >>new file mode 100644
> >>index 0000000..55f712c
> >>--- /dev/null
> >>+++ b/Documentation/devicetree/bindings/media/i2c/toshiba,et8ek8.txt
> >>@@ -0,0 +1,53 @@
> >>+Toshiba et8ek8 5MP sensor
> >>+
> >>+Toshiba et8ek8 5MP sensor is an image sensor found in Nokia N900 device
> >>+
> >>+More detailed documentation can be found in
> >>+Documentation/devicetree/bindings/media/video-interfaces.txt .
> >>+
> >>+
> >>+Mandatory properties
> >>+--------------------
> >>+
> >>+- compatible: "toshiba,et8ek8"
> >>+- reg: I2C address (0x3e, or an alternative address)
> >>+- vana-supply: Analogue voltage supply (VANA), typically 2,8 volts (sensor
> >>+  dependent).
> >
> >As these are bindings for a particular sensor, 2,8 volts it is.
> >
> >The sensor has also a digital voltage supply but it might be controlled by
> >the same GPIO which controls the CCP2 switch. Ugly stuff. Perhaps we could
> >just omit that here.
> >
> 
> ok
> 
> >>+- clocks: External clock to the sensor
> >>+- clock-frequency: Frequency of the external clock to the sensor
> >>+
> >>+
> >>+Optional properties
> >>+-------------------
> >>+
> >>+- reset-gpios: XSHUTDOWN GPIO
> >
> >I guess this should be mandatory.
> >
> 
> yeah. Also, I will change xxx-lanes to optional
> 
> >>+
> >>+
> >>+Endpoint node mandatory properties
> >>+----------------------------------
> >>+
> >>+- clock-lanes: <0>
> >>+- data-lanes: <1..n>
> >>+- remote-endpoint: A phandle to the bus receiver's endpoint node.
> >>+
> >>+
> >>+Example
> >>+-------
> >>+
> >>+&i2c3 {
> >>+	clock-frequency = <400000>;
> >>+
> >>+	cam1: camera@3e {
> >>+		compatible = "toshiba,et8ek8";
> >>+		reg = <0x3e>;
> >>+		vana-supply = <&vaux4>;
> >>+		clocks = <&isp 0>;
> >>+		clock-frequency = <9600000>;
> >>+		reset-gpio = <&gpio4 6 GPIO_ACTIVE_HIGH>; /* 102 */
> >>+		port {
> >>+			csi_cam1: endpoint {
> >>+				remote-endpoint = <&csi_out1>;
> >>+			};
> >>+		};
> >>+	};
> >>+};
> >
> >Please split the DT documentation from the driver.
> >
> 
> Split it how? Send as series [patch 1] - driver, [patch 2] - doc?

Yes, please. As the ad5820, for instance.

> 
> >I remember having discussed showing the module in DT with Sebastian but I
> >couldn't find the patches anywhere. We currently consider the lens and
> >sensor entirely separate, the module has not been shown in software as
> >there's been nothing to control it.
> >
> 
> Not sure what am I supposed to do with that comment :)

Not necessarily anything. But I'd like to continue the discussion on the
topic. :-)

> 
> >Sebastian: do you still have those patches around somewhere?
> >
> >>diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
> >>index 993dc50..e964787 100644
> >>--- a/drivers/media/i2c/Kconfig
> >>+++ b/drivers/media/i2c/Kconfig
> >>@@ -629,6 +629,7 @@ config VIDEO_S5K5BAF
> >>  	  camera sensor with an embedded SoC image signal processor.
> >>
> >>  source "drivers/media/i2c/smiapp/Kconfig"
> >>+source "drivers/media/i2c/et8ek8/Kconfig"
> >>
> >>  config VIDEO_S5C73M3
> >>  	tristate "Samsung S5C73M3 sensor support"
> >>diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
> >>index 94f2c99..907b180 100644
> >>--- a/drivers/media/i2c/Makefile
> >>+++ b/drivers/media/i2c/Makefile
> >>@@ -2,6 +2,7 @@ msp3400-objs	:=	msp3400-driver.o msp3400-kthreads.o
> >>  obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
> >>
> >>  obj-$(CONFIG_VIDEO_SMIAPP)	+= smiapp/
> >>+obj-$(CONFIG_VIDEO_ET8EK8)	+= et8ek8/
> >>  obj-$(CONFIG_VIDEO_CX25840) += cx25840/
> >>  obj-$(CONFIG_VIDEO_M5MOLS)	+= m5mols/
> >>  obj-y				+= soc_camera/
> >>diff --git a/drivers/media/i2c/et8ek8/Kconfig b/drivers/media/i2c/et8ek8/Kconfig
> >>new file mode 100644
> >>index 0000000..1439936
> >>--- /dev/null
> >>+++ b/drivers/media/i2c/et8ek8/Kconfig
> >>@@ -0,0 +1,6 @@
> >>+config VIDEO_ET8EK8
> >>+	tristate "ET8EK8 camera sensor support"
> >>+	depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
> >>+	---help---
> >>+	  This is a driver for the Toshiba ET8EK8 5 MP camera sensor.
> >>+	  It is used for example in Nokia N900 (RX-51).
> >>diff --git a/drivers/media/i2c/et8ek8/Makefile b/drivers/media/i2c/et8ek8/Makefile
> >>new file mode 100644
> >>index 0000000..66d1b7d
> >>--- /dev/null
> >>+++ b/drivers/media/i2c/et8ek8/Makefile
> >>@@ -0,0 +1,2 @@
> >>+et8ek8-objs			+= et8ek8_mode.o et8ek8_driver.o
> >>+obj-$(CONFIG_VIDEO_ET8EK8)	+= et8ek8.o
> >>diff --git a/drivers/media/i2c/et8ek8/et8ek8_driver.c b/drivers/media/i2c/et8ek8/et8ek8_driver.c
> >>new file mode 100644
> >>index 0000000..1eaef78
> >>--- /dev/null
> >>+++ b/drivers/media/i2c/et8ek8/et8ek8_driver.c
> >>@@ -0,0 +1,1711 @@
> >>+/*
> >>+ * et8ek8_driver.c
> >>+ *
> >>+ * Copyright (C) 2008 Nokia Corporation
> >>+ *
> >>+ * Contact: Sakari Ailus <sakari.ailus@iki.fi>
> >>+ *          Tuukka Toivonen <tuukka.o.toivonen@nokia.com>
> >
> >tuukkat76@gmail.com
> >
> 
> ok
> 
> >>+ *
> >>+ * Based on code from Toni Leinonen <toni.leinonen@offcode.fi>.
> >>+ *
> >>+ * This driver is based on the Micron MT9T012 camera imager driver
> >>+ * (C) Texas Instruments.
> >>+ *
> >>+ * This program is free software; you can redistribute it and/or
> >>+ * modify it under the terms of the GNU General Public License
> >>+ * version 2 as published by the Free Software Foundation.
> >>+ *
> >>+ * This program is distributed in the hope that it will be useful, but
> >>+ * WITHOUT ANY WARRANTY; without even the implied warranty of
> >>+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> >>+ * General Public License for more details.
> >>+ */
> >>+
> >>+#include <linux/clk.h>
> >>+#include <linux/delay.h>
> >>+#include <linux/i2c.h>
> >>+#include <linux/kernel.h>
> >>+#include <linux/module.h>
> >>+#include <linux/mutex.h>
> >>+#include <linux/gpio/consumer.h>
> >
> >Alphabetical order, please.
> >
> 
> ok
> 
> >>+#include <linux/regulator/consumer.h>
> >>+#include <linux/slab.h>
> >>+#include <linux/sort.h>
> >>+#include <linux/version.h>
> >
> >Is linux/version.h needed?
> >
> 
> no, will remove it
> 
> >>+#include <linux/v4l2-mediabus.h>
> >>+
> >>+#include <media/media-entity.h>
> >>+#include <media/v4l2-ctrls.h>
> >>+#include <media/v4l2-device.h>
> >>+#include <media/v4l2-subdev.h>
> >>+
> >>+#include "et8ek8_reg.h"
> >>+
> >>+#define ET8EK8_NAME		"et8ek8"
> >>+#define ET8EK8_PRIV_MEM_SIZE	128
> >>+
> >>+#define ET8EK8_CID_USER_FRAME_WIDTH	(V4L2_CID_USER_ET8EK8_BASE + 1)
> >>+#define ET8EK8_CID_USER_FRAME_HEIGHT	(V4L2_CID_USER_ET8EK8_BASE + 2)
> >>+#define ET8EK8_CID_USER_VISIBLE_WIDTH	(V4L2_CID_USER_ET8EK8_BASE + 3)
> >>+#define ET8EK8_CID_USER_VISIBLE_HEIGHT	(V4L2_CID_USER_ET8EK8_BASE + 4)
> >>+#define ET8EK8_CID_USER_SENSITIVITY	(V4L2_CID_USER_ET8EK8_BASE + 5)
> >
> >If you have custom controls,
> >
> 
> hmm?

Yes, this is apparently left unfinished and it's a bit hard to grasp what
was the real meaning behind that comment. I agree.

What I meant to say that the controls would be better to be defined in a
header file. However, the interface to access the information shouldn't be
controls.

In this case, I believe the information is already provided to the user:
VIDIOC_SUBDEV_S_FMT is used to set the output format, and as none of the
modes use cropping.

In order to resolve this, I suggest dropping these controls.

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

  reply	other threads:[~2016-06-09 23:14 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160420081427.GZ32125@valkosipuli.retiisi.org.uk>
2016-04-24 21:08 ` [RFC PATCH 00/24] Make Nokia N900 cameras working Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 01/24] V4L fixes Ivaylo Dimitrov
2016-04-24 22:05     ` Pavel Machek
2016-04-25  7:29     ` Hans Verkuil
2016-04-25 13:25     ` Sakari Ailus
2016-04-25 16:32       ` Ivaylo Dimitrov
2016-04-29  7:41         ` Sakari Ailus
2016-04-24 21:08   ` [RFC PATCH 02/24] smiaregs: Generic i2c register writing Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 03/24] et8ek8: Toshiba 5MP sensor driver Ivaylo Dimitrov
2016-05-01 10:44     ` Sakari Ailus
2016-05-01 12:31       ` Ivaylo Dimitrov
2016-05-01 12:32         ` Ivaylo Dimitrov
2016-05-01 12:50       ` Ivaylo Dimitrov
2016-05-01 13:41         ` Sakari Ailus
2016-05-03 14:50           ` [PATCH] [media]: Driver for Toshiba et8ek8 5MP sensor Ivaylo Dimitrov
2016-05-22 10:07             ` Ivaylo Dimitrov
2016-05-24 11:19             ` Pavel Machek
2016-06-04 19:16               ` Ivaylo Dimitrov
2016-06-06  9:04               ` Sylwester Nawrocki
2016-05-25 21:45             ` Sakari Ailus
2016-06-04 19:54               ` Ivaylo Dimitrov
2016-06-09 23:13                 ` Sakari Ailus [this message]
2016-04-24 21:08   ` [RFC PATCH 04/24] smiapp-pll: Take existing divisor into account in minimum divisor check Ivaylo Dimitrov
2016-05-01 10:45     ` Sakari Ailus
2016-05-03 18:25       ` Ivaylo Dimitrov
2016-05-24  9:09       ` Pali Rohár
2016-05-24 10:17     ` Pavel Machek
2016-04-24 21:08   ` [RFC PATCH 05/24] smiapp: Add smiapp_has_quirk() to tell whether a quirk is implemented Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 06/24] smiapp: Add quirk control support Ivaylo Dimitrov
2016-05-01 10:46     ` Sakari Ailus
2016-05-03 18:32       ` Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 07/24] v4l: of: Call CSI2 bus csi2, not csi Ivaylo Dimitrov
2016-04-29 13:22     ` Pavel Machek
2016-04-24 21:08   ` [RFC PATCH 08/24] v4l: of: Obtain data bus type from bus-type property Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 09/24] v4l: Add CSI1 and CCP2 bus type to enum v4l2_mbus_type Ivaylo Dimitrov
2016-04-29 13:27     ` Pavel Machek
2016-04-24 21:08   ` [RFC PATCH 10/24] v4l: of: Separate lane parsing from CSI-2 bus parameter parsing Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 11/24] dt: bindings: v4l: Add bus-type video interface property Ivaylo Dimitrov
2016-04-29 13:28     ` Pavel Machek
2016-04-24 21:08   ` [RFC PATCH 12/24] dt: bindings: Add CSI1/CCP2 related properties to video-interfaces.txt Ivaylo Dimitrov
2016-04-29 13:39     ` Pavel Machek
2016-04-24 21:08   ` [RFC PATCH 13/24] v4l: of: Support CSI-1 and CCP2 busses Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 14/24] media: et8ek8: add device tree binding document Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 15/24] media: add subdev type for bus switch Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 16/24] media: video-bus-switch: new driver Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 17/24] smiapp: add CCP2 support Ivaylo Dimitrov
2016-05-01 10:57     ` Sakari Ailus
2016-04-24 21:08   ` [RFC PATCH 18/24] v4l2-async: per notifier locking Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 19/24] v4l2_device_register_subdev_nodes: allow calling multiple times Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 20/24] ARM: dts: omap3-n900: enable cameras Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 21/24] omap3isp: dt: Add support for CSI1/CCP2 busses Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 22/24] [media] omap3isp: Correctly set IO_OUT_SEL and VP_CLK_POL for CCP2 mode Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 23/24] [media] omap3isp: Make sure CSI1 interface is enabled in CPP2 mode Ivaylo Dimitrov
2016-04-24 21:08   ` [RFC PATCH 24/24] ARM: dts: omap3-n900: enable cameras - remove invalid entry Ivaylo Dimitrov
2016-04-24 21:55   ` [RFC PATCH 00/24] Make Nokia N900 cameras working Pavel Machek
2016-04-25  6:33     ` Ivaylo Dimitrov
2016-04-25 17:09       ` Pavel Machek
2016-04-25 17:21         ` Ivaylo Dimitrov
2016-04-27 21:07           ` Pavel Machek
2016-04-25 10:40   ` Pali Rohár
2016-04-25 14:06     ` Pavel Machek
2016-04-25 14:09       ` Hans Verkuil
2016-04-27 21:09         ` Pavel Machek
2016-04-25 14:14       ` Pali Rohár
2016-04-25 17:14         ` Pali Rohár
2016-04-25 16:58   ` Pavel Machek
2016-04-25 17:17     ` Ivaylo Dimitrov
2016-04-25 18:40       ` Pavel Machek
2016-04-25 19:17         ` Ivaylo Dimitrov
2016-04-25 20:41           ` Pavel Machek
2016-04-25 20:53             ` Ivaylo Dimitrov
2016-04-25 22:07               ` Pavel Machek
2016-04-26  4:21                 ` Ivaylo Dimitrov
2016-04-27  8:30                   ` Pavel Machek
2016-04-27  3:08   ` Sebastian Reichel
2016-04-27  5:05     ` Ivaylo Dimitrov
2016-04-27  6:57       ` Ivaylo Dimitrov
2016-04-27 16:42         ` Sebastian Reichel
2016-04-27 16:45           ` Pavel Machek
2016-04-27 16:59             ` Sebastian Reichel
2016-05-02  7:06               ` Pavel Machek
2016-04-27 17:12           ` Ивайло Димитров
2016-04-27 19:05             ` Pavel Machek
2016-04-29  0:05             ` Sebastian Reichel
2016-04-29 17:45               ` Sebastian Reichel
2016-04-29 18:44                 ` Ivaylo Dimitrov
2016-05-01 10:37                   ` Sakari Ailus
2016-05-01  9:03                 ` Pavel Machek
2016-04-27 20:30           ` Pavel Machek
2016-06-17 16:42     ` Nokia N900 cameras -- pipeline setup in python (was Re: [RFC PATCH 00/24] Make Nokia N900 cameras working) Pavel Machek
2016-06-17 17:12       ` Pavel Machek
2016-06-20 17:00         ` Pavel Machek
2016-06-20 20:59         ` Sakari Ailus
2016-06-21 18:05           ` Pavel Machek
2016-06-22  7:22             ` Sakari Ailus
2016-06-22 11:18           ` Pavel Machek
2016-07-01  7:31           ` square-only image on Nokia N900 camera " Pavel Machek
2016-07-01  8:50             ` Pavel Machek
2016-07-01 11:01               ` Pavel Machek
2016-07-01 19:40                 ` Pavel Machek
2016-06-24 16:21   ` [RFC PATCH 00/24] Make Nokia N900 cameras working Pavel Machek
2016-08-27 13:48   ` fcam-dev support for new kernels -- " Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160609231349.GA26360@valkosipuli.retiisi.org.uk \
    --to=sakari.ailus@iki.fi \
    --cc=ivo.g.dimitrov.75@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=pali.rohar@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=sre@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).