All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mikhail Rudenko <mike.rudenko@gmail.com>
To: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Jacopo Mondi <jacopo@jmondi.org>,
	Tommaso Merciai <tomm.merciai@gmail.com>,
	Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	Dave Stevenson <dave.stevenson@raspberrypi.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Mikhail Rudenko <mike.rudenko@gmail.com>
Subject: [PATCH v5 00/16] Omnivision OV4689 refactoring and improvements
Date: Wed, 17 Apr 2024 01:45:08 +0300	[thread overview]
Message-ID: <20240416224524.1511357-1-mike.rudenko@gmail.com> (raw)

Hi,

this is the fourth revision of the series containing refactoring and
new features implementation for the Omnivision OV4689 sensor
driver. Specifically, patches 1, 2, 3, 5, 6, 10, 15, 16 are
refactorings, and are not supposed to introduce any functional
change. Patches 4 and 7 perform migration to CCI helpers and subdevice
active state respectively, and should not introduce any hardware-
and/or user-visible change either. Patch 8 fixes a possible race
condition due to v4l2_async_register_subdev_sensor being called too
early in ov4689_probe, and patch 9 migrates power management to PM
autosuspend.

Patches 11-14 expose more sensor controls to the userspace, such as
(read-write) HBLANK, VFLIP/HFLIP, digital gain, and color balance. It
should be noted that publicly available sensor documentation is
lacking description of many registers and their value ranges, so a lot
of values had to be found by experimentation.

Patches 17-20 from v4 are dropped and will be reintroduced as a
separate series later.

Changes in v5:
- add spaces inside {} in the register tables

Changes in v4:
- rebase on top of media_stage
- collect Reviewed-by's from v3
- add comments "Horizontal" and "Vertical" to TIMING_FORMAT registers
- fix a typo in the commit message in patch 17/20
- remove "__" prefix from stream on/off functions
- rename the label in ov4689_stream_off and remove extra space

Changes in v3:
- rebase on top of media_stage
- collect Reviewed-by and Acked-by from v2
- update copyright year
- zero-initialize ret in ov4689_set_ctrl
- get back blank line before return in ov4689_set_ctrl
- move `sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE` before
  `ov4689_initialize_controls()` in ov4689_probe
- remove blank line after `v4l2_subdev_init_finalize(sd)`
- use pm_runtime_put instead of pm_runtime_put_sync
- add comment for dummy columns/rows defines
- fix OV4689_PIXEL_ARRAY_WIDTH use instead of OV4689_PIXEL_ARRAY_HEIGHT
  in ov4689_get_selection
- split s_stream into two functions for start and stop

Changes in v2:
- collect Laurent's r-b's
- squash together "CCI conversion" and "Set gain in one 16 bit write"
- use ctrl->val in ov4689_set_ctrl
- rename try_fmt to fmt in ov4689_init_cfg and drop corresponding comment
- rebase on top of media-stage and rename init_cfg->init_state
- sort register definitions by address throughout the whole series
- fix number of controls hint in v4l2_ctrl_handler_init
- make all hexadecimal constants lowercase
- disable runtime pm in probe error path
- implement pm autosuspend


Mikhail Rudenko (16):
  media: i2c: ov4689: Clean up and annotate the register table
  media: i2c: ov4689: Sort register definitions by address
  media: i2c: ov4689: Fix typo in a comment
  media: i2c: ov4689: CCI conversion
  media: i2c: ov4689: Remove i2c_client from ov4689 struct
  media: i2c: ov4689: Refactor ov4689_set_ctrl
  media: i2c: ov4689: Use sub-device active state
  media: i2c: ov4689: Enable runtime PM before registering sub-device
  media: i2c: ov4689: Use runtime PM autosuspend
  media: i2c: ov4689: Remove max_fps field from struct ov4689_mode
  media: i2c: ov4689: Make horizontal blanking configurable
  media: i2c: ov4689: Implement vflip/hflip controls
  media: i2c: ov4689: Implement digital gain control
  media: i2c: ov4689: Implement manual color balance controls
  media: i2c: ov4689: Move pixel array size out of struct ov4689_mode
  media: i2c: ov4689: Set timing registers programmatically

 drivers/media/i2c/Kconfig  |   1 +
 drivers/media/i2c/ov4689.c | 671 ++++++++++++++++++++-----------------
 2 files changed, 359 insertions(+), 313 deletions(-)

--
2.44.0

             reply	other threads:[~2024-04-16 22:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16 22:45 Mikhail Rudenko [this message]
2024-04-16 22:45 ` [PATCH v5 01/16] media: i2c: ov4689: Clean up and annotate the register table Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 02/16] media: i2c: ov4689: Sort register definitions by address Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 03/16] media: i2c: ov4689: Fix typo in a comment Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 04/16] media: i2c: ov4689: CCI conversion Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 05/16] media: i2c: ov4689: Remove i2c_client from ov4689 struct Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 06/16] media: i2c: ov4689: Refactor ov4689_set_ctrl Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 07/16] media: i2c: ov4689: Use sub-device active state Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 08/16] media: i2c: ov4689: Enable runtime PM before registering sub-device Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 09/16] media: i2c: ov4689: Use runtime PM autosuspend Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 10/16] media: i2c: ov4689: Remove max_fps field from struct ov4689_mode Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 11/16] media: i2c: ov4689: Make horizontal blanking configurable Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 12/16] media: i2c: ov4689: Implement vflip/hflip controls Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 13/16] media: i2c: ov4689: Implement digital gain control Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 14/16] media: i2c: ov4689: Implement manual color balance controls Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 15/16] media: i2c: ov4689: Move pixel array size out of struct ov4689_mode Mikhail Rudenko
2024-04-16 22:45 ` [PATCH v5 16/16] media: i2c: ov4689: Set timing registers programmatically Mikhail Rudenko

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=20240416224524.1511357-1-mike.rudenko@gmail.com \
    --to=mike.rudenko@gmail.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=jacopo@jmondi.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomm.merciai@gmail.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.