Re: [PATCH v2] media: ov08x40: Add Signal Integration Adjustments for specific project

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 22, 2024 at 01:06:20PM +0000, Sakari Ailus wrote:
> On Mon, Jan 22, 2024 at 11:02:20AM +0800, Chen, Jason Z wrote:
> > From: Jason Chen <jason.z.chen@xxxxxxxxx>
> > 
> > Due to certain MIPI hardware designs using overly long cables, there
> > is a loss of signal strength, resulting in failed signal integration.
> > The patch includes changes to adjust the driving strength in the register
> > settings for a specific project.
> > 
> > Signed-off-by: Jason Chen <jason.z.chen@xxxxxxxxx>
> > ---
> >  drivers/media/i2c/ov08x40.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/drivers/media/i2c/ov08x40.c b/drivers/media/i2c/ov08x40.c
> > index 520ccd4aecf..ddcb4b6848b 100644
> > --- a/drivers/media/i2c/ov08x40.c
> > +++ b/drivers/media/i2c/ov08x40.c
> > @@ -160,6 +160,18 @@ static const struct ov08x40_reg mipi_data_rate_800mbps[] = {
> >  	{0x6002, 0x2e},
> >  };
> >  
> > +static const struct ov08x40_reg mipi_si_changed_regs[] = {
> > +	{0x481b, 0x2c}, /* HS Exit: Data Tx TEOT - reducing 8ns */
> > +	{0x4826, 0x42}, /* HS Entry: Data Tx TREOT - raising 8ns */
> > +	{0x4829, 0x54}, /* HS Exit: Data Tx TREOT - reducing 8ns */
> > +	{0x4885, 0x1f}, /* driving strength change */
> 
> We need a better say to control these: if you need to change this to make
> it work on one board, another board may well need different settings.
> 
> Probably the easiest way would be to figure out canonical, hardware
> independent configuration parameters and define them in DT bindings
> (Documentation/devicetree/bindings/media/video-interfaces.yaml), and add
> support for those in this driver.
> 
> DMI as such could be how you figure out which settings you need, but it
> should not be the task of a the sensor driver to do that.
> 
> Cc Laurent.

Agreed.

> > +};
> > +
> > +struct ov08x40_reg_list si_regs = {
> > +	.regs = mipi_si_changed_regs,
> > +	.num_of_regs = ARRAY_SIZE(mipi_si_changed_regs),
> > +};
> > +
> >  static const struct ov08x40_reg mode_3856x2416_regs[] = {
> >  	{0x5000, 0x5d},
> >  	{0x5001, 0x20},
> > @@ -2913,6 +2925,9 @@ static int ov08x40_start_streaming(struct ov08x40 *ov08x)
> >  		return ret;
> >  	}
> >  
> > +	/* Apply SI change to current project */
> > +	ov08x40_write_reg_list(ov08x, &si_regs);
> > +
> >  	/* Apply default values of current mode */
> >  	reg_list = &ov08x->cur_mode->reg_list;
> >  	ret = ov08x40_write_reg_list(ov08x, reg_list);

-- 
Regards,

Laurent Pinchart




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux