All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-media@vger.kernel.org,
	Manivannan Sadhasivam <mani@kernel.org>,
	Sakari Ailus <sakari.ailus@iki.fi>
Subject: Re: Re: [PATCH 10/19] media: i2c: imx290: Define more register macros
Date: Thu, 21 Jul 2022 13:28:34 +0200	[thread overview]
Message-ID: <14662940.dW097sEU6C@steina-w> (raw)
In-Reply-To: <YtkzlfWXKl2hZKy0@pendragon.ideasonboard.com>

Hi Laurent,

Am Donnerstag, 21. Juli 2022, 13:08:05 CEST schrieb Laurent Pinchart:
> Hi Alexander,
> 
> On Thu, Jul 21, 2022 at 12:00:55PM +0200, Alexander Stein wrote:
> > Am Donnerstag, 21. Juli 2022, 10:35:31 CEST schrieb Laurent Pinchart:
> > > 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>
> > > ---
> > > 
> > >  drivers/media/i2c/imx290.c | 219 +++++++++++++++++++++----------------
> > >  1 file changed, 124 insertions(+), 95 deletions(-)
> > > 
> > > diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
> > > index 5b7f9027b50f..bec326a83952 100644
> > > --- a/drivers/media/i2c/imx290.c
> > > +++ b/drivers/media/i2c/imx290.c
> > > @@ -31,14 +31,73 @@
> > > 
> > >  #define IMX290_STANDBY					
IMX290_REG_8BIT(0x3000)
> > >  #define IMX290_REGHOLD					
IMX290_REG_8BIT(0x3001)
> > >  #define IMX290_XMSTA					
IMX290_REG_8BIT(0x3002)
> > > 
> > > +#define IMX290_ADBIT					
IMX290_REG_8BIT(0x3005)
> > > +#define IMX290_ADBIT_10BIT				(0 << 0)
> > > +#define IMX290_ADBIT_12BIT				(1 << 0)
> > > +#define IMX290_CTRL_07					
IMX290_REG_8BIT(0x3007)
> > > +#define IMX290_VREVERSE					
BIT(0)
> > > +#define IMX290_HREVERSE					
BIT(1)
> > > +#define IMX290_WINMODE_1080P				
(0 << 4)
> > > +#define IMX290_WINMODE_720P				
(1 << 4)
> > > +#define IMX290_WINMODE_CROP				
(4 << 4)
> > > 
> > >  #define IMX290_FR_FDG_SEL				
IMX290_REG_8BIT(0x3009)
> > >  #define IMX290_BLKLEVEL					
IMX290_REG_16BIT(0x300a)
> > >  #define IMX290_GAIN					
IMX290_REG_8BIT(0x3014)
> > > 
> > > +#define IMX290_VMAX					
IMX290_REG_24BIT(0x3018)
> > > 
> > >  #define IMX290_HMAX					
IMX290_REG_16BIT(0x301c)
> > > 
> > > +#define IMX290_SHS1					
IMX290_REG_24BIT(0x3020)
> > > +#define IMX290_WINWV_OB					
IMX290_REG_8BIT(0x303a)
> > > +#define IMX290_WINPV					
IMX290_REG_16BIT(0x303c)
> > > +#define IMX290_WINWV					
IMX290_REG_16BIT(0x303e)
> > > +#define IMX290_WINPH					
IMX290_REG_16BIT(0x3040)
> > > +#define IMX290_WINWH					
IMX290_REG_16BIT(0x3042)
> > > +#define IMX290_OUT_CTRL					
IMX290_REG_8BIT(0x3046)
> > > +#define IMX290_ODBIT_10BIT				(0 << 0)
> > > +#define IMX290_ODBIT_12BIT				(1 << 0)
> > 
> > ODBIT is fixed 1h for MIPI-CSI-2 output.
> > 
> > > +#define IMX290_OPORTSEL_PARALLEL			(0x0 << 4)
> > > +#define IMX290_OPORTSEL_LVDS_2CH			(0xd << 4)
> > > +#define IMX290_OPORTSEL_LVDS_4CH			(0xe << 4)
> > > +#define IMX290_OPORTSEL_LVDS_8CH			(0xf << 4)
> > 
> > This driver only supports MIPI-CSI-2 output, but these bits are don't
> > care,
> > you still want to list them here for completeness?
> 
> Yes, it could be useful later.

