History log of /openbmc/linux/drivers/media/i2c/imx290.c (Results 101 – 125 of 204)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 3dd10515 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Replace GAIN control with ANALOGUE_GAIN

The IMX290 gain register controls the analogue gain. Replace the
V4L2_CID_GAIN control with V4L2_CID_ANALOGUE_GAIN.

Signed-off-by: Lauren

media: i2c: imx290: Replace GAIN control with ANALOGUE_GAIN

The IMX290 gain register controls the analogue gain. Replace the
V4L2_CID_GAIN control with V4L2_CID_ANALOGUE_GAIN.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# b4ab57b0 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Add crop selection targets support

Implement read-only access to crop selection rectangles to expose the
analogue crop rectangle. The public (leaked) IMX290 documentation is not

media: i2c: imx290: Add crop selection targets support

Implement read-only access to crop selection rectangles to expose the
analogue crop rectangle. The public (leaked) IMX290 documentation is not
very clear on how cropping is implemented and configured exactly, so
the margins may not be entirely accurate.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# b25537ef 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Factor out format retrieval to separate function

The driver duplicates the same pattern to access the try or active
format in multiple locations. Factor it out to a separate func

media: i2c: imx290: Factor out format retrieval to separate function

The driver duplicates the same pattern to access the try or active
format in multiple locations. Factor it out to a separate function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 0b274ef2 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Move registers with fixed value to init array

Registers 0x3012, 0x3013 and 0x3480 are not documented and are set in
the per-mode register arrays with values indentical for all mo

media: i2c: imx290: Move registers with fixed value to init array

Registers 0x3012, 0x3013 and 0x3480 are not documented and are set in
the per-mode register arrays with values indentical for all modes. Move
them to the common array.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 4c9c93cf 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Create controls for fwnode properties

Create the V4L2_CID_ORIENTATION and V4L2_CID_ROTATION controls to
expose the corresponding fwnode properties.

Signed-off-by: Laurent Pincha

media: i2c: imx290: Create controls for fwnode properties

Create the V4L2_CID_ORIENTATION and V4L2_CID_ROTATION controls to
expose the corresponding fwnode properties.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 0c3b56c9 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Implement HBLANK and VBLANK controls

Add support for the V4L2_CID_HBLANK and V4L2_CID_VBLANK controls to the
imx290 driver. Make the controls read-only to start with, to report t

media: i2c: imx290: Implement HBLANK and VBLANK controls

Add support for the V4L2_CID_HBLANK and V4L2_CID_VBLANK controls to the
imx290 driver. Make the controls read-only to start with, to report the
values to userspace for timing calculation.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 72c87b7a 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Split control initialization to separate function

The imx290_probe() function is too large. Split control initialzation to
a dedicated function to increase code readability.

Sig

media: i2c: imx290: Split control initialization to separate function

The imx290_probe() function is too large. Split control initialzation to
a dedicated function to increase code readability.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 6d7a87f2 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Fix max gain value

The gain is expressed in multiple of 0.3dB, as a value between 0.0dB
and 72.0dB. Gains between 0.0dB and 30.0dB (included) apply analog gain
only, higher gains

media: i2c: imx290: Fix max gain value

The gain is expressed in multiple of 0.3dB, as a value between 0.0dB
and 72.0dB. Gains between 0.0dB and 30.0dB (included) apply analog gain
only, higher gains from 30.3dB to 72dB apply additional digital gain.

The maximum gain value is erroneously set to 72. Increase it to 100 to
cover the whole analog gain range. Support for digital gain can be added
separately if needed.

The IMX327 and IMX462 are largely compatible with the IMX290, but have
an analog gain range of 0.0dB to 29.4dB and 42dB of digital gain. When
support for those sensors gets added to the driver, the gain control
should be adjusted accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 827c7e69 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Add exposure time control

Support configuring the exposure time, which is expressed as the
complement of the exposure time (frame period minus integration time).
The frame period

media: i2c: imx290: Add exposure time control

Support configuring the exposure time, which is expressed as the
complement of the exposure time (frame period minus integration time).
The frame period is currently fixed.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 79d99ae8 17-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Define more register macros

Define macros for all registers programmed by the driver for which
documentation is available to increase readability. This starts making
use of 16-bi

media: i2c: imx290: Define more register macros

Define macros for all registers programmed by the driver for which
documentation is available to increase readability. This starts making
use of 16-bit registers in the register arrays, so the value field has
to be increased to 32 bits.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# e611f3da 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Simplify error handling when writing registers

Error handling for register writes requires checking the error status of
every single write. This makes the code complex, or incorr

media: i2c: imx290: Simplify error handling when writing registers

Error handling for register writes requires checking the error status of
every single write. This makes the code complex, or incorrect when the
checks are omitted. Simplify this by passing a pointer to an error code
to the imx290_write_reg() function, which allows writing multiple
registers in a row and only checking for errors at the end.

