I see the tegra194-p2822-0000-camera-imx390-a00.dtsi.
How to mapping physical to proxy I2C address?
Sensor1: 0x1a to 0x1b
Sensor2: 0x1a to 0x1c
imx390_a@1b {
/* sensor device connected at link A at proxy address 0x1b (the proxy address is assigned runtime). */
def-addr = <0x1a>; /* default slave address is 0x1a */
nvidia,gmsl-ser-device = <&ser_a>; /* link to its serializer device. */
nvidia,gmsl-dser-device = <&dser>; /* link to its deserializer device. */
};
imx390_b@1c {
/* sensor device connected at link A at proxy address 0x1b (the proxy address are assigned runtime). */
def-addr = <0x1a>; /* Default slave address is 0x1a. */
/* Define clocks, io pins, power sources */
nvidia,gmsl-ser-device = <&ser_b>; /* Link to its serializer device. */
nvidia,gmsl-dser-device = <&dser>; /* Link to its deserializer device. */
};
Ser1: 0x62 to 0x40
Ser2: 0x62 to 0x60
Des: 0x48 to N/A
ser_a: max9295_a@40 {
/* serializer device connected at link A at proxy address 0x40 (the proxy address are assigned runtime) */
compatible = "nvidia,max9295";
reg = <0x40>;
nvidia,gmsl-dser-device = <&dser>; /* link to its deserializer device */
};
ser_b: max9295_b@60 {
/* serializer device connected at link A at proxy address 0x60 (the proxy address is assigned runtime) */
compatible = "nvidia,max9295";
reg = <0x60>;
nvidia,gmsl-dser-device = <&dser>; /* link to its deserializer device */
};
It depends on SerDes chip and how your driver written. The SerDes data sheets specify, the set of register programming sequence to be executed in a specific order, to update the default physical i2c address with proxy address of given device/module. It happens at boot time when sensor module probes.
You can trace this function in imx390 sensor driver to get idea: imx390_gmsl_serdes_setup()
Exact address assignment happens in this function: max9295_setup_control(
This is serdes module and driver implementation specific.