#
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.
|