linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Sam Bobrowicz <sam@elite-embedded.com>
Cc: Daniel Mack <daniel@zonque.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	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>,
	Loic Poulain <loic.poulain@linaro.org>,
	Steve Longerbeam <slongerbeam@gmail.com>
Subject: Re: [PATCH v3 03/12] media: ov5640: Remove the clocks registers initialization
Date: Mon, 21 May 2018 09:39:02 +0200	[thread overview]
Message-ID: <20180521073902.ayky27k5pcyfyyvc@flea> (raw)
In-Reply-To: <CAFwsNOEkLU91qYtj=n_pd=kvvovXs6JTFiMFvwsMRvB0nY5H=g@mail.gmail.com>

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

On Fri, May 18, 2018 at 07:42:34PM -0700, Sam Bobrowicz wrote:
> On Fri, May 18, 2018 at 3:35 AM, Daniel Mack <daniel@zonque.org> wrote:
> > On Thursday, May 17, 2018 10:53 AM, Maxime Ripard wrote:
> >>
> >> Part of the hardcoded initialization sequence is to set up the proper
> >> clock
> >> dividers. However, this is now done dynamically through proper code and as
> >> such, the static one is now redundant.
> >>
> >> Let's remove it.
> >>
> >> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> >> ---
> >
> >
> > [...]
> >
> >> @@ -625,8 +623,8 @@ static const struct reg_value
> >> ov5640_setting_30fps_1080P_1920_1080[] = {
> >>         {0x3a0d, 0x04, 0, 0}, {0x3a14, 0x03, 0, 0}, {0x3a15, 0xd8, 0, 0},
> >>         {0x4001, 0x02, 0, 0}, {0x4004, 0x06, 0, 0}, {0x4713, 0x03, 0, 0},
> >>         {0x4407, 0x04, 0, 0}, {0x460b, 0x35, 0, 0}, {0x460c, 0x22, 0, 0},
> >> -       {0x3824, 0x02, 0, 0}, {0x5001, 0x83, 0, 0}, {0x3035, 0x11, 0, 0},
> >> -       {0x3036, 0x54, 0, 0}, {0x3c07, 0x07, 0, 0}, {0x3c08, 0x00, 0, 0},
> >> +       {0x3824, 0x02, 0, 0}, {0x5001, 0x83, 0, 0},
> >> +       {0x3c07, 0x07, 0, 0}, {0x3c08, 0x00, 0, 0},
> >
> >
> > This is the mode that I'm testing with. Previously, the hard-coded registers
> > here were:
> >
> >  OV5640_REG_SC_PLL_CTRL1 (0x3035) = 0x11
> >  OV5640_REG_SC_PLL_CTRL2 (0x3036) = 0x54
> >  OV5640_REG_SC_PLL_CTRL3 (0x3037) = 0x07
> >
> > Your new code that calculates the clock rates dynamically ends up with
> > different values however:
> >
> >  OV5640_REG_SC_PLL_CTRL1 (0x3035) = 0x11
> >  OV5640_REG_SC_PLL_CTRL2 (0x3036) = 0xa8
> >  OV5640_REG_SC_PLL_CTRL3 (0x3037) = 0x03
> >
> > Interestingly, leaving the hard-coded values in the array *and* letting
> > ov5640_set_mipi_pclk() do its thing later still works. So again it seems
> > that writes to registers after 0x3035/0x3036/0x3037 seem to depend on the
> > values of these timing registers. You might need to leave these values as
> > dummies in the array. Confusing.
> >
> > Any idea?
> >
> >
> > Thanks,
> > Daniel
> 
> This set of patches is also not working for my MIPI platform (mine has
> a 12 MHz external clock). I am pretty sure is isn't working because it
> does not include the following, which my tests have found to be
> necessary:
> 
> 1) Setting pclk period reg in order to correct DPHY timing.
> 2) Disabling of MIPI lanes when streaming not enabled.
> 3) setting mipi_div to 1 when the scaler is disabled
> 4) Doubling ADC clock on faster resolutions.