While at it, rename imx290_write_reg() to imx290_write() as there's
nothing else than registers to write, and rename imx290_read_reg()
accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 454a86f3 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Correct register sizes

Define registers with the appropriate size, using the variable-size
register access mechanism that has just been introduced. This simplifies
the code.

Sig

media: i2c: imx290: Correct register sizes

Define registers with the appropriate size, using the variable-size
register access mechanism that has just been introduced. This simplifies
the code.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# e70abe88 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Support variable-sized registers

The IMX290 has registers of different sizes. To simplify the code,
handle this in the read/write functions instead of in the callers by
encoding

media: i2c: imx290: Support variable-sized registers

The IMX290 has registers of different sizes. To simplify the code,
handle this in the read/write functions instead of in the callers by
encoding the register size in the symbolic name macros. All registers
are defined as 8-bit for now, a subsequent change will move to larger
registers where applicable.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 72825bc6 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Specify HMAX values in decimal

The HMAX value specifies the total line length in pixels. It's thus more
readable in decimal than hexadecimal. Fix it.

Signed-off-by: Laurent Pinc

media: i2c: imx290: Specify HMAX values in decimal

The HMAX value specifies the total line length in pixels. It's thus more
readable in decimal than hexadecimal. Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 72e4bf6d 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Drop regmap cache

Only two registers are ever read, and once only. There's no need to
cache values.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-

media: i2c: imx290: Drop regmap cache

Only two registers are ever read, and once only. There's no need to
cache values.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# b817888a 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Drop imx290_write_buffered_reg()

The imx290_write_buffered_reg() function wraps a register write with
register hold, to enable changing multiple registers synchronously. It
is us

media: i2c: imx290: Drop imx290_write_buffered_reg()

The imx290_write_buffered_reg() function wraps a register write with
register hold, to enable changing multiple registers synchronously. It
is used for the gain only, which is an 8-bit register, defeating its
purpose.

The feature is useful, but should be implemented differently. Drop the
function for now, to prepare for a rework of register access.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 2548df53 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Replace macro with explicit ARRAY_SIZE()

Use ARRAY_SIZE(imx290->supplies) for code that needs the size of the
array, instead of relying on the IMX290_NUM_SUPPLIES. The result is

media: i2c: imx290: Replace macro with explicit ARRAY_SIZE()

Use ARRAY_SIZE(imx290->supplies) for code that needs the size of the
array, instead of relying on the IMX290_NUM_SUPPLIES. The result is less
error-prone as it ties the size to the array.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# fbe0a89d 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Print error code when I2C transfer fails

Knowing why I2C transfers fail is useful for debugging. Extend the error
message to print the error code.

Signed-off-by: Laurent Pinchar

media: i2c: imx290: Print error code when I2C transfer fails

Knowing why I2C transfers fail is useful for debugging. Extend the error
message to print the error code.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 08878cbc 16-Oct-2022 Laurent Pinchart <laurent.pinchart@ideasonboard.com>

media: i2c: imx290: Use device lock for the control handler

The link frequency and pixel rate controls are set without holding the
control handler lock, resulting in kernel warnings. As the value of

media: i2c: imx290: Use device lock for the control handler

The link frequency and pixel rate controls are set without holding the
control handler lock, resulting in kernel warnings. As the value of
those controls depend on the format, the simplest fix is to use the
device lock for the control handler.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

show more ...


# 14e77332 21-Oct-2022 Nick Terrell <terrelln@fb.com>

Merge branch 'main' into zstd-next


# 1aca5ce0 20-Oct-2022 Thomas Zimmermann <tzimmermann@suse.de>

Merge drm/drm-fixes into drm-misc-fixes

Backmerging to get v6.1-rc1.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>


# 008f05a7 19-Oct-2022 Mark Brown <broonie@kernel.org>

ASoC: jz4752b: Capture fixes

Merge series from Siarhei Volkau <lis8215@gmail.com>:

The patchset fixes:
- Line In path stays powered off during capturing or
bypass to mixer.
- incorrectly repre

ASoC: jz4752b: Capture fixes

Merge series from Siarhei Volkau <lis8215@gmail.com>:

The patchset fixes:
- Line In path stays powered off during capturing or
bypass to mixer.
- incorrectly represented dB values in alsamixer, et al.
- incorrect represented Capture input selector in alsamixer
in Playback tab.
- wrong control selected as Capture Master

show more ...


# a140a6a2 18-Oct-2022 Maxime Ripard <maxime@cerno.tech>

Merge drm/drm-next into drm-misc-next

Let's kick-off this release cycle.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>


# 8048b835 16-Oct-2022 Andrew Morton <akpm@linux-foundation.org>

Merge branch 'master' into mm-hotfixes-stable


Revision tags: v6.0.2, v5.15.74, v5.15.73, v6.0.1
# 5f8f8574 10-Oct-2022 Dmitry Torokhov <dmitry.torokhov@gmail.com>

Merge branch 'next' into for-linus

Prepare input updates for 6.1 merge window.


123456789