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

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

 



Quoting Chen, Jason Z (2023-10-20 05:09:08)
> 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.

For a specific project? Will this now affect 'all' projects using this
sensor? Will that be adverse in anyway?

Do 'short' cables still function with this patch?

> 
> Signed-off-by: Jason Chen <jason.z.chen@xxxxxxxxx>
> ---
>  drivers/media/i2c/ov08x40.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/media/i2c/ov08x40.c b/drivers/media/i2c/ov08x40.c
> index 0b3b906ebef..4f13e23b325 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 */

Are these changes 'relative' to already written values?

> +};
> +
> +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},
> @@ -2917,6 +2929,11 @@ static int ov08x40_start_streaming(struct ov08x40 *ov08x)
>                 return ret;
>         }
>  
> +       /* Apply SI change to current project */
> +       reg_list = &si_regs;
> +
> +       ov08x40_write_reg_list(ov08x, reg_list);
> +

This looks odd. Why isn't this just:

	ov08x40_write_reg_list(0v08x, &si_regs);


>         /* Apply default values of current mode */
>         reg_list = &ov08x->cur_mode->reg_list;
>         ret = ov08x40_write_reg_list(ov08x, reg_list);
> -- 
> 2.34.1
>




[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