Ok, fine with me.

> > > +#define IMX290_XSOUTSEL					
IMX290_REG_8BIT(0x304b)
> > > +#define IMX290_XSOUTSEL_XVSOUTSEL_HIGH			
(0 << 0)
> > > +#define IMX290_XSOUTSEL_XVSOUTSEL_VSYNC			
(2 << 0)
> > > +#define IMX290_XSOUTSEL_XHSOUTSEL_HIGH			
(0 << 2)
> > > +#define IMX290_XSOUTSEL_XHSOUTSEL_HSYNC			
(2 << 2)
> > > +#define IMX290_INCKSEL1					
IMX290_REG_8BIT(0x305c)
> > > +#define IMX290_INCKSEL2					
IMX290_REG_8BIT(0x305d)
> > > +#define IMX290_INCKSEL3					
IMX290_REG_8BIT(0x305e)
> > > +#define IMX290_INCKSEL4					
IMX290_REG_8BIT(0x305f)
> > > 
> > >  #define IMX290_PGCTRL					
IMX290_REG_8BIT(0x308c)
> > > 
> > > +#define IMX290_ADBIT1					
IMX290_REG_8BIT(0x3129)
> > > +#define IMX290_ADBIT1_10BIT				
0x1d
> > > +#define IMX290_ADBIT1_12BIT				
0x00
> > > +#define IMX290_INCKSEL5					
IMX290_REG_8BIT(0x315e)
> > > +#define IMX290_INCKSEL6					
IMX290_REG_8BIT(0x3164)
> > 
> > Any reason to skip the bit defines for both supported input clocks?
> 
> I don't have access to information that describes the bits in those two
> registers, just magic values for the 37.125 MHz and 74.25 MHz input
> clocks. Would you happen to know more ?

See [1] and line 354 as well. This register is depending on the external 
clock.

[1] https://github.com/tq-systems/linux-tqmaxx/blob/TQMa8-fslc-5.10-2.1.x-imx/
drivers/media/i2c/imx290.c#L344

> > > +#define IMX290_ADBIT2					
IMX290_REG_8BIT(0x317c)
> > > +#define IMX290_ADBIT2_10BIT				
0x12
> > > +#define IMX290_ADBIT2_12BIT				
0x00
> > > 
> > >  #define IMX290_CHIP_ID					
IMX290_REG_16BIT(0x319a)
> > > 
> > > +#define IMX290_ADBIT3					
IMX290_REG_16BIT(0x31ec)
> > > +#define IMX290_ADBIT3_10BIT				
0x37
> > > +#define IMX290_ADBIT3_12BIT				
0x0e
> > > +#define IMX290_REPETITION				
IMX290_REG_8BIT(0x3405)
> > > 
> > >  #define IMX290_PHY_LANE_NUM				
IMX290_REG_8BIT(0x3407)
> > > 
> > > +#define IMX290_OPB_SIZE_V				
IMX290_REG_8BIT(0x3414)
> > > +#define IMX290_Y_OUT_SIZE				
IMX290_REG_16BIT(0x3418)
> > > +#define IMX290_CSI_DT_FMT				
IMX290_REG_16BIT(0x3441)
> > > +#define IMX290_CSI_DT_FMT_RAW10				
0x0a0a
> > > +#define IMX290_CSI_DT_FMT_RAW12				
0x0c0c
> > > 
> > >  #define IMX290_CSI_LANE_MODE				
IMX290_REG_8BIT(0x3443)
> > > 
> > > +#define IMX290_EXTCK_FREQ				
IMX290_REG_16BIT(0x3444)
> > 
> > Same here.
> 
> Same explanation as above :-)

