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

Jai Luthra <[email protected]> Fri, 26 Jun 2026 15:34:01 +0530
Newsgroups dev.linux.lists.linux-kernel-mentees,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media
Message-ID <178246824177.1799417.1678746966574660598@freya>
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 <[email protected]>
> ---
>  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
> 
>