Hello,
We have a custom board which has 2 I2C muxes. One is connected to the 2nd I2C bus, the other to the third bus. On the first bus, we have our PMIC and an external RTC.
When the first mux is enabled, the third bus fails to be probed:
[ 2.045874] rtc-pcf8563 0-0051: chip found, driver version 0.4.3 [ 2.053255] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0 [ 2.060354] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [ 2.102605] i2c i2c-1: Added multiplexed i2c bus 2 [ 2.108210] i2c i2c-1: Added multiplexed i2c bus 3 [ 2.113815] i2c i2c-1: Added multiplexed i2c bus 4 [ 2.119381] i2c i2c-1: Added multiplexed i2c bus 5 [ 2.124980] i2c i2c-1: Added multiplexed i2c bus 6 [ 2.130581] i2c i2c-1: Added multiplexed i2c bus 7 [ 2.136193] i2c i2c-1: Added multiplexed i2c bus 8 [ 2.141794] i2c i2c-1: Added multiplexed i2c bus 9 [ 2.146834] pca954x 1-0070: registered 8 multiplexed busses for I2C switch pca9548 [ 2.154876] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz [ 2.161246] omap_i2c 4819c000.i2c: failure adding adapter [ 2.167117] omap_i2c: probe of 4819c000.i2c failed with error -16 [ 2.174912] UBI: attaching mtd4 to ubi0 [ 2.733432] UBI: scanning is finished [ 2.746297] UBI: attached mtd4 (name "NAND.golden.rootfs", size 112 MiB) to ubi0 [ 2.754169] UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.761328] UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512 [ 2.768318] UBI: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.775581] UBI: good PEBs: 896, bad PEBs: 0, corrupted PEBs: 0 [ 2.781835] UBI: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 2.789361] UBI: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 134660565 [ 2.798821] UBI: available PEBs: 0, total reserved PEBs: 896, PEBs reserved for bad PEB handling: 80 [ 2.808474] UBI: background thread "ubi_bgt0d" started, PID 1170 [ 2.871403] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 [ 2.877820] davinci_mdio 4a101000.mdio: detected phy mask fffffffe [ 2.885126] libphy: 4a101000.mdio: probed [ 2.889358] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Micrel KSZ8081 or KSZ8091 [ 2.900090] Detected MACID = 20:cd:39:bf:8d:ee [ 2.907166] rtc-pcf8563 0-0051: setting system clock to 2010-01-20 21:41:34 UTC (1264023694) [ 2.919175] platform 4819c000.i2c: omap_device_late_idle: enabled but no driver. Idling
However, when the first mux is disabled, we can probe the third bus and the other mux is succesfully detected. The pmic and RTC never seem to have any problem.
[ 2.046701] rtc-pcf8563 0-0051: chip found, driver version 0.4.3 [ 2.054086] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0 [ 2.061163] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [ 2.069049] pca954x 1-0070: probe failed [ 2.106927] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz [ 2.115291] i2c i2c-2: Added multiplexed i2c bus 3 [ 2.120888] i2c i2c-2: Added multiplexed i2c bus 4 [ 2.126524] i2c i2c-2: Added multiplexed i2c bus 5 [ 2.132153] i2c i2c-2: Added multiplexed i2c bus 6 [ 2.137723] i2c i2c-2: Added multiplexed i2c bus 7 [ 2.143324] i2c i2c-2: Added multiplexed i2c bus 8 [ 2.148885] i2c i2c-2: Added multiplexed i2c bus 9 [ 2.154488] i2c i2c-2: Added multiplexed i2c bus 10 [ 2.159614] pca954x 2-0070: registered 8 multiplexed busses for I2C switch pca9548 [ 2.167657] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
What does this even mean?
[ 2.919175] platform 4819c000.i2c: omap_device_late_idle: enabled but no driver. Idling
My DT:
i2c1_pins: pinmux_i2c1_pins { pinctrl-single,pins = < 0x168 (PIN_INPUT_PULLUP | MUX_MODE3) /* uart0_ctsn.i2c1_sda */ 0x16c (PIN_INPUT_PULLUP | MUX_MODE3) /* uart0_rtsn.i2c1_scl */ 0x048 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_a2.gpio1_18 */ 0x04c (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_a3.gpio1_19 */ >; }; i2c2_pins: pinmux_i2c2_pins { pinctrl-single,pins = < 0x178 (PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_ctsn.i2c2_sda */ 0x17c (PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_rtsn.i2c2_scl */ >; };
ocp{
i2c0: i2c@44e0b000 { rtc: rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; }; }; i2c1: i2c@4802a000 { pinctrl-names = "default"; pinctrl-0 = <&i2c1_pins>; status = "okay"; clock-frequency = <100000>; i2c-switch@70 { compatible = "nxp,pca9548"; reg = <0x70>; }; }; i2c2: i2c@4819c000 { pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins>; status = "okay"; clock-frequency = <100000>; i2c-switch@70 { compatible = "nxp,pca9548"; reg = <0x70>; }; };
...
}
As you can see, we use the internal pull-ups, although this is a hardware "fault" from our side, it should still work and most certainly not fail, right?
Kind regards,
Arend