This register also depends on external clock, see [2] and line 228 as well.

[2] https://github.com/tq-systems/linux-tqmaxx/blob/TQMa8-fslc-5.10-2.1.x-imx/
drivers/media/i2c/imx290.c#L218

Best regards,
Alexander

> > > +#define IMX290_TCLKPOST					
IMX290_REG_16BIT(0x3446)
> > > +#define IMX290_THSZERO					
IMX290_REG_16BIT(0x3448)
> > > +#define IMX290_THSPREPARE				
IMX290_REG_16BIT(0x344a)
> > > +#define IMX290_TCLKTRAIL				
IMX290_REG_16BIT(0x344c)
> > > +#define IMX290_THSTRAIL					
IMX290_REG_16BIT(0x344e)
> > > +#define IMX290_TCLKZERO					
IMX290_REG_16BIT(0x3450)
> > > +#define IMX290_TCLKPREPARE				
IMX290_REG_16BIT(0x3452)
> > > +#define IMX290_TLPX					
IMX290_REG_16BIT(0x3454)
> > > +#define IMX290_X_OUT_SIZE				
IMX290_REG_16BIT(0x3472)
> > > 
> > >  #define IMX290_PGCTRL_REGEN				
BIT(0)
> > >  #define IMX290_PGCTRL_THRU				BIT(1)
> > > 
> > > @@ -54,7 +113,7 @@ static const char * const imx290_supply_name[] = {
> > > 
> > >  struct imx290_regval {
> > >  
> > >  	u32 reg;
> > > 
> > > -	u8 val;
> > > +	u32 val;
> > > 
> > >  };
> > >  
> > >  struct imx290_mode {
> > > 
> > > @@ -116,22 +175,16 @@ static const char * const
> > > imx290_test_pattern_menu[] = { };
> > > 
> > >  static const struct imx290_regval imx290_global_init_settings[] = {
> > > 
> > > -	{ IMX290_REG_8BIT(0x3007), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3018), 0x65 },
> > > -	{ IMX290_REG_8BIT(0x3019), 0x04 },
> > > -	{ IMX290_REG_8BIT(0x301a), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3444), 0x20 },
> > > -	{ IMX290_REG_8BIT(0x3445), 0x25 },
> > > -	{ IMX290_REG_8BIT(0x303a), 0x0c },
> > > -	{ IMX290_REG_8BIT(0x3040), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3041), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x303c), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x303d), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3042), 0x9c },
> > > -	{ IMX290_REG_8BIT(0x3043), 0x07 },
> > > -	{ IMX290_REG_8BIT(0x303e), 0x49 },
> > > -	{ IMX290_REG_8BIT(0x303f), 0x04 },
> > > -	{ IMX290_REG_8BIT(0x304b), 0x0a },
> > > +	{ IMX290_CTRL_07, IMX290_WINMODE_1080P },
> > > +	{ IMX290_VMAX, 1125 },
> > > +	{ IMX290_EXTCK_FREQ, 0x2520 },
> > > +	{ IMX290_WINWV_OB, 12 },
> > > +	{ IMX290_WINPH, 0 },
> > > +	{ IMX290_WINPV, 0 },
> > > +	{ IMX290_WINWH, 1948 },
> > > +	{ IMX290_WINWV, 1097 },
> > > +	{ IMX290_XSOUTSEL, IMX290_XSOUTSEL_XVSOUTSEL_VSYNC |
> > > +			   IMX290_XSOUTSEL_XHSOUTSEL_HSYNC },
> > > 
> > >  	{ IMX290_REG_8BIT(0x300f), 0x00 },
> > >  	{ IMX290_REG_8BIT(0x3010), 0x21 },
> > >  	{ IMX290_REG_8BIT(0x3012), 0x64 },
> > > 
> > > @@ -177,102 +230,78 @@ static const struct imx290_regval
> > > imx290_global_init_settings[] = {
> > > 
> > >  static const struct imx290_regval imx290_1080p_settings[] = {
> > >  
> > >  	/* mode settings */
> > > 
> > > -	{ IMX290_REG_8BIT(0x3007), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x303a), 0x0c },
> > > -	{ IMX290_REG_8BIT(0x3414), 0x0a },
> > > -	{ IMX290_REG_8BIT(0x3472), 0x80 },
> > > -	{ IMX290_REG_8BIT(0x3473), 0x07 },
> > > -	{ IMX290_REG_8BIT(0x3418), 0x38 },
> > > -	{ IMX290_REG_8BIT(0x3419), 0x04 },
> > > +	{ IMX290_CTRL_07, IMX290_WINMODE_1080P },
> > > +	{ IMX290_WINWV_OB, 12 },
> > > +	{ IMX290_OPB_SIZE_V, 10 },
> > > +	{ IMX290_X_OUT_SIZE, 1920 },
> > > +	{ IMX290_Y_OUT_SIZE, 1080 },
> > > 
> > >  	{ IMX290_REG_8BIT(0x3012), 0x64 },
> > >  	{ IMX290_REG_8BIT(0x3013), 0x00 },
> > > 
> > > -	{ IMX290_REG_8BIT(0x305c), 0x18 },
> > > -	{ IMX290_REG_8BIT(0x305d), 0x03 },
> > > -	{ IMX290_REG_8BIT(0x305e), 0x20 },
> > > -	{ IMX290_REG_8BIT(0x305f), 0x01 },
> > > -	{ IMX290_REG_8BIT(0x315e), 0x1a },
> > > -	{ IMX290_REG_8BIT(0x3164), 0x1a },
> > > +	{ IMX290_INCKSEL1, 0x18 },
> > > +	{ IMX290_INCKSEL2, 0x03 },
> > > +	{ IMX290_INCKSEL3, 0x20 },
> > > +	{ IMX290_INCKSEL4, 0x01 },
> > > +	{ IMX290_INCKSEL5, 0x1a },
> > > +	{ IMX290_INCKSEL6, 0x1a },
> > > 
> > >  	{ IMX290_REG_8BIT(0x3480), 0x49 },
> > >  	/* data rate settings */
> > > 
> > > -	{ IMX290_REG_8BIT(0x3405), 0x10 },
> > > -	{ IMX290_REG_8BIT(0x3446), 0x57 },
> > > -	{ IMX290_REG_8BIT(0x3447), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3448), 0x37 },
> > > -	{ IMX290_REG_8BIT(0x3449), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344a), 0x1f },
> > > -	{ IMX290_REG_8BIT(0x344b), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344c), 0x1f },
> > > -	{ IMX290_REG_8BIT(0x344d), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344e), 0x1f },
> > > -	{ IMX290_REG_8BIT(0x344f), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3450), 0x77 },
> > > -	{ IMX290_REG_8BIT(0x3451), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3452), 0x1f },
> > > -	{ IMX290_REG_8BIT(0x3453), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3454), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x3455), 0x00 },
> > > +	{ IMX290_REPETITION, 0x10 },
> > > +	{ IMX290_TCLKPOST, 87 },
> > > +	{ IMX290_THSZERO, 55 },
> > > +	{ IMX290_THSPREPARE, 31 },
> > > +	{ IMX290_TCLKTRAIL, 31 },
> > > +	{ IMX290_THSTRAIL, 31 },
> > > +	{ IMX290_TCLKZERO, 119 },
> > > +	{ IMX290_TCLKPREPARE, 31 },
> > > +	{ IMX290_TLPX, 23 },
> > > 
> > >  };
> > >  
> > >  static const struct imx290_regval imx290_720p_settings[] = {
> > >  
> > >  	/* mode settings */
> > > 
> > > -	{ IMX290_REG_8BIT(0x3007), 0x10 },
> > > -	{ IMX290_REG_8BIT(0x303a), 0x06 },
> > > -	{ IMX290_REG_8BIT(0x3414), 0x04 },
> > > -	{ IMX290_REG_8BIT(0x3472), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3473), 0x05 },
> > > -	{ IMX290_REG_8BIT(0x3418), 0xd0 },
> > > -	{ IMX290_REG_8BIT(0x3419), 0x02 },
> > > +	{ IMX290_CTRL_07, IMX290_WINMODE_720P },
> > > +	{ IMX290_WINWV_OB, 6 },
> > > +	{ IMX290_OPB_SIZE_V, 4 },
> > > +	{ IMX290_X_OUT_SIZE, 1280 },
> > > +	{ IMX290_Y_OUT_SIZE, 720 },
> > > 
> > >  	{ IMX290_REG_8BIT(0x3012), 0x64 },
> > >  	{ IMX290_REG_8BIT(0x3013), 0x00 },
> > > 
> > > -	{ IMX290_REG_8BIT(0x305c), 0x20 },
> > > -	{ IMX290_REG_8BIT(0x305d), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x305e), 0x20 },
> > > -	{ IMX290_REG_8BIT(0x305f), 0x01 },
> > > -	{ IMX290_REG_8BIT(0x315e), 0x1a },
> > > -	{ IMX290_REG_8BIT(0x3164), 0x1a },
> > > +	{ IMX290_INCKSEL1, 0x20 },
> > > +	{ IMX290_INCKSEL2, 0x00 },
> > > +	{ IMX290_INCKSEL3, 0x20 },
> > > +	{ IMX290_INCKSEL4, 0x01 },
> > > +	{ IMX290_INCKSEL5, 0x1a },
> > > +	{ IMX290_INCKSEL6, 0x1a },
> > > 
> > >  	{ IMX290_REG_8BIT(0x3480), 0x49 },
> > >  	/* data rate settings */
> > > 
> > > -	{ IMX290_REG_8BIT(0x3405), 0x10 },
> > > -	{ IMX290_REG_8BIT(0x3446), 0x4f },
> > > -	{ IMX290_REG_8BIT(0x3447), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3448), 0x2f },
> > > -	{ IMX290_REG_8BIT(0x3449), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344a), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x344b), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344c), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x344d), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x344e), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x344f), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3450), 0x57 },
> > > -	{ IMX290_REG_8BIT(0x3451), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3452), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x3453), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x3454), 0x17 },
> > > -	{ IMX290_REG_8BIT(0x3455), 0x00 },
> > > +	{ IMX290_REPETITION, 0x10 },
> > > +	{ IMX290_TCLKPOST, 79 },
> > > +	{ IMX290_THSZERO, 47 },
> > > +	{ IMX290_THSPREPARE, 23 },
> > > +	{ IMX290_TCLKTRAIL, 23 },
> > > +	{ IMX290_THSTRAIL, 23 },
> > > +	{ IMX290_TCLKZERO, 87 },
> > > +	{ IMX290_TCLKPREPARE, 23 },
> > > +	{ IMX290_TLPX, 23 },
> > > 
> > >  };
> > >  
> > >  static const struct imx290_regval imx290_10bit_settings[] = {
> > > 
> > > -	{ IMX290_REG_8BIT(0x3005), 0x00},
> > > -	{ IMX290_REG_8BIT(0x3046), 0x00},
> > > -	{ IMX290_REG_8BIT(0x3129), 0x1d},
> > > -	{ IMX290_REG_8BIT(0x317c), 0x12},
> > > -	{ IMX290_REG_8BIT(0x31ec), 0x37},
> > > -	{ IMX290_REG_8BIT(0x3441), 0x0a},
> > > -	{ IMX290_REG_8BIT(0x3442), 0x0a},
> > > -	{ IMX290_REG_8BIT(0x300a), 0x3c},
> > > -	{ IMX290_REG_8BIT(0x300b), 0x00},
> > > +	{ IMX290_ADBIT, IMX290_ADBIT_10BIT },
> > > +	{ IMX290_OUT_CTRL, IMX290_ODBIT_10BIT },
> > > +	{ IMX290_ADBIT1, IMX290_ADBIT1_10BIT },
> > > +	{ IMX290_ADBIT2, IMX290_ADBIT2_10BIT },
> > > +	{ IMX290_ADBIT3, IMX290_ADBIT3_10BIT },
> > > +	{ IMX290_CSI_DT_FMT, IMX290_CSI_DT_FMT_RAW10 },
> > > +	{ IMX290_BLKLEVEL, 60 },
> > > 
> > >  };
> > >  
> > >  static const struct imx290_regval imx290_12bit_settings[] = {
> > > 
> > > -	{ IMX290_REG_8BIT(0x3005), 0x01 },
> > > -	{ IMX290_REG_8BIT(0x3046), 0x01 },
> > > -	{ IMX290_REG_8BIT(0x3129), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x317c), 0x00 },
> > > -	{ IMX290_REG_8BIT(0x31ec), 0x0e },
> > > -	{ IMX290_REG_8BIT(0x3441), 0x0c },
> > > -	{ IMX290_REG_8BIT(0x3442), 0x0c },
> > > -	{ IMX290_REG_8BIT(0x300a), 0xf0 },
> > > -	{ IMX290_REG_8BIT(0x300b), 0x00 },
> > > +	{ IMX290_ADBIT, IMX290_ADBIT_12BIT },
> > > +	{ IMX290_OUT_CTRL, IMX290_ODBIT_12BIT },
> > > +	{ IMX290_ADBIT1, IMX290_ADBIT1_12BIT },
> > > +	{ IMX290_ADBIT2, IMX290_ADBIT2_12BIT },
> > > +	{ IMX290_ADBIT3, IMX290_ADBIT3_12BIT },
> > > +	{ IMX290_CSI_DT_FMT, IMX290_CSI_DT_FMT_RAW12 },
> > > +	{ IMX290_BLKLEVEL, 240 },
> > > 
> > >  };
> > >  
> > >  /* supported link frequencies */





  reply	other threads:[~2022-07-21 11:28 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-21  8:35 [PATCH 00/19] media: i2c: imx290: Miscellaneous improvements Laurent Pinchart
2022-07-21  8:35 ` [PATCH 01/19] media: i2c: imx290: Use device lock for the control handler Laurent Pinchart
2022-07-21  9:22   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 02/19] media: i2c: imx290: Print error code when I2C transfer fails Laurent Pinchart
2022-07-21  9:23   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 03/19] media: i2c: imx290: Specify HMAX values in decimal Laurent Pinchart
2022-07-21  9:18   ` Alexander Stein
2022-07-21 11:31     ` Laurent Pinchart
2022-07-21 11:54       ` Alexander Stein
2022-07-21 12:04         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 04/19] media: i2c: imx290: Replace macro with explicit ARRAY_SIZE() Laurent Pinchart
2022-07-21  9:23   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 05/19] media: i2c: imx290: Drop imx290_write_buffered_reg() Laurent Pinchart
2022-07-21  9:24   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 06/19] media: i2c: imx290: Drop regmap cache Laurent Pinchart
2022-07-21  9:27   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 07/19] media: i2c: imx290: Support variable-sized registers Laurent Pinchart
2022-07-21  9:43   ` Alexander Stein
2022-07-21 10:54     ` Laurent Pinchart
2022-07-21 11:18       ` Alexander Stein
2022-07-21 11:25         ` Laurent Pinchart
2022-07-21 11:43           ` Alexander Stein
2022-07-22 14:37             ` Sakari Ailus
2022-07-23 23:06               ` Laurent Pinchart
2022-07-25  6:49                 ` Alexander Stein
2022-08-23  1:08                   ` Laurent Pinchart
2022-08-23  2:51                     ` Laurent Pinchart
2022-08-23  7:19                       ` Alexander Stein
2022-10-16  5:36                         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 08/19] media: i2c: imx290: Correct register sizes Laurent Pinchart
2022-07-21  8:35 ` [PATCH 09/19] media: i2c: imx290: Simplify error handling when writing registers Laurent Pinchart
2022-07-21  9:50   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 10/19] media: i2c: imx290: Define more register macros Laurent Pinchart
2022-07-21 10:00   ` Alexander Stein
2022-07-21 11:08     ` Laurent Pinchart
2022-07-21 11:28       ` Alexander Stein [this message]
2022-10-16  4:27         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 11/19] media: i2c: imx290: Add exposure time control Laurent Pinchart
2022-07-21 10:01   ` Alexander Stein
2022-07-21 15:52   ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 12/19] media: i2c: imx290: Fix max gain value Laurent Pinchart
2022-07-21 10:02   ` Alexander Stein
2022-07-21 16:08   ` Dave Stevenson
2022-10-16  4:51     ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 13/19] media: i2c: imx290: Split control initialization to separate function Laurent Pinchart
2022-07-21 10:03   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 14/19] media: i2c: imx290: Implement HBLANK and VBLANK controls Laurent Pinchart
2022-07-21 10:05   ` Alexander Stein
2022-07-21 11:17     ` Laurent Pinchart
2022-07-21 11:32       ` Alexander Stein
2022-07-21 16:37         ` Dave Stevenson
2022-10-16  6:10           ` Laurent Pinchart
2022-10-17 13:46             ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 15/19] media: i2c: imx290: Create controls for fwnode properties Laurent Pinchart
2022-07-21 10:06   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 16/19] media: i2c: imx290: Move registers with fixed value to init array Laurent Pinchart
2022-07-21 10:08   ` Alexander Stein
2022-07-21 10:40     ` Laurent Pinchart
2022-07-21 11:08       ` Alexander Stein
2022-07-21 16:19         ` Dave Stevenson
2022-07-22  5:53           ` Alexander Stein
2022-07-22  9:10             ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 17/19] media: i2c: imx290: Factor out format retrieval to separate function Laurent Pinchart
2022-07-21 10:11   ` Alexander Stein
2022-07-21 10:36     ` Laurent Pinchart
2022-07-21 11:12       ` Alexander Stein
2022-07-21  8:35 ` [PATCH 18/19] media: i2c: imx290: Add crop selection targets support Laurent Pinchart
2022-07-21 15:39   ` Dave Stevenson
2022-10-16  5:53     ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 19/19] media: i2c: imx290: Replace GAIN control with ANALOGUE_GAIN Laurent Pinchart
2022-07-21 10:11   ` Alexander Stein
2022-08-23  1:11 ` [PATCH 00/19] media: i2c: imx290: Miscellaneous improvements Laurent Pinchart
2022-10-10 10:31   ` Dave Stevenson
2022-10-16  5:37     ` Laurent Pinchart
2022-10-16  7:34       ` Dave Stevenson
2022-10-17 18:07         ` Dave Stevenson
2022-10-18 13:43           ` Dave Stevenson
2022-10-19 10:33           ` Sakari Ailus
2022-10-19 11:38             ` Dave Stevenson
2022-10-19 13:27               ` Sakari Ailus
2023-01-14 16:03                 ` Laurent Pinchart

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=14662940.dW097sEU6C@steina-w \
    --to=alexander.stein@ew.tq-group.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mani@kernel.org \
    --cc=sakari.ailus@iki.fi \
    /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.