How to configure MUX PCA9544


In my custom carrier board (NX and Nano) I have used mux PCA9544 ,and i have connected two 15-pin camera connector and one HIGH SPEED MEZZANINE EXPANSION CONNECTOR to this MUX.

But how to configure these.Please suggest (schematic is also attached)

Whereas its driver are already available :-
kernel/Linux_for_Tegra/source/public/kernel/kernel-4.9/drivers/i2c/muxes/i2c-mux-pca954x.c:11: * PCA9540, PCA9542, PCA9543, PCA9544, PCA9545, PCA9546, PCA9547
kernel/Linux_for_Tegra/source/public/kernel/kernel-4.9/drivers/i2c/muxes/i2c-mux-pca954x.c:118: { “pca9544”, pca_9544 },
kernel/Linux_for_Tegra/source/public/kernel/kernel-4.9/drivers/i2c/muxes/i2c-mux-pca954x.c:132: { .compatible = “nxp,pca9544”, .data = &chips[pca_9544] },
kernel/Linux_for_Tegra/source/public/kernel/kernel-4.9/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt:6: “nxp,pca9540”, “nxp,pca9542”, “nxp,pca9543”, “nxp,pca9544”,

What else need to be done…

Have reference to …/hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-modules/tegra194-camera-e3333-a00.dtsi for dts configure.

Please let me if i understood it correctly…

Do i need to create a dtsi file and a node in that

for e.g
i2c-switch@74 {
compatible = “nxp,pca9548”;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x74>;

            i2c@2 {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    reg = <2>;

                    eeprom@54 {
                            compatible = "at,24c08";
                            reg = <0x54>;

            i2c@4 {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    reg = <4>;

                    rtc@51 {
                            compatible = "nxp,pcf8563";
                            reg = <0x51>;

Yes, need create device tree file for it.

Thank you.

With respect to above example:
Please correct me if needed…

i2c-switch@74 ==> should be the parent node having i2c bus number and address by which SoM is connected to PCA

Inside this parent node , we have to create three nodes for CAM_I2C2 , CAM_I2C4 , CAM_I2C5

How to get the value of reg = <0x01>; for these three child nodes.

Take e3333 as example the i2c mux(tca9548) is connect to i2c@31800 and the i2c@0, i2c@1, i2c@2 are the three child and reg is 0,1,2

i2c@3180000 {
211 		tca9548@77 {
212 			i2c@0 {
213 				ov5693_a@36 {
214 					compatible = "nvidia,ov5693";
215 					reg = <0x36>;
216 					devnode = "video0";

Thanks @ShaneCCC sir,

How can we identify, IO mux signals send to which channel?

Suppose it depend on the HW connection. Please consult with vendor or get the datasheet to check it.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.