Yeah, I left them out because I didn't think this was relevant to this
patchset but should come as future improvements. However, given that
it works with the parallel bus, maybe the two first are needed when
adjusting the rate.

The mipi divider however seems to be a bit more complicated than you
report here. It is indeed set to 1 when the scaler is enabled (all
resolutions > 1280 * 960), but it's also set to 4 in some cases
(640x480@30, 320x240@30, 176x144@30). I couldn't really find any
relationship between the resolution/framerate and whether to use a
divider of 2 or 4.

And the faster resolutions were working already, so I guess the ADC
clock is already fast enough with a 24MHz oscillator?

Maxime

-- 
Maxime Ripard, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

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

  parent reply	other threads:[~2018-05-21  7:39 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-17  8:53 [PATCH v3 00/12] media: ov5640: Misc cleanup and improvements Maxime Ripard
2018-05-17  8:53 ` [PATCH v3 01/12] media: ov5640: Fix timings setup code Maxime Ripard
2018-05-18  8:32   ` Daniel Mack
2018-05-21  7:27     ` Maxime Ripard
2018-05-17  8:53 ` [PATCH v3 02/12] media: ov5640: Adjust the clock based on the expected rate Maxime Ripard
2018-05-17  8:53 ` [PATCH v3 03/12] media: ov5640: Remove the clocks registers initialization Maxime Ripard
2018-05-18 10:35   ` Daniel Mack
2018-05-19  2:42     ` Sam Bobrowicz
2018-05-19  5:52       ` Daniel Mack
2018-05-21  7:39       ` Maxime Ripard [this message]
2018-05-22 19:54         ` Maxime Ripard
2018-05-23  9:31           ` Daniel Mack
2018-05-24 14:59             ` Maxime Ripard
2018-06-01 23:05         ` Sam Bobrowicz
2018-06-04 16:22           ` Maxime Ripard
2018-06-29 13:51           ` jacopo mondi
2018-05-17  8:53 ` [PATCH v3 04/12] media: ov5640: Remove redundant defines Maxime Ripard
2018-05-17  8:53 ` [PATCH v3 05/12] media: ov5640: Remove redundant register setup Maxime Ripard
2018-05-17  8:53 ` [PATCH v3 06/12] media: ov5640: Compute the clock rate at runtime Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 07/12] media: ov5640: Remove pixel clock rates Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 08/12] media: ov5640: Enhance FPS handling Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 09/12] media: ov5640: Make the return rate type more explicit Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 10/12] media: ov5640: Make the FPS clamping / rounding more extendable Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 11/12] media: ov5640: Add 60 fps support Maxime Ripard
2018-05-17  8:54 ` [PATCH v3 12/12] media: ov5640: Remove duplicate auto-exposure setup Maxime Ripard
2018-05-17  9:24 ` [PATCH v3 00/12] media: ov5640: Misc cleanup and improvements Daniel Mack
2018-05-17 11:22   ` Maxime Ripard
2018-05-17 11:30     ` Sakari Ailus
2018-09-27 15:59 ` Hugues FRUCHET
2018-09-28 16:05   ` Maxime Ripard
2018-10-01 14:12     ` Hugues FRUCHET
2018-10-04 15:04       ` Maxime Ripard
2018-10-04 15:17         ` Hugues FRUCHET

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=20180521073902.ayky27k5pcyfyyvc@flea \
    --to=maxime.ripard@bootlin.com \
    --cc=daniel@zonque.org \
    --cc=hans.verkuil@cisco.com \
    --cc=hugues.fruchet@st.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=loic.poulain@linaro.org \
    --cc=mchehab@kernel.org \
    --cc=mylene.josserand@bootlin.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sam@elite-embedded.com \
    --cc=slongerbeam@gmail.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 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).