All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sam Bobrowicz <sam@elite-embedded.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-media@vger.kernel.org,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Mylene Josserand <mylene.josserand@bootlin.com>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Hugues Fruchet <hugues.fruchet@st.com>
Subject: Re: [PATCH v2 00/12] media: ov5640: Misc cleanup and improvements
Date: Fri, 27 Apr 2018 12:27:24 +0300	[thread overview]
Message-ID: <3075738.A80d5ULHjc@avalon> (raw)
In-Reply-To: <CAFwsNOEV0Q2HjmaoT-m-znD-+0VSfE4tJ2vCPuNpUe2M72ErAA@mail.gmail.com>

Hi Sam,

On Wednesday, 25 April 2018 01:11:19 EEST Sam Bobrowicz wrote:
> FYI, still hard at work on this. Did some more experiments last week
> that seemed to corroborate the clock tree in the spreadsheet. It also
> seems that the output of the P divider cell, SCLK cell and MIPI Rate
> cell in the spreadsheet must have a ratio of 2x:1x:8x (respectively)
> in order for the sensor to work properly on my platform, and that the
> SCLK value must be close to the "rate" variable that you calculate and
> pass to set_mipi_pclk. Unfortunately, I've only got the sensor working
> well for 1080p@15Hz and 720p@30Hz, both with a SCLK of 42MHz (aka
> 84:42:336). I'm running experiments now trying to adjust the htot and
> vtot values to create different required rates, and also to try to get
> faster Mipi rates working. Any information you have on the
> requirements of the htot and vtot values with respect to vact and hact
> values would likely be helpful.
> 
> I'm also keeping an eye on the scaler clock, which I think may be
> affecting certain resolutions, but haven't been able to see it make a
> difference yet (see register 0x3824 and 0x460c)
> 
> I plan on pushing a set of patches once I get this figured out, we can
> discuss what I should base them on when I get closer to that point.
> I'm new to this process :)

I'm also interested in getting the ov5640 driver working with MIPI CSI-2. 
Studying the datasheet and the driver code, I found the stream on sequence to 
be a bit weird. In particular the configuration of OV5640_REG_IO_MIPI_CTRL00, 
OV5640_REG_PAD_OUTPUT00 and OV5640_REG_MIPI_CTRL00 caught my attention.

OV5640_REG_IO_MIPI_CTRL00 (0x300e) is set to 0x45 in the large array of init 
mode data and never touched for MIPI CSI-2 (the register is only touched in 
ov5640_set_stream_dvp). The value means

- mipi_lane_mode: 010 is documented as "debug mode", I would have expected 000 
for one lane or 001 for two lanes.

- MIPI TX PHY power down: 0 is documented as "debug mode" and 1 as "Power down 
PHY HS TX", so I suppose 0 is correct.

- MIPI RX PHY power down: 0 is documented as "debug mode" and 1 as "Power down 
PHY LP RX module", so I suppose 0 is correct. I however wonder why there's a 
RX PHY, it could be a typo.

- mipi_en: 1 means MIPI enable, which should be correct.

- BIT(0) is undocumented.

