YaoTien Huang

Always to get wrong transceiver's eeprom when plug-in two or more transceivers

Discussion created by YaoTien Huang on Aug 2, 2017

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.

Outcomes