Hi all,
Currently, we would like to sfputil to get transceiver's eeprom. Our hardware design as below.
MCP2221------PCA-9548x(0x70)
| |---eeprom(channel 0, 0x50)
| |---eeprom(channel 1, 0x50)
| |---.......
| |---eeprom(channel 7, 0x50)
|
|----PCA-9548x(0x71)
| |---eeprom(channel 0, 0x50)
| |---eeprom(channel 1, 0x50)
| |---.......
| |---eeprom(channel 7, 0x50)
|
|----PCA-9548x(0x72)
|---eeprom(channel 0, 0x50)
|---eeprom(channel 1, 0x50)
|---......
|---eeprom(channel 7, 0x50)
I can create device nod for each transceiver. The commands as below
# add for mux
echo pca9548 0x70 > /sys/bus/i2c/devices/i2c-1/new_device
--> i2c-2, i2c-3, i2c-4, i2c-5, i2c-6, i2c-7, i2c-8, i2c-9
echo pca9548 0x71 > /sys/bus/i2c/devices/i2c-1/new_device
--> i2c-10, i2c-11, i2c-12, i2c-13, i2c-14, i2c-15, i2c-16, i2c-17
echo pca9548 0x72 > /sys/bus/i2c/devices/i2c-1/new_device
--> i2c-18, i2c-19, i2c-20, i2c-21, i2c-22, i2c-23, i2c-24, i2c-25
# add for eeprom
echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-2/new_device --> 2-0050
echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-3/new_device --> 3-0050
...
echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-24/new_device --> 24-0050
echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-25/new_device --> 25-0050
# get transceiver information
hexdump -C /sys/bus/i2c/devices/17-0050/eeprom
Acctuly, we can get information from eeprom. However, if we plug-in two or more transceivers, we always get wrong data.
Did you saw this problem?
Could you give me some hint to fix this issue?
Thanks a lot.