OV5640_REG_PAD_OUTPUT00 (0x3019) isn't initialized explicitly and thus retains 
its default value of 0x00, and is controlled when starting and stopping the 
stream where it's set to 0x00 and 0x70 respectively. Bits 6:4 control the 
"sleep mode" state of lane 2, lane 1 and clock lane respectively, and should 
be LP11 in my opinion (that's the PHY stop state). However, setting them to 
0x00 when starting the stream mean that LP00 is selected as the sleep state at 
stream start, and LP11 when stopping the stream. Maybe "sleep mode" means 
LPDT, but I would expect that to be controlled by the idle status bit in 
register 0x4800.

OV5640_REG_MIPI_CTRL00 (0x4800) is set to 0x04 in the large array of init mode 
data, and BIT(5) is then cleared at stream on time and set at stream off time. 
This means:

- Clock lane gate enable: Clock lane is free running
- Line sync enable: Do not send line short packets for each line (I assume 
that's LS/LE)
- Lane select: Use lane1 as default data lane.
- Idle status: MIPI bus will be LP11 when no packet to transmit. I would have 
expected the idle status to correspond to LPDT, and thus be LP00 (as opposed 
to the stop state that should be LP11, which I believe is named "sleep mode" 
in the datasheet and controlled in register 0x3019).

BIT(5) is the clock lane gate enable, so at stream on time the clock is set to 
free running, and at stream off time to "Gate clock lane when no packet to 
transmit". Couldn't we always enable clock gating ?

Do you have any insight on this ? Have you modified the MIPI CSI-2 
configuration to get the CSI-2 output working ?

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2018-04-27  9:27 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-16 12:36 [PATCH v2 00/12] media: ov5640: Misc cleanup and improvements Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 01/12] media: ov5640: Add auto-focus feature Maxime Ripard
2018-04-19 10:36   ` Laurent Pinchart
2018-04-20 19:10     ` Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 02/12] media: ov5640: Add light frequency control Maxime Ripard
2018-04-19  9:44   ` Laurent Pinchart
2018-04-20 19:04     ` Maxime Ripard
2018-04-24 11:55       ` Sakari Ailus
2018-04-16 12:36 ` [PATCH v2 03/12] media: ov5640: Don't force the auto exposure state at start time Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 04/12] media: ov5640: Init properly the SCLK dividers Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 05/12] media: ov5640: Change horizontal and vertical resolutions name Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 06/12] media: ov5640: Add horizontal and vertical totals Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 07/12] media: ov5640: Program the visible resolution Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 08/12] media: ov5640: Adjust the clock based on the expected rate Maxime Ripard
2018-04-24  7:21   ` Sakari Ailus
2018-04-24 19:36     ` Maxime Ripard
2018-05-02 21:44       ` Sakari Ailus
2018-04-16 12:36 ` [PATCH v2 09/12] media: ov5640: Compute the clock rate at runtime Maxime Ripard
2018-04-16 12:36 ` [PATCH v2 10/12] media: ov5640: Enhance FPS handling Maxime Ripard
2018-04-16 12:37 ` [PATCH v2 11/12] media: ov5640: Add 60 fps support Maxime Ripard
2018-05-15 13:33   ` Hugues FRUCHET
2018-05-17  8:52     ` Maxime Ripard
2018-05-17 13:29       ` Hugues FRUCHET
2018-05-18  9:05         ` Maxime Ripard
2018-04-16 12:37 ` [PATCH v2 12/12] media: ov5640: Remove duplicate auto-exposure setup Maxime Ripard
2018-04-16 23:22 ` [PATCH v2 00/12] media: ov5640: Misc cleanup and improvements Samuel Bobrowicz
2018-04-17 16:01   ` Maxime Ripard
2018-04-18 23:39     ` Samuel Bobrowicz
2018-04-19 12:32       ` Maxime Ripard
2018-04-24 22:11         ` Sam Bobrowicz
2018-04-25 19:53           ` Maxime Ripard
2018-04-27  9:27           ` Laurent Pinchart [this message]
2018-05-02 18:11             ` Sam Bobrowicz
2018-05-03 15:16               ` Maxime Ripard
2018-05-04 10:01                 ` Loic Poulain
2018-05-04 21:13                   ` Sam Bobrowicz
2018-05-07  8:10                     ` Maxime Ripard
2018-05-04  7:26               ` Loic Poulain
2018-05-04 21:26                 ` Sam Bobrowicz
2018-05-08  1:00 ` Sam Bobrowicz
2018-05-17  8:50   ` Maxime Ripard

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=3075738.A80d5ULHjc@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hans.verkuil@cisco.com \
    --cc=hugues.fruchet@st.com \
    --cc=linux-media@vger.kernel.org \
    --cc=maxime.ripard@bootlin.com \
    --cc=mchehab@kernel.org \
    --cc=mylene.josserand@bootlin.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sam@elite-embedded.com \
    --cc=thomas.petazzoni@bootlin.com \
    /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 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.