[RFC PATCH v2 12/16] media: i2c: add Maxim GMSL2/3 serializer and deserializer drivers

Jakub Kostiw jakub.kostiw at videtronic.com
Tue May 6 11:33:54 PDT 2025


Hi Cosmin

Awesome work. The initiative to establish a common framework for GMSL 
devices is a great idea.

I believe that we have found few bugs:

> +#define MAX9296A_BACKTOP22(x)			(0x31d * (x) * 0x3)

The first multiplication is wrong and should be replaced with addition:

+#define MAX9296A_BACKTOP22(x)			(0x31d + (x) * 0x3)

The same goes for MAX96724 equivalent macro:

> +#define MAX96724_BACKTOP22(x)			(0x415 * (x) * 0x3)

In MAX96714 driver there is an issue with setting up lane-polarities.

> +static const struct max9296a_chip_info max96714_info = {
> +	.max_register = 0x5011,
> +	.set_pipe_stream_id = max96714_set_pipe_stream_id,
> +	.set_pipe_enable = max96714_set_pipe_enable,
> +	.set_pipe_tunnel_enable = max96714_set_pipe_tunnel_enable,
> +	.phys_configs = {
> +		.num_configs = ARRAY_SIZE(max96714_phys_configs),
> +		.configs = max96714_phys_configs,
> +	},
> +	.polarity_on_physical_lanes = true,
> +	.supports_phy_log = true,
> +	.adjust_rlms = true,
> +	.num_pipes = 1,
> +	.pipe_hw_ids = { 1 },
> +	.num_phys = 1,
> +	.phy_hw_ids = { 1 },
> +	.num_links = 1,
> +};

In order to make thing work we had to set

> +	.polarity_on_physical_lanes = true,

To false. So this field is either improperly set for MAX96714, or handling of this case is wrong:

> +		if (priv->info->polarity_on_physical_lanes)
> +			map = phy->mipi.data_lanes[i];
> +		else
> +			map = i;

Upon mentioned changes we have successfully tested two GMSL2 
combinations on Raspberry 5 platform:

1. MAX96724 + MAX96717 (only 2 MIPI-CSI2 lanes with single camera due to 
hardware limitations)

2. MAX96714 + MAX96717

We have also been wondering about these registers:

> +#define MAX9296A_DPLL_0(x)			(0x1c00 + ((x) == 0 ? 1 : 2) * 0x100)
> +#define MAX96724_DPLL_0(x)			(0x1c00 + (x) * 0x100)

There are writes to these addresses but we could not find any reference to these in either MAX96714 or MAX96724 datasheets.

Are You willing to add support for mapping MIPI-CSI2 lanes? This is a very convenient feature which comes in handy during HW design.




More information about the linux-arm-kernel mailing list