Re: [PATCH] media: imx219: fix test pattern ordering and add patterns

From: Jai Luthra

Date: Fri Jun 26 2026 - 06:05:01 EST


Hi Tharit,

Thank you for the patch.

Quoting Tharit Tangkijwanichakul (2026-06-25 21:32:28)
> The test pattern menu currently maps 0 to color bars and 1 to a solid
> color, whereas the imx219 datasheet specifies the reverse layout. fix
> the ordering to align with the hardware specification.
>

I'm not aware why the order was originally switched for the control menu.
Do you have a strong reason to switch this to the datasheet values?

I ask because this might break what userspace applications expect
(libcamera) and also automated capture tests (that compare md5sums of the
test pattern) in vendor board-farms.

Moreover, given this is a menu control with (correct) string descriptions
for what pattern will be selected, I don't see why the order should
strictly match the sensor register values except that it would be "nice".

Thanks,
Jai

> Additionally, add 5 missing test patterns to complete the available
> hardware test patterns.
>
> The changes were validated on a raspberry pi 5 with an imx219 sensor
> using v4l2-ctl and rpicam-still.
>
> Signed-off-by: Tharit Tangkijwanichakul <tharitt97@xxxxxxxxx>
> ---
> drivers/media/i2c/imx219.c | 31 +++++++++++++++++++++++--------
> 1 file changed, 23 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
> index 223d3753c..8f0c04afd 100644
> --- a/drivers/media/i2c/imx219.c
> +++ b/drivers/media/i2c/imx219.c
> @@ -110,11 +110,16 @@
>
> /* Test Pattern Control */
> #define IMX219_REG_TEST_PATTERN CCI_REG16(0x0600)
> -#define IMX219_TEST_PATTERN_DISABLE 0
> -#define IMX219_TEST_PATTERN_SOLID_COLOR 1
> -#define IMX219_TEST_PATTERN_COLOR_BARS 2
> -#define IMX219_TEST_PATTERN_GREY_COLOR 3
> -#define IMX219_TEST_PATTERN_PN9 4
> +#define IMX219_TEST_PATTERN_DISABLE 0
> +#define IMX219_TEST_PATTERN_SOLID_COLOR 1
> +#define IMX219_TEST_PATTERN_COLOR_BARS 2
> +#define IMX219_TEST_PATTERN_GREY_COLOR 3
> +#define IMX219_TEST_PATTERN_PN9 4
> +#define IMX219_TEST_PATTERN_16SPLIT_COLOR_BARS 5
> +#define IMX219_TEST_PATTERN_16SPLIT_INV_COLOR_BARS 6
> +#define IMX219_TEST_PATTERN_COLUMN_COUNTER 7
> +#define IMX219_TEST_PATTERN_INV_COLUMN_COUNTER 8
> +#define IMX219_TEST_PATTERN_PN31 9
>
> /* Test pattern colour components */
> #define IMX219_REG_TESTP_RED CCI_REG16(0x0602)
> @@ -235,18 +240,28 @@ static const s64 imx219_link_freq_4lane_menu[] = {
>
> static const char * const imx219_test_pattern_menu[] = {
> "Disabled",
> - "Color Bars",
> "Solid Color",
> + "Color Bars",
> "Grey Color Bars",
> - "PN9"
> + "PN9",
> + "16 Split Color Bars",
> + "16 Split Inverted Color Bars",
> + "Column Counter",
> + "Inverted Column Counter",
> + "PN31"
> };
>
> static const int imx219_test_pattern_val[] = {
> IMX219_TEST_PATTERN_DISABLE,
> - IMX219_TEST_PATTERN_COLOR_BARS,
> IMX219_TEST_PATTERN_SOLID_COLOR,
> + IMX219_TEST_PATTERN_COLOR_BARS,
> IMX219_TEST_PATTERN_GREY_COLOR,
> IMX219_TEST_PATTERN_PN9,
> + IMX219_TEST_PATTERN_16SPLIT_COLOR_BARS,
> + IMX219_TEST_PATTERN_16SPLIT_INV_COLOR_BARS,
> + IMX219_TEST_PATTERN_COLUMN_COUNTER,
> + IMX219_TEST_PATTERN_INV_COLUMN_COUNTER,
> + IMX219_TEST_PATTERN_PN31
> };
>
> /* regulator supplies */
>
> base-commit: 06cb687a5132fcffe624c0070576ab852ac6b568
> --
> 2.53.0
>
>