Many development systems use the NXP I2C mux to increase the number of devices on a I2C channel. To access the I2C devices on one of the eight channels of the mux you must first set the mux to the needed channel.
The LS2088A device has four I2C controllers and on the LS2088AQDS development system, the PCA9547 mux is connected to I2C1 at address 0x77. U-boot maps I2C1 of the LS2088A as I2C0. For example, to access the XFI Ethernet re-timer I2C devices on channel 5 of the mux, you need to first set the mux to channel 5.
U-boot commands to work with I2C
See what I2C buses are available (the LS2088A has four I2C controllers)
=> i2c bus Bus 0: mxc0 Bus 1: mxc1 Bus 2: mxc2 Bus 3: mxc3
Select I2C bus 0 which is the LS2088A I2C1 controller => i2c dev 0 Setting bus to 0
Now that we've selected the first I2C controller, list what device addresses are there => i2c probe Valid chip addresses: 19 1B 1D 36 37 50 51 53 55 57 66 67 68 77
From the schematics we know that 0x77 is the address of the mux and that the re-timers are connected to channel five of the mux. Set the mux to channel five
=> i2c mw 0x77 0x00 0x0d
Now probe for devices on the mux's channel five => i2c probe Valid chip addresses: 18 19 1A 1B 66 67 77 =>
In the above example "i2c mw 0x77 0x00 0x0d" selects the mux at I2C address 0x77 and writes 0x0d to the Control Register which in turn selects channel 5. Here address 0x00 was chosen but any value can be used to select the mux's only register, its Control Register. The 0x0d is channel five: 0b1101...from the mux's data sheet, this sets the B3 enable bit and the B2-B0 channel number. Please refer to the PCA9547's datasheet.
Read the first 16 registers values of the I2C device at hardware address 0x18 on channel five